diff --git a/civicrm.php b/civicrm.php index 78eed4c779e81a74c2693a26b69227b970d6931a..343ff49bd737d03e9330d0723f95ab62805cbaeb 100644 --- a/civicrm.php +++ b/civicrm.php @@ -2,7 +2,7 @@ /** * Plugin Name: CiviCRM * Description: CiviCRM - Growing and Sustaining Relationships - * Version: 5.67.3 + * Version: 5.68.0 * Requires at least: 4.9 * Requires PHP: 7.3 * Author: CiviCRM LLC @@ -36,7 +36,7 @@ if (!defined('ABSPATH')) { } // Set version here: changing it forces Javascript and CSS to reload. -define('CIVICRM_PLUGIN_VERSION', '5.67.3'); +define('CIVICRM_PLUGIN_VERSION', '5.68.0'); // Store reference to this file. if (!defined('CIVICRM_PLUGIN_FILE')) { diff --git a/civicrm/CRM/ACL/DAO/ACL.php b/civicrm/CRM/ACL/DAO/ACL.php index 0a9b48d468695d736a440e0c03f19bb633e402ed..b9b28c82b0ac6566b831500cc9915d0e8abfcac7 100644 --- a/civicrm/CRM/ACL/DAO/ACL.php +++ b/civicrm/CRM/ACL/DAO/ACL.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/ACL/ACL.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:56266204b43a487af7bf9963d23e0556) + * (GenCodeChecksum:d49159426e04e1bab16768e2f7ed9551) */ /** @@ -135,7 +135,7 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { /** * Is this property active? * - * @var bool|string|null + * @var bool|string * (SQL type: tinyint) * Note that values will be retrieved from the database as a string. */ @@ -425,6 +425,7 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('ACL Is Active?'), 'description' => ts('Is this property active?'), + 'required' => TRUE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -432,6 +433,7 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { 'token' => FALSE, ], 'where' => 'civicrm_acl.is_active', + 'default' => '1', 'table_name' => 'civicrm_acl', 'entity' => 'ACL', 'bao' => 'CRM_ACL_BAO_ACL', diff --git a/civicrm/CRM/ACL/Form/ACL.php b/civicrm/CRM/ACL/Form/ACL.php index b4f52a7c746af7d61d21f8c6585d191f82fce5c4..5f5c5b88a5e254b42f0149e8a4c5009519c1e68a 100644 --- a/civicrm/CRM/ACL/Form/ACL.php +++ b/civicrm/CRM/ACL/Form/ACL.php @@ -256,7 +256,7 @@ class CRM_ACL_Form_ACL extends CRM_Admin_Form { } else { $params = $this->controller->exportValues($this->_name); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; $params['entity_table'] = 'civicrm_acl_role'; // Figure out which type of object we're permissioning on and set object_table and object_id. diff --git a/civicrm/CRM/Activity/Form/Activity.php b/civicrm/CRM/Activity/Form/Activity.php index 001ea75742a96ce0ff2f648c69e0e9a8cfc9665d..cefbe57ae3770dd3f26e784a08104f17baba4db3 100644 --- a/civicrm/CRM/Activity/Form/Activity.php +++ b/civicrm/CRM/Activity/Form/Activity.php @@ -550,12 +550,8 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task { if (isset($this->_activityId)) { if ($this->_context !== 'standalone') { - $this->assign('target_contact_value', - CRM_Utils_Array::value('target_contact_value', $defaults) - ); - $this->assign('assignee_contact_value', - CRM_Utils_Array::value('assignee_contact_value', $defaults) - ); + $this->assign('target_contact_value', $defaults['target_contact_value'] ?? NULL); + $this->assign('assignee_contact_value', $defaults['assignee_contact_value'] ?? NULL); } // Fixme: why are we getting the wrong keys from upstream? @@ -596,7 +592,7 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task { } if ($this->_action & (CRM_Core_Action::DELETE | CRM_Core_Action::RENEW)) { - $this->assign('delName', CRM_Utils_Array::value('subject', $defaults)); + $this->assign('delName', $defaults['subject'] ?? NULL); } if ($this->_activityTypeFile) { @@ -679,13 +675,13 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task { $this->addEntityRef($field, $values['label'], $attribute, $required); } else { - $this->add($values['type'], $field, $values['label'], $attribute, $required, CRM_Utils_Array::value('extra', $values)); + $this->add($values['type'], $field, $values['label'], $attribute, $required, $values['extra'] ?? NULL); } } } // CRM-7362 --add campaigns. - CRM_Campaign_BAO_Campaign::addCampaign($this, CRM_Utils_Array::value('campaign_id', $this->_values)); + CRM_Campaign_BAO_Campaign::addCampaign($this, $this->_values['campaign_id'] ?? NULL); // Add engagement level CRM-7775 $buildEngagementLevel = FALSE; diff --git a/civicrm/CRM/Activity/Selector/Activity.php b/civicrm/CRM/Activity/Selector/Activity.php index f8682ae5a7baa29a027a136fc2010e1eb074666b..d6a2af75e694d8c2df0f038f5f388187672826ad 100644 --- a/civicrm/CRM/Activity/Selector/Activity.php +++ b/civicrm/CRM/Activity/Selector/Activity.php @@ -417,11 +417,11 @@ class CRM_Activity_Selector_Activity extends CRM_Core_Selector_Base implements C $row['engagement_level'] = CRM_Utils_Array::value($engagementLevel, $engagementLevels, $engagementLevel); } - $actionLinks = $this->actionLinks(CRM_Utils_Array::value('activity_type_id', $row), - CRM_Utils_Array::value('source_record_id', $row), + $actionLinks = $this->actionLinks($row['activity_type_id'], + $row['source_record_id'] ?? NULL, // CRM-3553 !empty($row['mailingId']), - CRM_Utils_Array::value('activity_id', $row), + $row['activity_id'] ?? NULL, $this->_key ); diff --git a/civicrm/CRM/Admin/Form/MailSettings.php b/civicrm/CRM/Admin/Form/MailSettings.php index acdc5744da432a3b96cc925146dd96aa2c8e537a..833c0de1375378f8488bf488b56d1f6f23cc36a6 100644 --- a/civicrm/CRM/Admin/Form/MailSettings.php +++ b/civicrm/CRM/Admin/Form/MailSettings.php @@ -211,7 +211,7 @@ class CRM_Admin_Form_MailSettings extends CRM_Admin_Form { 'is_contact_creation_disabled_if_no_match', 'is_active', ])) { - $params[$f] = CRM_Utils_Array::value($f, $formValues, FALSE); + $params[$f] = $formValues[$f] ?? FALSE; } else { $params[$f] = $formValues[$f] ?? NULL; diff --git a/civicrm/CRM/Admin/Form/ParticipantStatusType.php b/civicrm/CRM/Admin/Form/ParticipantStatusType.php index a3097c7de7e986c2f167ae68344941196bac5ef8..7eb952356895f5b04702a0da49567102b2387bfb 100644 --- a/civicrm/CRM/Admin/Form/ParticipantStatusType.php +++ b/civicrm/CRM/Admin/Form/ParticipantStatusType.php @@ -119,7 +119,7 @@ class CRM_Admin_Form_ParticipantStatusType extends CRM_Admin_Form { } $params['weight'] = CRM_Utils_Weight::updateOtherWeights('CRM_Event_DAO_ParticipantStatusType', $oldWeight, $params['weight']); - $participantStatus = CRM_Event_BAO_ParticipantStatusType::create($params); + $participantStatus = CRM_Event_BAO_ParticipantStatusType::writeRecord($params); if ($participantStatus->id) { if ($this->_action & CRM_Core_Action::UPDATE) { diff --git a/civicrm/CRM/Admin/Form/PaymentProcessorType.php b/civicrm/CRM/Admin/Form/PaymentProcessorType.php index 2259920ef8a37fa89508eaa93b6ca34215b8c600..8543723e85a94ab95ffc00196f806c4c12116f23 100644 --- a/civicrm/CRM/Admin/Form/PaymentProcessorType.php +++ b/civicrm/CRM/Admin/Form/PaymentProcessorType.php @@ -146,7 +146,7 @@ class CRM_Admin_Form_PaymentProcessorType extends CRM_Admin_Form { $attributes = CRM_Core_DAO::getAttribute('CRM_Financial_DAO_PaymentProcessorType'); foreach ($this->_fields as $field) { - $required = CRM_Utils_Array::value('required', $field, FALSE); + $required = $field['required'] ?? FALSE; $this->add('text', $field['name'], $field['label'], $attributes['name'], $required ); @@ -210,9 +210,9 @@ UPDATE civicrm_payment_processor SET is_default = 0"; $dao = new CRM_Financial_DAO_PaymentProcessorType(); $dao->id = $this->_id; - $dao->is_default = CRM_Utils_Array::value('is_default', $values, 0); - $dao->is_active = CRM_Utils_Array::value('is_active', $values, 0); - $dao->is_recur = CRM_Utils_Array::value('is_recur', $values, 0); + $dao->is_default = $values['is_default'] ?? 0; + $dao->is_active = $values['is_active'] ?? 0; + $dao->is_recur = $values['is_recur'] ?? 0; $dao->name = $values['name']; $dao->description = $values['description']; diff --git a/civicrm/CRM/Admin/Form/Preferences/Contribute.php b/civicrm/CRM/Admin/Form/Preferences/Contribute.php index 7729a1f170ed00baede99e3252863bcd03390eb7..e6182123ee5135e77c49d6602042827b55587e09 100644 --- a/civicrm/CRM/Admin/Form/Preferences/Contribute.php +++ b/civicrm/CRM/Admin/Form/Preferences/Contribute.php @@ -167,7 +167,7 @@ class CRM_Admin_Form_Preferences_Contribute extends CRM_Admin_Form_Preferences { // too. This means that saving from api will not have the desired core effect. // but we should fix that elsewhere - ie. stop abusing the settings // and fix the code repetition associated with invoicing - $invoiceParams['invoicing'] = CRM_Utils_Array::value('invoicing', $params, 0); + $invoiceParams['invoicing'] = $params['invoicing'] ?? 0; Civi::settings()->set('contribution_invoice_settings', $invoiceParams); parent::postProcess(); } diff --git a/civicrm/CRM/Admin/Form/RelationshipType.php b/civicrm/CRM/Admin/Form/RelationshipType.php index ce43206171550aec7e192bf3e5fdf03968528fae..c3c07573ddc3ad4bda7d3f8157b726cdcbf522a1 100644 --- a/civicrm/CRM/Admin/Form/RelationshipType.php +++ b/civicrm/CRM/Admin/Form/RelationshipType.php @@ -141,7 +141,7 @@ class CRM_Admin_Form_RelationshipType extends CRM_Admin_Form { else { // store the submitted values in an array $params = $this->exportValues(); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; if ($this->_action & CRM_Core_Action::UPDATE) { $params['id'] = $this->_id; diff --git a/civicrm/CRM/Admin/Page/AJAX.php b/civicrm/CRM/Admin/Page/AJAX.php index cb151a57d8d64d8bbc3b90de0d9b92f1224d1a8d..5552495c49798c7c1bdae3cf806a20e5ff2d7919 100644 --- a/civicrm/CRM/Admin/Page/AJAX.php +++ b/civicrm/CRM/Admin/Page/AJAX.php @@ -86,7 +86,7 @@ class CRM_Admin_Page_AJAX { $result[] = [ 'key' => $key, 'value' => $allOptions[$key]['label'], - 'adv_search_legacy' => $allOptions[$key]['adv_search_legacy'], + 'adv_search_legacy' => $allOptions[$key]['adv_search_legacy'] ?? '', ]; } return $result; @@ -289,7 +289,7 @@ class CRM_Admin_Page_AJAX { $result = []; $whereClauses = ['is_tagset <> 1']; - $orderColumn = 'name'; + $orderColumn = 'label'; // fetch all child tags in Array('parent_tag' => array('child_tag_1', 'child_tag_2', ...)) format $childTagIDs = CRM_Core_BAO_Tag::getChildTags($substring); @@ -299,7 +299,7 @@ class CRM_Admin_Page_AJAX { $whereClauses[] = "parent_id = $parent"; } elseif ($substring) { - $whereClauses['substring'] = " name LIKE '%$substring%' "; + $whereClauses['substring'] = " label LIKE '%$substring%' "; if (!empty($parentIDs)) { $whereClauses['substring'] = sprintf(" %s OR id IN (%s) ", $whereClauses['substring'], implode(',', $parentIDs)); } @@ -327,7 +327,7 @@ class CRM_Admin_Page_AJAX { $usedFor = (array) explode(',', $dao->used_for); $tag = [ 'id' => $dao->id, - 'text' => $dao->name, + 'text' => $dao->label, 'a_attr' => [ 'class' => 'crm-tag-item', ], diff --git a/civicrm/CRM/Badge/BAO/Layout.php b/civicrm/CRM/Badge/BAO/Layout.php index c146c3a49c18a95def1ab0aefb261cfaaf559d9c..e7443c3ef43fa951b67644b81f31a206815753c0 100644 --- a/civicrm/CRM/Badge/BAO/Layout.php +++ b/civicrm/CRM/Badge/BAO/Layout.php @@ -50,9 +50,9 @@ class CRM_Badge_BAO_Layout extends CRM_Core_DAO_PrintLabel { * @return object */ public static function create(&$params) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); - $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['is_default'] = $params['is_default'] ?? FALSE; + $params['is_reserved'] = $params['is_reserved'] ?? FALSE; $params['label_type_id'] = CRM_Core_PseudoConstant::getKey('CRM_Core_DAO_PrintLabel', 'label_type_id', 'Event Badge'); diff --git a/civicrm/CRM/Badge/Form/Layout.php b/civicrm/CRM/Badge/Form/Layout.php index 661fb70ac3b586167959edfcf34629591519106c..6f5b9a41892a01acd7f61372a9eea01e8e8876be 100644 --- a/civicrm/CRM/Badge/Form/Layout.php +++ b/civicrm/CRM/Badge/Form/Layout.php @@ -9,6 +9,8 @@ +--------------------------------------------------------------------+ */ +use Civi\Token\TokenProcessor; + /** * * @package CRM @@ -49,21 +51,13 @@ class CRM_Badge_Form_Layout extends CRM_Admin_Form { $this->add('text', 'description', ts('Description'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_PrintLabel', 'title')); - // get the tokens - at the point of rendering the token processor is used so - // the only reason for this cut-down set of tokens is UI on this - // screen and / or historical. - $contactTokens = CRM_Core_SelectValues::contactTokens(); - $eventTokens = [ - '{event.event_id}' => ts('Event ID'), - '{event.title}' => ts('Event Title'), - // This layout selection is day + month eg October 27th - // obviously someone felt year was not logical for dates. - '{event.start_date|crmDate:"%B %E%f"}' => ts('Event Start Date'), - '{event.end_date|crmDate:"%B %E%f"}' => ts('Event End Date'), - ]; - $participantTokens = CRM_Core_SelectValues::participantTokens(); - - $tokens = array_merge($contactTokens, $eventTokens, $participantTokens); + $tokenProcessor = new TokenProcessor(Civi::dispatcher(), ['schema' => ['participantId', 'contactId', 'eventId']]); + $tokens = $tokenProcessor->listTokens(); + // This layout selection is day + month eg October 27th + // obviously someone felt year was not logical for dates. + $tokens['{event.start_date|crmDate:"%B %E%f"}'] = ts('Event Start Date - Day & Month'); + $tokens[] = ts('Event End Date - Day & Month'); + asort($tokens); $tokens = array_merge(['spacer' => ts('- spacer -')] + $tokens); diff --git a/civicrm/CRM/Campaign/BAO/Petition.php b/civicrm/CRM/Campaign/BAO/Petition.php index 887370953fa3b4d93e6626241e5974dfb59ee4f2..7cd48e540496112aec189d0ffff38145da768bd5 100644 --- a/civicrm/CRM/Campaign/BAO/Petition.php +++ b/civicrm/CRM/Campaign/BAO/Petition.php @@ -38,12 +38,12 @@ class CRM_Campaign_BAO_Petition extends CRM_Campaign_BAO_Survey { * Takes an associative array and creates a petition signature activity. * * @param array $params - * (reference ) an assoc array of name/value pairs. + * an assoc array of name/value pairs. * * @return mixed * CRM_Campaign_BAO_Petition or NULl or void */ - public function createSignature(&$params) { + public function createSignature($params) { if (empty($params)) { return NULL; } @@ -102,33 +102,24 @@ class CRM_Campaign_BAO_Petition extends CRM_Campaign_BAO_Survey { * @return bool */ public function confirmSignature($activity_id, $contact_id, $petition_id) { - // change activity status to completed (status_id = 2) - // I wonder why do we need contact_id when we have activity_id anyway? [chastell] - $sql = 'UPDATE civicrm_activity SET status_id = 2 WHERE id = %1'; - $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); - $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); - $params = [ - 1 => [$activity_id, 'Integer'], - 2 => [$contact_id, 'Integer'], - 3 => [$sourceID, 'Integer'], - ]; - CRM_Core_DAO::executeQuery($sql, $params); + // change activity status to completed + \Civi\Api4\Activity::update(FALSE) + ->addValue('status_id:name', 'Completed') + ->addWhere('id', '=', $activity_id) + ->execute(); + \Civi\Api4\ActivityContact::update(FALSE) + ->addValue('contact_id', $contact_id) + ->addWhere('activity_id', '=', $activity_id) + ->addWhere('record_type_id:name', '=', 'Activity Source') + ->execute(); - $sql = 'UPDATE civicrm_activity_contact SET contact_id = %2 WHERE activity_id = %1 AND record_type_id = %3'; - CRM_Core_DAO::executeQuery($sql, $params); // remove 'Unconfirmed' tag for this contact - $tag_name = Civi::settings()->get('tag_unconfirmed'); + \Civi\Api4\EntityTag::delete(FALSE) + ->addWhere('tag_id:name', '=', Civi::settings()->get('tag_unconfirmed')) + ->addWhere('entity_table', '=', 'civicrm_contact') + ->addWhere('entity_id', '=', $contact_id) + ->execute(); - $sql = " -DELETE FROM civicrm_entity_tag -WHERE entity_table = 'civicrm_contact' -AND entity_id = %1 -AND tag_id = ( SELECT id FROM civicrm_tag WHERE name = %2 )"; - $params = [ - 1 => [$contact_id, 'Integer'], - 2 => [$tag_name, 'String'], - ]; - CRM_Core_DAO::executeQuery($sql, $params); // validate arguments to setcookie are numeric to prevent header manipulation if (isset($petition_id) && is_numeric($petition_id) && isset($activity_id) && is_numeric($activity_id)) { diff --git a/civicrm/CRM/Campaign/BAO/Survey.php b/civicrm/CRM/Campaign/BAO/Survey.php index c6aa2dc2cbe9a1fc71573e7fc6874bc5831aa4dc..f0220a12b2b6f2314e6cce98c9a5ba37e8534bb8 100644 --- a/civicrm/CRM/Campaign/BAO/Survey.php +++ b/civicrm/CRM/Campaign/BAO/Survey.php @@ -674,7 +674,7 @@ INNER JOIN civicrm_contact contact_a ON ( activityTarget.contact_id = contact_a ); $menuLinks[] = sprintf('<a href="%s" class="action-item crm-hover-button" title="%s">%s</a>', $urlPath, - CRM_Utils_Array::value('title', $link), + $link['title'] ?? NULL, $link['title'] ); } diff --git a/civicrm/CRM/Campaign/Form/Campaign.php b/civicrm/CRM/Campaign/Form/Campaign.php index 7feef215f251c3bf347d5568bf5de3681d852b36..f5a1c523bb414b93f956c472909f887a4f53f02d 100644 --- a/civicrm/CRM/Campaign/Form/Campaign.php +++ b/civicrm/CRM/Campaign/Form/Campaign.php @@ -291,7 +291,7 @@ class CRM_Campaign_Form_Campaign extends CRM_Core_Form { $params['created_date'] = date('YmdHis'); } // format params - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; $params['last_modified_id'] = $session->get('userID'); $params['last_modified_date'] = date('YmdHis'); $result = self::submit($params, $this); diff --git a/civicrm/CRM/Campaign/Form/Petition.php b/civicrm/CRM/Campaign/Form/Petition.php index 1cbd72d69bd12616f566863075fdc7fb7f388c1c..55a7377984fa17542d2bc152ad418670304d71c1 100644 --- a/civicrm/CRM/Campaign/Form/Petition.php +++ b/civicrm/CRM/Campaign/Form/Petition.php @@ -291,7 +291,7 @@ WHERE $whereClause $params['last_modified_id'] = $session->get('userID'); $params['last_modified_date'] = date('YmdHis'); - $params['is_share'] = CRM_Utils_Array::value('is_share', $params, FALSE); + $params['is_share'] = $params['is_share'] ?? FALSE; if ($this->_surveyId) { @@ -309,9 +309,9 @@ WHERE $whereClause $params['created_date'] = date('YmdHis'); } - $params['bypass_confirm'] = CRM_Utils_Array::value('bypass_confirm', $params, 0); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, 0); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, 0); + $params['bypass_confirm'] = $params['bypass_confirm'] ?? 0; + $params['is_active'] = $params['is_active'] ?? 0; + $params['is_default'] = $params['is_default'] ?? 0; $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $this->getEntityId(), $this->getDefaultEntity()); diff --git a/civicrm/CRM/Campaign/Form/Petition/Signature.php b/civicrm/CRM/Campaign/Form/Petition/Signature.php index aed16cd246300809ee64e7d2502b557a570b387f..42e8ef2ec0e4461bb6c29763cdca5a684ae00afd 100644 --- a/civicrm/CRM/Campaign/Form/Petition/Signature.php +++ b/civicrm/CRM/Campaign/Form/Petition/Signature.php @@ -345,13 +345,15 @@ class CRM_Campaign_Form_Petition_Signature extends CRM_Core_Form { $tag_name = Civi::settings()->get('tag_unconfirmed'); if ($tag_name) { - // Check if contact 'email confirmed' tag exists, else create one + // Check if contact 'Unconfirmed' tag exists, else create one // This should be in the petition module initialise code to create a default tag for this $tag_params['name'] = $tag_name; $tag_params['version'] = 3; $tag = civicrm_api('tag', 'get', $tag_params); if ($tag['count'] == 0) { //create tag + $tag_params['label'] = ts('Unconfirmed'); + $tag_params['color'] = '#ffdd00'; $tag_params['description'] = $tag_name; $tag_params['is_reserved'] = 1; $tag_params['used_for'] = 'civicrm_contact'; diff --git a/civicrm/CRM/Campaign/Form/Survey.php b/civicrm/CRM/Campaign/Form/Survey.php index 7b533d4d24f1f2b1c28bc84dd5a79f5de7aa08d3..74d1563dad45d4bb65bf97693d056efc709bb7b5 100644 --- a/civicrm/CRM/Campaign/Form/Survey.php +++ b/civicrm/CRM/Campaign/Form/Survey.php @@ -86,6 +86,7 @@ class CRM_Campaign_Form_Survey extends CRM_Core_Form { // CRM-11480, CRM-11682 // Preload libraries required by the "Questions" tab + $this->assign('perm', (bool) CRM_Core_Permission::check('administer CiviCRM')); CRM_UF_Page_ProfileEditor::registerProfileScripts(); CRM_UF_Page_ProfileEditor::registerSchemas(['IndividualModel', 'ActivityModel']); diff --git a/civicrm/CRM/Campaign/Form/Survey/Main.php b/civicrm/CRM/Campaign/Form/Survey/Main.php index 2aca9a250b68fe0ac710810da7769bb80b17931a..e23617951bf24bcd9236a67b9f360dadd1b26476 100644 --- a/civicrm/CRM/Campaign/Form/Survey/Main.php +++ b/civicrm/CRM/Campaign/Form/Survey/Main.php @@ -155,8 +155,8 @@ class CRM_Campaign_Form_Survey_Main extends CRM_Campaign_Form_Survey { $params['created_date'] = date('YmdHis'); } - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, 0); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, 0); + $params['is_active'] = $params['is_active'] ?? 0; + $params['is_default'] = $params['is_default'] ?? 0; $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $this->getEntityId(), $this->getDefaultEntity()); diff --git a/civicrm/CRM/Campaign/Page/AJAX.php b/civicrm/CRM/Campaign/Page/AJAX.php index 6236287a3030479bf8f600d5b21ee8651b651615..69e15a5585c2a819a55fd0cc2079220c55181996 100644 --- a/civicrm/CRM/Campaign/Page/AJAX.php +++ b/civicrm/CRM/Campaign/Page/AJAX.php @@ -254,9 +254,9 @@ class CRM_Campaign_Page_AJAX { TRUE, FALSE, FALSE, FALSE, FALSE, - CRM_Utils_Array::value('whereClause', $voterClause), + $voterClause['whereClause'] ?? NULL, NULL, - CRM_Utils_Array::value('fromClause', $voterClause) + $voterClause['fromClause'] ?? NULL ); $iTotal = $searchCount; @@ -287,9 +287,9 @@ class CRM_Campaign_Page_AJAX { FALSE, FALSE, FALSE, FALSE, FALSE, - CRM_Utils_Array::value('whereClause', $voterClause), + $voterClause['whereClause'] ?? NULL, $sortOrder, - CRM_Utils_Array::value('fromClause', $voterClause) + $voterClause['fromClause'] ?? NULL ); while ($result->fetch()) { $contactID = $result->contact_id; diff --git a/civicrm/CRM/Case/Form/Activity.php b/civicrm/CRM/Case/Form/Activity.php index e959a942329103ac7d1676729c28095717a40bc5..6a82870900c9305d34649a85612e321f5c54fe65 100644 --- a/civicrm/CRM/Case/Form/Activity.php +++ b/civicrm/CRM/Case/Form/Activity.php @@ -203,10 +203,7 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity { } $this->assign('targetContactValues', empty($targetContactValues) ? FALSE : $targetContactValues); - if (isset($this->_encounterMedium)) { - $this->_defaults['medium_id'] = $this->_encounterMedium; - } - elseif (empty($this->_defaults['medium_id'])) { + if (empty($this->_defaults['medium_id'])) { // set default encounter medium CRM-4816 $medium = CRM_Core_OptionGroup::values('encounter_medium', FALSE, FALSE, FALSE, 'AND is_default = 1'); if (count($medium) == 1) { @@ -266,22 +263,13 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity { $this->assign('urlPath', 'civicrm/case/activity'); - $encounterMediums = CRM_Case_PseudoConstant::encounterMedium(); - if ($this->_activityTypeFile == 'OpenCase' && $this->_action == CRM_Core_Action::UPDATE) { $this->getElement('activity_date_time')->freeze(); - - if ($this->_activityId) { - // Fixme: what's the justification for this? It seems like it is just re-adding an option in case it is the default and disabled. - // Is that really a big problem? - $this->_encounterMedium = CRM_Core_DAO::getFieldValue('CRM_Activity_DAO_Activity', $this->_activityId, 'medium_id'); - if (!array_key_exists($this->_encounterMedium, $encounterMediums)) { - $encounterMediums[$this->_encounterMedium] = CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'medium_id', $this->_encounterMedium); - } - } } - $this->add('select', 'medium_id', ts('Medium'), $encounterMediums, TRUE); + $this->addSelect('medium_id'); + + // Related contacts $i = 0; foreach ($this->_caseId as $key => $val) { $this->_relatedContacts[] = $rgc = CRM_Case_BAO_Case::getRelatedAndGlobalContacts($val); @@ -394,7 +382,7 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity { // store the submitted values in an array // Explanation for why we only check the is_unittest element: Prior to adding that check, there was no check and so any $params passed in would have been overwritten. Just in case somebody is passing in some non-null params and that broken code would have inadvertently been working, we can maintain backwards compatibility by only checking for the is_unittest parameter, and so that broken code will still work. At the same time this allows unit tests to pass in a $params without it getting overwritten. See also PR #2077 for some discussion of when the $params parameter was added as a passed in variable. if (empty($params['is_unittest'])) { - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); } //set parent id if its edit mode diff --git a/civicrm/CRM/Case/Form/CaseView.php b/civicrm/CRM/Case/Form/CaseView.php index bf50e3ec6a4d932b5b98f838e1fa11115f1e535d..6ef33b6d899c6b2a352ec5a50e2f3ef042f30df0 100644 --- a/civicrm/CRM/Case/Form/CaseView.php +++ b/civicrm/CRM/Case/Form/CaseView.php @@ -457,16 +457,16 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { 'entity_table' => 'civicrm_case', 'tag_id.parent_id.is_tagset' => 1, 'options' => ['limit' => 0], - 'return' => ["tag_id.parent_id", "tag_id.parent_id.name", "tag_id.name"], + 'return' => ["tag_id.parent_id", "tag_id.parent_id.label", "tag_id.label"], ]); foreach ($tagSetItems['values'] as $tag) { $tagSetTags += [ $tag['tag_id.parent_id'] => [ - 'name' => $tag['tag_id.parent_id.name'], + 'label' => $tag['tag_id.parent_id.label'], 'items' => [], ], ]; - $tagSetTags[$tag['tag_id.parent_id']]['items'][] = $tag['tag_id.name']; + $tagSetTags[$tag['tag_id.parent_id']]['items'][] = $tag['tag_id.label']; } } $this->assign('tagSetTags', $tagSetTags); diff --git a/civicrm/CRM/Case/Form/CustomData.php b/civicrm/CRM/Case/Form/CustomData.php index b1768b63429755612cc7c341bcd69bdd2a05abae..47dbd939bdfcf496827db4c2818af26e0a027762 100644 --- a/civicrm/CRM/Case/Form/CustomData.php +++ b/civicrm/CRM/Case/Form/CustomData.php @@ -110,7 +110,7 @@ class CRM_Case_Form_CustomData extends CRM_Core_Form { * @throws \CRM_Core_Exception */ public function postProcess(): void { - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); $transaction = new CRM_Core_Transaction(); diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php index 5d948999fc31a9a6453e3e341e32585818b572e7..fc3435e30f4f6afe9362b63bac77fb1d40b6bfba 100644 --- a/civicrm/CRM/Contact/BAO/Contact.php +++ b/civicrm/CRM/Contact/BAO/Contact.php @@ -119,7 +119,10 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact implements Civi\Co // CRM-7925 throw new CRM_Core_Exception(ts('The Contact Sub Type does not match the Contact type for this record')); } - $params['contact_sub_type'] = CRM_Utils_Array::implodePadded($params['contact_sub_type']); + // Ensure value is an array so it can be handled properly by `copyValues()` + if (is_string($params['contact_sub_type'])) { + $params['contact_sub_type'] = CRM_Core_DAO::unSerializeField($params['contact_sub_type'], self::fields()['contact_sub_type']['serialize']); + } } } diff --git a/civicrm/CRM/Contact/BAO/Group.php b/civicrm/CRM/Contact/BAO/Group.php index 3a5b8b7b8196ce234697bd21f31efe2d99001c63..7c777557d7c500346e37aea28e2ef87f8187a7f3 100644 --- a/civicrm/CRM/Contact/BAO/Group.php +++ b/civicrm/CRM/Contact/BAO/Group.php @@ -344,9 +344,11 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { 'parents' => NULL, ]; + // Fill title and frontend_title if not supplied + if (empty($params['id']) && empty($params['title'])) { + $params['title'] = $params['frontend_title'] ?? $params['name']; + } if (empty($params['id']) && empty($params['frontend_title'])) { - // If we were calling writeRecord it would handle this, but we need - // to migrate the other bits of magic. $params['frontend_title'] = $params['title']; } $hook = empty($params['id']) ? 'create' : 'edit'; @@ -388,6 +390,8 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { // form the name only if missing: CRM-627 $nameParam = $params['name'] ?? NULL; + // If we were calling writeRecord it would handle this, but we need + // to migrate the other bits of magic. if (!$nameParam && empty($params['id'])) { $params['name'] = CRM_Utils_String::titleToVar($params['title']); } diff --git a/civicrm/CRM/Contact/BAO/GroupNesting.php b/civicrm/CRM/Contact/BAO/GroupNesting.php index f480e44566e52a7ca8dd76449b8dd54bebd1f1de..4e3f17cee7fa56ca7a76310e036e184b582b906a 100644 --- a/civicrm/CRM/Contact/BAO/GroupNesting.php +++ b/civicrm/CRM/Contact/BAO/GroupNesting.php @@ -27,7 +27,7 @@ class CRM_Contact_BAO_GroupNesting extends CRM_Contact_DAO_GroupNesting { */ public static function create($params) { $hook = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($hook, 'GroupNesting', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($hook, 'GroupNesting', $params['id'] ?? NULL, $params); $dao = new CRM_Contact_BAO_GroupNesting(); $dao->copyValues($params); if (empty($params['id'])) { diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php index 0969bc8bfca313314565bca6ab39a742d4d6ce80..6fb4936ad15fd58ff9bd04e5ec3276c22294079c 100644 --- a/civicrm/CRM/Contact/BAO/Query.php +++ b/civicrm/CRM/Contact/BAO/Query.php @@ -4247,7 +4247,7 @@ WHERE $smartGroupClause if (!empty($relQill)) { $relQill .= ' OR '; } - $relQill .= CRM_Utils_Array::value($rel, $allRelationshipType); + $relQill .= $allRelationshipType[$rel] ?? ''; } $this->_qill[$grouping][] = 'Relationship Type(s) ' . $relQill . " ( " . implode(", ", $qillNames) . " )"; } @@ -6202,7 +6202,7 @@ AND displayRelType.is_active = 1 $pseudoOptions = CRM_Core_PseudoConstant::worldRegion(); } elseif ($daoName == 'CRM_Event_DAO_Event' && $fieldName == 'id') { - $checkPermission = CRM_Utils_Array::value('check_permission', $pseudoExtraParam, TRUE); + $checkPermission = $pseudoExtraParam['check_permission'] ?? TRUE; $pseudoOptions = CRM_Event_BAO_Event::getEvents(0, $fieldValue, TRUE, $checkPermission, TRUE); } elseif ($fieldName == 'contribution_product_id') { @@ -6437,7 +6437,7 @@ AND displayRelType.is_active = 1 // is not declared for them. // @todo so far only integer fields are being handled. If we add string fields we need to look at // escaping. - $pseudoConstantMetadata = CRM_Utils_Array::value('pseudoconstant', $fieldSpec, FALSE); + $pseudoConstantMetadata = $fieldSpec['pseudoconstant'] ?? FALSE; if (!empty($pseudoConstantMetadata) ) { if (!empty($pseudoConstantMetadata['optionGroupName']) diff --git a/civicrm/CRM/Contact/BAO/Relationship.php b/civicrm/CRM/Contact/BAO/Relationship.php index dacab11fcf581363146b3a10fba1682acdb9bb22..9d231e0fe40ec2ab77bbde6e0cbbc2d2ba4a63c1 100644 --- a/civicrm/CRM/Contact/BAO/Relationship.php +++ b/civicrm/CRM/Contact/BAO/Relationship.php @@ -1807,7 +1807,9 @@ AND cc.sort_name LIKE '%$name%'"; } /** - * DELETEME only-used-by-user-dashboard + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. */ public static function getContactRelationshipSelector(&$params) { // format the params @@ -1950,7 +1952,9 @@ AND cc.sort_name LIKE '%$name%'"; } /** - * DELETEME only-used-by-user-dashboard + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. */ public static function getColumnHeaders() { return [ diff --git a/civicrm/CRM/Contact/DAO/DashboardContact.php b/civicrm/CRM/Contact/DAO/DashboardContact.php index 3e298084bb587a4375379df524bd95f42957333a..aff797b875d6423867cd1f7bbddc75ceb691e2d6 100644 --- a/civicrm/CRM/Contact/DAO/DashboardContact.php +++ b/civicrm/CRM/Contact/DAO/DashboardContact.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/DashboardContact.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:73ab6a9a4f5d372c85b888aae2abe826) + * (GenCodeChecksum:2b31333980964ba3394f0c71cc764a9d) */ /** @@ -67,7 +67,7 @@ class CRM_Contact_DAO_DashboardContact extends CRM_Core_DAO { /** * Is this widget active? * - * @var bool|string|null + * @var bool|string * (SQL type: tinyint) * Note that values will be retrieved from the database as a string. */ @@ -219,6 +219,7 @@ class CRM_Contact_DAO_DashboardContact extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Dashlet is Active?'), 'description' => ts('Is this widget active?'), + 'required' => TRUE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, diff --git a/civicrm/CRM/Contact/Form/Contact.php b/civicrm/CRM/Contact/Form/Contact.php index a016b17d3d9df98fd0cabdfcd7a768430a233b2e..0b0aec7ab16fedb991e1b281ef0bb3e2693ab171 100644 --- a/civicrm/CRM/Contact/Form/Contact.php +++ b/civicrm/CRM/Contact/Form/Contact.php @@ -501,10 +501,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { // make we require one primary block, CRM-5505 if ($updateMode) { if (!$hasPrimary) { - $hasPrimary = CRM_Utils_Array::value( - 'is_primary', - CRM_Utils_Array::value($instance, $defaults[$name]) - ); + $hasPrimary = !empty($defaults[$name][$instance]['is_primary']); } continue; } @@ -987,7 +984,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { } //get the submitted values in an array - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); if (!isset($params['preferred_communication_method'])) { // If this field is empty QF will trim it so we have to add it in. $params['preferred_communication_method'] = 'null'; @@ -1060,7 +1057,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { if (array_key_exists('CommunicationPreferences', $this->_editOptions)) { // this is a chekbox, so mark false if we dont get a POST value - $params['is_opt_out'] = CRM_Utils_Array::value('is_opt_out', $params, FALSE); + $params['is_opt_out'] = $params['is_opt_out'] ?? FALSE; CRM_Utils_Array::formatArrayKeys($params['preferred_communication_method']); } @@ -1294,15 +1291,15 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { for ($i = 0; $i < count($contactLinks['rows']); $i++) { $row .= ' <tr> '; $row .= ' <td class="matching-contacts-name"> '; - $row .= CRM_Utils_Array::value('display_name', $contactLinks['rows'][$i]); + $row .= $contactLinks['rows'][$i]['display_name'] ?? ''; $row .= ' </td>'; $row .= ' <td class="matching-contacts-email"> '; - $row .= CRM_Utils_Array::value('primary_email', $contactLinks['rows'][$i]); + $row .= $contactLinks['rows'][$i]['primary_email'] ?? ''; $row .= ' </td>'; $row .= ' <td class="action-items"> '; - $row .= CRM_Utils_Array::value('view', $contactLinks['rows'][$i]); - $row .= CRM_Utils_Array::value('edit', $contactLinks['rows'][$i]); - $row .= CRM_Utils_Array::value('merge', $contactLinks['rows'][$i]); + $row .= $contactLinks['rows'][$i]['view'] ?? ''; + $row .= $contactLinks['rows'][$i]['edit'] ?? ''; + $row .= $contactLinks['rows'][$i]['merge'] ?? ''; $row .= ' </td>'; $row .= ' </tr> '; } @@ -1413,7 +1410,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { $streetAddress .= ' '; } } - $streetAddress .= CRM_Utils_Array::value($fld, $address); + $streetAddress .= $address[$fld] ?? ''; } $address['street_address'] = trim($streetAddress); $parseSuccess[$instance] = TRUE; diff --git a/civicrm/CRM/Contact/Form/Edit/Address.php b/civicrm/CRM/Contact/Form/Edit/Address.php index 8b88bb49c28605778e774640ff712f4f13b047f5..4c82a7ff5134d3060fc7fd644a48da974bccaae2 100644 --- a/civicrm/CRM/Contact/Form/Edit/Address.php +++ b/civicrm/CRM/Contact/Form/Edit/Address.php @@ -296,7 +296,7 @@ class CRM_Contact_Form_Edit_Address { $streetAddress .= ' '; } } - $streetAddress .= CRM_Utils_Array::value($fld, $address); + $streetAddress .= $address[$fld] ?? ''; } $streetAddress = trim($streetAddress); if (!empty($streetAddress)) { diff --git a/civicrm/CRM/Contact/Form/Inline/CommunicationPreferences.php b/civicrm/CRM/Contact/Form/Inline/CommunicationPreferences.php index 6452b0b02e4711b09fcb9447f6338defd1d3aea5..f65942b56ffeee3d628f8ebc86af4274cb28d92b 100644 --- a/civicrm/CRM/Contact/Form/Inline/CommunicationPreferences.php +++ b/civicrm/CRM/Contact/Form/Inline/CommunicationPreferences.php @@ -65,7 +65,7 @@ class CRM_Contact_Form_Inline_CommunicationPreferences extends CRM_Contact_Form_ // Process / save communication preferences // this is a chekbox, so mark false if we dont get a POST value - $params['is_opt_out'] = CRM_Utils_Array::value('is_opt_out', $params, FALSE); + $params['is_opt_out'] = $params['is_opt_out'] ?? FALSE; $params['contact_type'] = $this->_contactType; $params['contact_id'] = $this->_contactId; diff --git a/civicrm/CRM/Contact/Form/Inline/CustomData.php b/civicrm/CRM/Contact/Form/Inline/CustomData.php index d8e92f86bbfbd8dd85f7ac8b835276cfb9fdd2a1..96247fa4845909e1c278a084863aec605f54b99c 100644 --- a/civicrm/CRM/Contact/Form/Inline/CustomData.php +++ b/civicrm/CRM/Contact/Form/Inline/CustomData.php @@ -72,7 +72,7 @@ class CRM_Contact_Form_Inline_CustomData extends CRM_Contact_Form_Inline { public function postProcess() { // Process / save custom data // Get the form values and groupTree - $params = $this->controller->exportValues($this->_name); + $params = $this->getSubmittedValues(); CRM_Core_BAO_CustomValueTable::postProcess($params, 'civicrm_contact', $this->_contactId, diff --git a/civicrm/CRM/Contact/Form/Relationship.php b/civicrm/CRM/Contact/Form/Relationship.php index 46f69186b9b1ce4b0998bcedf4859af7f6ed4fdf..7001592c6bc0cba6bf65fac1999b41dd2f315a34 100644 --- a/civicrm/CRM/Contact/Form/Relationship.php +++ b/civicrm/CRM/Contact/Form/Relationship.php @@ -489,7 +489,7 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form { $jsData[$id] = array_filter(array_intersect_key($allRelationshipNames[$id], $whatWeWant)); // Add user-friendly placeholder foreach (['a', 'b'] as $x) { - $type = !empty($jsData[$id]["contact_sub_type_$x"]) ? $jsData[$id]["contact_sub_type_$x"] : CRM_Utils_Array::value("contact_type_$x", $jsData[$id]); + $type = !empty($jsData[$id]["contact_sub_type_$x"]) ? $jsData[$id]["contact_sub_type_$x"] : (CRM_Utils_Array::value("contact_type_$x", $jsData[$id])); $jsData[$id]["placeholder_$x"] = $type ? ts('- select %1 -', [strtolower($contactTypes[$type]['label'])]) : ts('- select contact -'); } } @@ -575,8 +575,8 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form { } // If this is a b_a relationship these form elements are flipped - $params['is_permission_a_b'] = CRM_Utils_Array::value("is_permission_{$a}_{$b}", $values, 0); - $params['is_permission_b_a'] = CRM_Utils_Array::value("is_permission_{$b}_{$a}", $values, 0); + $params['is_permission_a_b'] = $values["is_permission_{$a}_{$b}"] ?? 0; + $params['is_permission_b_a'] = $values["is_permission_{$b}_{$a}"] ?? 0; return [$params, $a]; } diff --git a/civicrm/CRM/Contact/Form/Search/Criteria.php b/civicrm/CRM/Contact/Form/Search/Criteria.php index b7f60d94696f2a10287d0aa8a04fdb7c8e44124f..c98485d740f28c19d6d03417d79a93a1375c13ff 100644 --- a/civicrm/CRM/Contact/Form/Search/Criteria.php +++ b/civicrm/CRM/Contact/Form/Search/Criteria.php @@ -374,7 +374,7 @@ class CRM_Contact_Form_Search_Criteria { 'job_title' => ['name' => 'job_title'], 'preferred_language' => ['name' => 'preferred_language'], 'contact_id' => [ - 'name' => 'contact_id', + 'name' => 'id', 'help' => ['id' => 'id-contact-id', 'file' => 'CRM/Contact/Form/Contact'], ], 'external_identifier' => [ @@ -461,7 +461,7 @@ class CRM_Contact_Form_Search_Criteria { } if ($addressOptions['postal_code']) { - $attr = ['class' => 'six'] + (array) CRM_Utils_Array::value('postal_code', $attributes); + $attr = ['class' => 'six'] + ($attributes['postal_code'] ?? []); $form->addElement('text', 'postal_code_low', NULL, $attr + ['placeholder' => ts('From')]); $form->addElement('text', 'postal_code_high', NULL, $attr + ['placeholder' => ts('To')]); } diff --git a/civicrm/CRM/Contact/Form/Task.php b/civicrm/CRM/Contact/Form/Task.php index 6d21f77a261ea639b66229ff1d1f69d36cbaf13d..f7eb5479687bd4012d02c74f1fdc64601e3139cd 100644 --- a/civicrm/CRM/Contact/Form/Task.php +++ b/civicrm/CRM/Contact/Form/Task.php @@ -262,7 +262,7 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { $queryOperator = 'AND'; } $dao = $selector->contactIDQuery($params, $sortID, - CRM_Utils_Array::value('display_relationship_type', $fv), + $fv['display_relationship_type'] ?? NULL, $queryOperator ); diff --git a/civicrm/CRM/Contact/Form/Task/EmailTrait.php b/civicrm/CRM/Contact/Form/Task/EmailTrait.php index 1755bbc2327fc4e39b31b4874d94189993b3bcd3..3a97596024e4c3c58b721467d2b02ad5e2865271 100644 --- a/civicrm/CRM/Contact/Form/Task/EmailTrait.php +++ b/civicrm/CRM/Contact/Form/Task/EmailTrait.php @@ -384,7 +384,7 @@ trait CRM_Contact_Form_Task_EmailTrait { $cc, $bcc, $additionalDetails, - CRM_Utils_Array::value('campaign_id', $formValues), + $formValues['campaign_id'] ?? NULL, $this->getCaseID() ); diff --git a/civicrm/CRM/Contact/Form/Task/Label.php b/civicrm/CRM/Contact/Form/Task/Label.php index e303d62dd13f9446be49eb7ef26a04bc9c30e70b..0b8455968456bd85a563f64a90f709135745bf4b 100644 --- a/civicrm/CRM/Contact/Form/Task/Label.php +++ b/civicrm/CRM/Contact/Form/Task/Label.php @@ -250,7 +250,7 @@ class CRM_Contact_Form_Task_Label extends CRM_Contact_Form_Task { if (!empty($fv['location_type_id'])) { foreach ($valuesothers as $vals) { if (($vals['location_type_id'] ?? NULL) == - CRM_Utils_Array::value('location_type_id', $fv) + ($fv['location_type_id'] ?? NULL) ) { foreach ($vals as $k => $v) { if (in_array($k, [ diff --git a/civicrm/CRM/Contact/Import/Form/MapField.php b/civicrm/CRM/Contact/Import/Form/MapField.php index 06680d140f9ddb3e707c1e28367df2afd5d01691..ce367b544fd40a13f51d1476cde14ff45d4fd2e1 100644 --- a/civicrm/CRM/Contact/Import/Form/MapField.php +++ b/civicrm/CRM/Contact/Import/Form/MapField.php @@ -82,6 +82,9 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField { * @throws \Civi\API\Exception\UnauthorizedException */ public function preProcess(): void { + // Don't mess up the fields for related contacts + $this->shouldSortMapperFields = FALSE; + parent::preProcess(); //format custom field names, CRM-2676 $contactType = $this->getContactType(); @@ -275,7 +278,12 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField { $last_key = array_key_last($mapper[$i]); } elseif ($this->getSubmittedValue('savedMapping') && $processor->getFieldName($i)) { - $defaults["mapper[$i]"] = $processor->getSavedQuickformDefaultsForColumn($i); + $defaultField = $processor->getSavedQuickformDefaultsForColumn($i); + if (!array_key_exists($defaultField[0], $this->_mapperFields)) { + $defaultField = ['do_not_import']; + CRM_Core_Session::setStatus(ts('Data was configured to be imported to column %1 but it is not available. The field has been set to "%2"', [1 => $columnHeader, 2 => $this->_mapperFields['do_not_import']])); + } + $defaults["mapper[$i]"] = $defaultField; $last_key = array_key_last($defaults["mapper[$i]"]) ?? 0; } else { diff --git a/civicrm/CRM/Contact/Page/AJAX.php b/civicrm/CRM/Contact/Page/AJAX.php index 3c9f17e00145d7dda7f717ce9ac20a5651d9abfb..9cacb36776d2d3febbbd7633661775781470dd5c 100644 --- a/civicrm/CRM/Contact/Page/AJAX.php +++ b/civicrm/CRM/Contact/Page/AJAX.php @@ -951,7 +951,7 @@ LIMIT {$offset}, {$rowCount} public static function toggleDedupeSelect() { $pnid = $_REQUEST['pnid']; $isSelected = CRM_Utils_Type::escape($_REQUEST['is_selected'], 'Boolean'); - $cacheKeyString = CRM_Utils_Request::retrieve('cacheKey', 'Alphanumeric', $null, FALSE); + $cacheKeyString = CRM_Utils_Request::retrieve('cacheKey', 'Alphanumeric', NULL, FALSE); $params = [ 1 => [$isSelected, 'Boolean'], @@ -979,7 +979,9 @@ LIMIT {$offset}, {$rowCount} } /** - * DELETEME only-used-by-user-dashboard + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. */ public static function getContactRelationships() { $contactID = CRM_Utils_Type::escape($_GET['cid'], 'Integer'); diff --git a/civicrm/CRM/Contact/Page/View/Relationship.php b/civicrm/CRM/Contact/Page/View/Relationship.php index 0b0bb7eb8cfb551adb8529e633bc962e5d1e916b..ec6ad2f88de79dc4348e39ceee360c3b22f97f1e 100644 --- a/civicrm/CRM/Contact/Page/View/Relationship.php +++ b/civicrm/CRM/Contact/Page/View/Relationship.php @@ -227,7 +227,9 @@ class CRM_Contact_Page_View_Relationship extends CRM_Core_Page { } /** - * DELETEME only-used-by-user-dashboard + * @deprecated since 5.68. Will be removed around 5.74. + * + * Only-used-by-user-dashboard. * * @return array * (reference) of action links diff --git a/civicrm/CRM/Contact/Page/View/UserDashBoard.php b/civicrm/CRM/Contact/Page/View/UserDashBoard.php index 5ac3aa23bced07f126d3e0f235fad5e3535fee3e..5eee298b7536b7c4e07475a9074bf76c8de6f225 100644 --- a/civicrm/CRM/Contact/Page/View/UserDashBoard.php +++ b/civicrm/CRM/Contact/Page/View/UserDashBoard.php @@ -129,7 +129,7 @@ class CRM_Contact_Page_View_UserDashBoard extends CRM_Core_Page { // Relationship section // FIXME - this used to share code with the contact summary "Relationships" tab // now that tab has been switched to use SearchKit, and this ought to be switched as well; - // then remove all code commented with "DELETEME only-used-by-user-dashboard" + // then remove all code commented with "only-used-by-user-dashboard" if (!empty($dashboardOptions['Permissioned Orgs']) && CRM_Core_Permission::check('view my contact')) { $columnHeaders = CRM_Contact_BAO_Relationship::getColumnHeaders(); $contactRelationships = $selector = NULL; diff --git a/civicrm/CRM/Contact/Page/View/Vcard.php b/civicrm/CRM/Contact/Page/View/Vcard.php index 9d98552cf35c053ac6d1dd35210fbd615588cb99..29ff266df677562a681b7254713952f7197226e5 100644 --- a/civicrm/CRM/Contact/Page/View/Vcard.php +++ b/civicrm/CRM/Contact/Page/View/Vcard.php @@ -45,10 +45,10 @@ class CRM_Contact_Page_View_Vcard extends CRM_Contact_Page_View { if ($defaults['contact_type'] == 'Individual') { $vcard->setName(CRM_Utils_Array::value('last_name', $defaults), - CRM_Utils_Array::value('first_name', $defaults), - CRM_Utils_Array::value('middle_name', $defaults), - CRM_Utils_Array::value('prefix', $defaults), - CRM_Utils_Array::value('suffix', $defaults) + $defaults['first_name'] ?? NULL, + $defaults['middle_name'] ?? NULL, + $defaults['prefix'] ?? NULL, + $defaults['suffix'] ?? NULL ); $organizationName = $defaults['organization_name'] ?? NULL; if ($organizationName !== NULL) { diff --git a/civicrm/CRM/Contribute/ActionMapping/ByPage.php b/civicrm/CRM/Contribute/ActionMapping/ByPage.php index 5cf73dbbb1c0be124f7cff888e3c65adbfd4973d..7254291b8073eaeebaa67518992ac2d930f93bb5 100644 --- a/civicrm/CRM/Contribute/ActionMapping/ByPage.php +++ b/civicrm/CRM/Contribute/ActionMapping/ByPage.php @@ -78,10 +78,13 @@ class CRM_Contribute_ActionMapping_ByPage extends CRM_Contribute_ActionMapping { $query['casContactTableAlias'] = NULL; // $schedule->start_action_date is user-supplied data. validate. - if (!array_key_exists($schedule->start_action_date, $this->getDateFields())) { + if (empty($schedule->absolute_date) && !array_key_exists($schedule->start_action_date, $this->getDateFields())) { throw new CRM_Core_Exception("Invalid date field"); } - $query['casDateField'] = $schedule->start_action_date; + $query['casDateField'] = $schedule->start_action_date ?? ''; + if (empty($query['casDateField']) && $schedule->absolute_date) { + $query['casDateField'] = "'" . CRM_Utils_Type::escape($schedule->absolute_date, 'String') . "'"; + } // build where clause if (!empty($selectedValues)) { diff --git a/civicrm/CRM/Contribute/ActionMapping/ByType.php b/civicrm/CRM/Contribute/ActionMapping/ByType.php index 39d8c516548d41f669d3c8cac1ef1737f23ebc78..0434b8f25a447e8a3e1f17f2750c2c2437b2078e 100644 --- a/civicrm/CRM/Contribute/ActionMapping/ByType.php +++ b/civicrm/CRM/Contribute/ActionMapping/ByType.php @@ -119,11 +119,13 @@ class CRM_Contribute_ActionMapping_ByType extends CRM_Contribute_ActionMapping { $query['casContactTableAlias'] = NULL; // $schedule->start_action_date is user-supplied data. validate. - if (!array_key_exists($schedule->start_action_date, $this->getDateFields())) { + if (empty($schedule->absolute_date) && !array_key_exists($schedule->start_action_date, $this->getDateFields())) { throw new CRM_Core_Exception("Invalid date field"); } - $query['casDateField'] = $schedule->start_action_date; - + $query['casDateField'] = $schedule->start_action_date ?? ''; + if (empty($query['casDateField']) && $schedule->absolute_date) { + $query['casDateField'] = "'" . CRM_Utils_Type::escape($schedule->absolute_date, 'String') . "'"; + } // build where clause if (!empty($selectedValues)) { $query->where("e.financial_type_id IN (@selectedValues)") diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php index cc88625bb2a9408150d9f8f9ca3ce28baa5c8305..a04da212f21ceed1deb6daea3579f61519e90578 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution.php +++ b/civicrm/CRM/Contribute/BAO/Contribution.php @@ -409,6 +409,8 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution im $billingFirstName = $params['billing_first_name'] ?? NULL; $billingMiddleName = $params['billing_middle_name'] ?? NULL; $billingLastName = $params['billing_last_name'] ?? NULL; + // Note this is NOT used when creating a billing address. It is probably passed + // the the payment processor - which is horrible & could maybe change. $addressParams['address_name'] = "{$billingFirstName}" . CRM_Core_DAO::VALUE_SEPARATOR . "{$billingMiddleName}" . CRM_Core_DAO::VALUE_SEPARATOR . "{$billingLastName}"; foreach ($billingFields as $value) { @@ -1656,16 +1658,21 @@ LEFT JOIN civicrm_option_value contribution_status ON (civicrm_contribution.cont * thought). * * @param array $params - * @param int $billingLocationTypeID * * @return int * address id */ - public static function createAddress($params, $billingLocationTypeID) { + public static function createAddress($params) { + $billingLocationTypeID = CRM_Core_BAO_LocationType::getBilling(); [$hasBillingField, $addressParams] = self::getBillingAddressParams($params, $billingLocationTypeID); if ($hasBillingField) { - $address = CRM_Core_BAO_Address::writeRecord($addressParams); - return $address->id; + $nameFields = [ + $params['billing_first_name'] ?? NULL, + $params['billing_middle_name'] ?? NULL, + $params['billing_last_name'] ?? NULL, + ]; + $addressParams['name'] = implode(' ', array_filter($nameFields)); + return (int) CRM_Core_BAO_Address::writeRecord($addressParams)->id; } return NULL; @@ -3359,7 +3366,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } // record line items and financial items if (empty($params['skipLineItem'])) { - CRM_Price_BAO_LineItem::processPriceSet($entityId, CRM_Utils_Array::value('line_item', $params), $params['contribution'], $entityTable, $isUpdate); + CRM_Price_BAO_LineItem::processPriceSet($entityId, $params['line_item'] ?? NULL, $params['contribution'], $entityTable, $isUpdate); } // create batch entry if batch_id is passed and @@ -3483,7 +3490,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac 'version' => 3, 'id' => ($props['contribution_page_id']), ]); - $types = (array) CRM_Utils_Array::value('payment_processor', $page, 0); + $types = (array) $page['payment_processor'] ?? 0; $params['condition'] = 'id IN (' . implode(',', $types) . ')'; } break; @@ -3947,7 +3954,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac // if we are still empty see if we can use anything from a contribution page. if (!empty($pageValues['receipt_from_email'])) { return [ - CRM_Utils_Array::value('receipt_from_name', $pageValues), + $pageValues['receipt_from_name'] ?? NULL, $pageValues['receipt_from_email'], ]; } diff --git a/civicrm/CRM/Contribute/BAO/ContributionPage.php b/civicrm/CRM/Contribute/BAO/ContributionPage.php index 72fec24e84372f1b39c2ec41984ee0adee599a02..a2a5ce289d62a2d4828dcd3533bc77a14ee39000 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionPage.php +++ b/civicrm/CRM/Contribute/BAO/ContributionPage.php @@ -261,7 +261,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio if ($gId) { $email = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $gId, 'notify'); if ($email) { - $val = CRM_Core_BAO_UFGroup::checkFieldsEmptyValues($gId, $contactID, CRM_Utils_Array::value($key, $params), TRUE); + $val = CRM_Core_BAO_UFGroup::checkFieldsEmptyValues($gId, $contactID, $params[$key] ?? NULL, TRUE); CRM_Core_BAO_UFGroup::commonSendMail($contactID, $val); } } diff --git a/civicrm/CRM/Contribute/BAO/ContributionSoft.php b/civicrm/CRM/Contribute/BAO/ContributionSoft.php index 797d3dce9bf58178dd8a939b5a6c77a73461bd04..2a2885c95f3415cfc0c10cef94a380dc46dcb936 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionSoft.php +++ b/civicrm/CRM/Contribute/BAO/ContributionSoft.php @@ -30,7 +30,7 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio */ public static function add(&$params) { $hook = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($hook, 'ContributionSoft', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($hook, 'ContributionSoft', $params['id'] ?? NULL, $params); $contributionSoft = new CRM_Contribute_DAO_ContributionSoft(); $contributionSoft->copyValues($params); diff --git a/civicrm/CRM/Contribute/BAO/FinancialProcessor.php b/civicrm/CRM/Contribute/BAO/FinancialProcessor.php index 475caa8165cc7db90661226007f636fae6992009..73056b55dafef88e30086e1a443df8b4f4b3781e 100644 --- a/civicrm/CRM/Contribute/BAO/FinancialProcessor.php +++ b/civicrm/CRM/Contribute/BAO/FinancialProcessor.php @@ -81,7 +81,7 @@ class CRM_Contribute_BAO_FinancialProcessor { if ($params['contribution']->currency) { $currency = $params['contribution']->currency; } - $previousLineItemTotal = CRM_Utils_Array::value('line_total', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0); + $previousLineItemTotal = CRM_Utils_Array::value('line_total', $previousLineItems[$fieldValueId] ?? NULL, 0); $itemParams = [ 'transaction_date' => $receiveDate, 'contact_id' => $params['prevContribution']->contact_id, @@ -101,10 +101,10 @@ class CRM_Contribute_BAO_FinancialProcessor { $taxAmount = (float) $lineItemDetails['tax_amount']; if ($context === 'changeFinancialType' && $lineItemDetails['tax_amount'] === 'null') { // reverse the Sale Tax amount if there is no tax rate associated with new Financial Type - $taxAmount = CRM_Utils_Array::value('tax_amount', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0); + $taxAmount = CRM_Utils_Array::value('tax_amount', $previousLineItems[$fieldValueId] ?? NULL, 0); } elseif ($previousLineItemTotal != $lineItemDetails['line_total']) { - $taxAmount -= CRM_Utils_Array::value('tax_amount', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0); + $taxAmount -= CRM_Utils_Array::value('tax_amount', $previousLineItems[$fieldValueId] ?? NULL, 0); } if ($taxAmount != 0) { $itemParams['amount'] = CRM_Contribute_BAO_FinancialProcessor::getMultiplier($params['contribution']->contribution_status_id, $context) * $taxAmount; diff --git a/civicrm/CRM/Contribute/BAO/Premium.php b/civicrm/CRM/Contribute/BAO/Premium.php index 2f648474de4b119f8248242d5a89f454ff622aab..d0314a12f5dc2727ed07fd6b95557dbe5eabb4bd 100644 --- a/civicrm/CRM/Contribute/BAO/Premium.php +++ b/civicrm/CRM/Contribute/BAO/Premium.php @@ -112,6 +112,7 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium { } } else { + // Why? should we not skip if not found? CRM_Core_DAO::storeValues($productDAO, $products[$productDAO->id]); } } @@ -127,10 +128,10 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium { if (count($products)) { $form->assign('showPremium', $formItems); $form->assign('showSelectOptions', $formItems); - $form->assign('products', $products); $form->assign('premiumBlock', $premiumBlock); } } + $form->assign('products', $products ?? NULL); } /** diff --git a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php index 68e86322e4a1672d45c7621bfb6a21270111bcaa..6b9b5472ef3c8ff348d043a749b5bed4305130d8 100644 --- a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php +++ b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php @@ -529,7 +529,7 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { } $tplParams['credit_card_exp_date'] = isset($params['credit_card_exp_date']) ? CRM_Utils_Date::mysqlToIso(CRM_Utils_Date::format($params['credit_card_exp_date'])) : NULL; - $tplParams['credit_card_type'] = CRM_Utils_Array::value('credit_card_type', $params); + $tplParams['credit_card_type'] = $params['credit_card_type'] ?? NULL; $tplParams['credit_card_number'] = CRM_Utils_System::mungeCreditCard(CRM_Utils_Array::value('credit_card_number', $params)); return $tplParams; } diff --git a/civicrm/CRM/Contribute/Form/AdditionalInfo.php b/civicrm/CRM/Contribute/Form/AdditionalInfo.php index 86b0e9457265cd61d5915ec975c646b6178a6e93..7f1d5e393fd0f56c0e1a2d1b94c8580c115da5d2 100644 --- a/civicrm/CRM/Contribute/Form/AdditionalInfo.php +++ b/civicrm/CRM/Contribute/Form/AdditionalInfo.php @@ -147,9 +147,11 @@ class CRM_Contribute_Form_AdditionalInfo { * * Build the form object for PaymentReminders Information. * + * @deprecated since 5.68 will be removed around 5.78. * @param CRM_Core_Form $form */ public static function buildPaymentReminders(&$form) { + CRM_Core_Error::deprecatedFunctionWarning('no alternative, will be removed around 5.78'); //PaymentReminders section $form->add('hidden', 'hidden_PaymentReminders', 1); $form->add('text', 'initial_reminder_day', ts('Send Initial Reminder'), ['size' => 3]); diff --git a/civicrm/CRM/Contribute/Form/ContributeFormTrait.php b/civicrm/CRM/Contribute/Form/ContributeFormTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..b5f23429e9fe1b6870f4550ea440db0b07810c67 --- /dev/null +++ b/civicrm/CRM/Contribute/Form/ContributeFormTrait.php @@ -0,0 +1,91 @@ +<?php + +use Civi\API\EntityLookupTrait; + +/** + * Trait implements functions to retrieve contribution related values. + */ +trait CRM_Contribute_Form_ContributeFormTrait { + + use EntityLookupTrait; + + /** + * Get the value for a field relating to the contribution. + * + * All values returned in apiv4 format. Escaping may be required. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @param string $fieldName + * + * @return mixed + * @throws \CRM_Core_Exception + */ + public function getContributionValue(string $fieldName) { + if ($this->isDefined('Contribution')) { + return $this->lookup('Contribution', $fieldName); + } + $id = $this->getContributionID(); + if ($id) { + $this->define('Contribution', 'Contribution', ['id' => $id]); + return $this->lookup('Contribution', $fieldName); + } + return NULL; + } + + /** + * Get the selected Contribution ID. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionID(): ?int { + throw new CRM_Core_Exception('`getContributionID` must be implemented'); + } + + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionPageID(): ?int { + throw new CRM_Core_Exception('`ContributionPageID` must be implemented'); + } + + /** + * Get a value from the contribution being acted on. + * + * All values returned in apiv4 format. Escaping may be required. + * + * @param string $fieldName + * + * @return mixed + * @noinspection PhpUnhandledExceptionInspection + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + */ + public function getContributionPageValue(string $fieldName) { + if ($this->isDefined('ContributionPage')) { + return $this->lookup('ContributionPage', $fieldName); + } + $id = $this->getContributionPageID(); + if ($id) { + $this->define('ContributionPage', 'ContributionPage', ['id' => $id]); + return $this->lookup('ContributionPage', $fieldName); + } + return NULL; + } + +} diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php index 8ea0d4fe325d6dfb97b7326e6f5fd5edf15f9d81..8227fb63af04f0aa09618459818a45de0fdecfb1 100644 --- a/civicrm/CRM/Contribute/Form/Contribution.php +++ b/civicrm/CRM/Contribute/Form/Contribution.php @@ -18,6 +18,7 @@ use Civi\Payment\Exception\PaymentProcessorException; */ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditPayment { use CRM_Contact_Form_ContactFormTrait; + use CRM_Contribute_Form_ContributeFormTrait; /** * The id of the contribution that we are processing. @@ -208,6 +209,11 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP */ public $payment_instrument_id; + /** + * @var bool + */ + private $_payNow; + /** * Explicitly declare the form context. */ @@ -215,6 +221,14 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP return 'create'; } + public function __get($name) { + if ($name === '_contributionID') { + CRM_Core_Error::deprecatedWarning('_contributionID is not a form property - use getContributionID()'); + return $this->getContributionID(); + } + return NULL; + } + /** * Set variables up before form is built. * @@ -240,8 +254,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $this->assign('action', $this->_action); // Get the contribution id if update - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive'); - $this->assign('isUsePaymentBlock', !empty($this->_id)); + $this->assign('isUsePaymentBlock', (bool) $this->getContributionID()); if (!empty($this->_id)) { $this->assignPaymentInfoBlock(); $this->assign('contribID', $this->_id); @@ -306,7 +319,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP // Set title if ($this->_mode && $this->_id) { $this->_payNow = TRUE; - $this->assign('payNow', $this->_payNow); $this->setTitle(ts('Pay with Credit Card')); } elseif ($this->_values['is_template']) { @@ -318,6 +330,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP else { $this->setPageTitle($this->_ppID ? ts('Pledge Payment') : ts('Contribution')); } + $this->assign('payNow', $this->_payNow); } private function preProcessPledge(): void { @@ -605,8 +618,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $getOnlyPriceSetElements = FALSE; } - $this->set('priceSetId', $this->_priceSetId); - CRM_Price_BAO_PriceSet::buildPriceSet($this, 'contribution', FALSE); + $this->buildPriceSet(); // get only price set form elements. if ($getOnlyPriceSetElements) { @@ -670,7 +682,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } } if ($buildRecurBlock) { - CRM_Contribute_Form_Contribution_Main::buildRecur($this); + $this->buildRecur(); $this->setDefaults(['is_recur' => 0]); $this->assign('buildRecurBlock', TRUE); } @@ -925,6 +937,49 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } } + /** + * Build the price set form. + */ + private function buildPriceSet(): void { + $priceSetId = $this->getPriceSetID(); + $form = $this; + $component = 'contribution'; + $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId, TRUE, FALSE); + $form->_priceSet = $priceSet[$priceSetId] ?? NULL; + $validPriceFieldIds = array_keys($form->_priceSet['fields']); + + $form->_priceSet['id'] = $form->_priceSet['id'] ?? $priceSetId; + $form->assign('priceSet', $form->_priceSet); + + $feeBlock = &$form->_priceSet['fields']; + + // Call the buildAmount hook. + CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock); + + $hideAdminValues = !CRM_Core_Permission::check('edit contributions'); + // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); + $checklifetime = FALSE; + foreach ($feeBlock as $id => $field) { + $options = $field['options'] ?? NULL; + + if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { + continue; + } + + if (!empty($options)) { + CRM_Price_BAO_PriceField::addQuickFormElement($form, + 'price_' . $field['id'], + $field['id'], + FALSE, + $field['is_required'] ?? FALSE, + NULL, + $options + ); + } + } + } + /** * Global form rule. * @@ -1031,7 +1086,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP return; } // Get the submitted form values. - $submittedValues = $this->controller->exportValues($this->_name); + $submittedValues = $this->getSubmittedValues(); if ($this->_values['is_template']) { // If we are a template contribution we don't allow the contribution_status_id to be set // on the form but we need it for the submit function. @@ -1210,7 +1265,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $contributionParams, $financialType, $this->_bltID, - CRM_Utils_Array::value('is_recur', $this->_params) + $this->_params['is_recur'] ?? NULL ); $paymentParams['contributionID'] = $contribution->id; @@ -1335,7 +1390,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP // add these values for the recurringContrib function ,CRM-10188 $params['financial_type_id'] = $financialType->id; - $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $billingLocationID); + $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); //@todo - this is being set from the form to resolve CRM-10188 - an // eNotice caused by it not being set @ the front end @@ -1349,7 +1404,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP // We may no longer need to set params['is_recur'] - it used to be used in processRecurringContribution $params['is_recur'] = $isRecur; $params['payment_instrument_id'] = $contributionParams['payment_instrument_id'] ?? NULL; - $recurringContributionID = !$isRecur ? NULL : CRM_Contribute_Form_Contribution_Confirm::processRecurringContribution($form, $params, [ + $recurringContributionID = !$isRecur ? NULL : $this->processRecurringContribution($form, $params, [ 'contact_id' => $contactID, 'financial_type_id' => $financialType->id, ]); @@ -1394,9 +1449,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $smarty->assign('dataArray', $dataArray); $smarty->assign('totalTaxAmount', $params['tax_amount'] ?? NULL); } - - // lets store it in the form variable so postProcess hook can get to this and use it - $form->_contributionID = $contribution->id; } // process soft credit / pcp params first @@ -1432,6 +1484,51 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP return $contribution; } + /** + * Create the recurring contribution record. + * + * @param self $form + * @param array $params + * @param array $recurParams + * + * @return int|null + */ + private function processRecurringContribution($form, $params, $recurParams) { + // @todo - previously shared code - many items may be irrelevant. + $recurParams['amount'] = $params['amount'] ?? NULL; + $recurParams['auto_renew'] = $params['auto_renew'] ?? NULL; + $recurParams['frequency_unit'] = $params['frequency_unit'] ?? NULL; + $recurParams['frequency_interval'] = $params['frequency_interval'] ?? NULL; + $recurParams['installments'] = $params['installments'] ?? NULL; + $recurParams['currency'] = $params['currency'] ?? NULL; + $recurParams['payment_instrument_id'] = $params['payment_instrument_id']; + + $recurParams['is_test'] = 0; + if (($form->_action & CRM_Core_Action::PREVIEW) || + (isset($form->_mode) && ($form->_mode == 'test')) + ) { + $recurParams['is_test'] = 1; + } + + $recurParams['start_date'] = $recurParams['create_date'] = $recurParams['modified_date'] = date('YmdHis'); + if (!empty($params['receive_date'])) { + $recurParams['start_date'] = date('YmdHis', strtotime($params['receive_date'])); + } + $recurParams['invoice_id'] = $params['invoiceID'] ?? NULL; + $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Pending'); + $recurParams['payment_processor_id'] = $params['payment_processor_id'] ?? NULL; + $recurParams['is_email_receipt'] = (bool) ($params['is_email_receipt'] ?? FALSE); + // We set trxn_id=invoiceID specifically for paypal IPN. It is reset this when paypal sends us the real trxn id, CRM-2991 + $recurParams['processor_id'] = $recurParams['trxn_id'] = ($params['trxn_id'] ?? $params['invoiceID']); + + $campaignId = $params['campaign_id'] ?? $form->_values['campaign_id'] ?? NULL; + $recurParams['campaign_id'] = $campaignId; + $recurring = CRM_Contribute_BAO_ContributionRecur::add($recurParams); + $form->_params['contributionRecurID'] = $recurring->id; + + return $recurring->id; + } + /** * Generate the data to construct a snippet based pane. * @@ -1484,8 +1581,20 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP * * @throws \CRM_Core_Exception * @throws \Civi\Payment\Exception\PaymentProcessorException + * + * @deprecated since 5.68 will be removed around 5.80. + * + * Try something like + * use use \Civi\Test\FormTrait; + * $form = $this->getTestForm('CRM_Contribute_Form_Contribution', $submittedValues, [ + * 'id' => 4; + * 'action' => 'update', + * ]); + * $form->processForm(); */ public function testSubmit($params, $action, $creditCardMode = NULL) { + // Note that this is really used from tests - so adding noisy deprecations would make them + // fail straight away. $defaults = [ 'soft_credit_contact_id' => [], 'receive_date' => date('Y-m-d H:i:s'), @@ -1531,7 +1640,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $this->_fields = []; return $this->submit(array_merge($defaults, $params), $action, CRM_Utils_Array::value('pledge_payment_id', $params)); - } /** @@ -1558,7 +1666,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP if ($this->getPriceSetID() && $action & CRM_Core_Action::UPDATE) { $line = CRM_Price_BAO_LineItem::getLineItems($this->_id, 'contribution'); $lineID = key($line); - $priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', CRM_Utils_Array::value('price_field_id', $line[$lineID]), 'price_set_id'); + $priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $line[$lineID]['price_field_id'] ?? NULL, 'price_set_id'); $quickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config'); // Why do we do this? Seems like a like a wrapper for old functionality - but single line price sets & quick // config should be treated the same. @@ -1661,7 +1769,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $componentDetails = CRM_Contribute_BAO_Contribution::getComponentDetails($this->_id); if (empty($componentDetails['membership']) && empty($componentDetails['participant'])) { if (!($this->_action & CRM_Core_Action::UPDATE && (($this->_defaults['contribution_status_id'] != $submittedValues['contribution_status_id'])))) { - $lineItems[$itemId]['unit_price'] = $lineItems[$itemId]['line_total'] = CRM_Utils_Rule::cleanMoney(CRM_Utils_Array::value('total_amount', $submittedValues)); + $lineItems[$itemId]['unit_price'] = $lineItems[$itemId]['line_total'] = $this->getSubmittedValue('total_amount'); } } @@ -1707,7 +1815,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $submittedValues['total_amount'] = $this->_values['total_amount'] ?? NULL; // Avoid tax amount deduction on edit form and keep it original, because this will lead to error described in CRM-20676 if (!$this->_id) { - $submittedValues['total_amount'] -= CRM_Utils_Array::value('tax_amount', $this->_values, 0); + $submittedValues['total_amount'] -= $this->_values['tax_amount'] ?? 0; } } $this->assign('lineItem', !empty($lineItem) && !$isQuickConfig ? $lineItem : FALSE); @@ -1895,9 +2003,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $contribution->id, ($formValues['option_type'] ?? 0) == 2, $formValues['total_amount'], - CRM_Utils_Array::value('total_amount', $this->_defaults), + $this->_defaults['total_amount'] ?? NULL, $formValues['contribution_status_id'], - CRM_Utils_Array::value('contribution_status_id', $this->_defaults) + $this->_defaults['contribution_status_id'] ?? NULL ); return $contribution; } @@ -1919,7 +2027,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP foreach ($lineItem as $key => $value) { foreach ($value as $v) { if (isset($taxRate[(string) CRM_Utils_Array::value('tax_rate', $v)])) { - $taxRate[(string) $v['tax_rate']] = $taxRate[(string) $v['tax_rate']] + CRM_Utils_Array::value('tax_amount', $v); + $taxRate[(string) $v['tax_rate']] = $taxRate[(string) $v['tax_rate']] + ($v['tax_amount'] ?? 0); } else { if (isset($v['tax_rate'])) { @@ -2058,12 +2166,32 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } /** - * Get the contribution ID. + * Get the selected Contribution ID. * - * @return int|null + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionID(): ?int { + if (!$this->_id) { + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive'); + } + return $this->_id ? (int) $this->_id : NULL; + } + + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection */ - protected function getContributionID(): ?int { - return $this->_id; + public function getContributionPageID(): ?int { + return $this->getContributionID() ? $this->getContributionValue('contribution_page_id') : NULL; } /** @@ -2223,4 +2351,91 @@ WHERE contribution_id = {$id} return $this->_ppID ? (int) $this->_ppID : NULL; } + /** + * Build elements to collect information for recurring contributions. + * + * Previously shared function. + */ + private function buildRecur(): void { + $form = $this; + $attributes = CRM_Core_DAO::getAttribute('CRM_Contribute_DAO_ContributionRecur'); + $className = 'CRM_Contribute_Form_Contribution'; + + $form->assign('is_recur_interval', $form->_values['is_recur_interval'] ?? NULL); + $form->assign('is_recur_installments', $form->_values['is_recur_installments'] ?? NULL); + $paymentObject = $form->getVar('_paymentObject'); + if ($paymentObject) { + $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [ + 'is_recur_installments' => !empty($form->_values['is_recur_installments']), + 'is_email_receipt' => !empty($form->_values['is_email_receipt']), + ])); + } + + $frUnits = $form->_values['recur_frequency_unit'] ?? NULL; + $frequencyUnits = CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, TRUE); + if (empty($frUnits) && + $className == 'CRM_Contribute_Form_Contribution' + ) { + $frUnits = implode(CRM_Core_DAO::VALUE_SEPARATOR, + CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, FALSE, NULL, 'value') + ); + } + + $unitVals = explode(CRM_Core_DAO::VALUE_SEPARATOR, $frUnits); + + // FIXME: Ideally we should freeze select box if there is only + // one option but looks there is some problem /w QF freeze. + //if ( count( $units ) == 1 ) { + //$frequencyUnit->freeze( ); + //} + + $form->add('text', 'installments', ts('installments'), + $attributes['installments'] + ['class' => 'two'] + ); + $form->addRule('installments', ts('Number of installments must be a whole number.'), 'integer'); + + $is_recur_label = ts('I want to contribute this amount every'); + + // CRM 10860, display text instead of a dropdown if there's only 1 frequency unit + if (count($unitVals) == 1) { + $form->assign('one_frequency_unit', TRUE); + $form->add('hidden', 'frequency_unit', $unitVals[0]); + if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + $unit = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($unitVals[0]); + $form->assign('frequency_unit', $unit); + } + else { + $is_recur_label = ts('I want to contribute this amount every %1', + [1 => $frequencyUnits[$unitVals[0]]] + ); + $form->assign('all_text_recur', TRUE); + } + } + else { + $form->assign('one_frequency_unit', FALSE); + $units = []; + foreach ($unitVals as $key => $val) { + if (array_key_exists($val, $frequencyUnits)) { + $units[$val] = $frequencyUnits[$val]; + if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + $units[$val] = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($val); + $unit = ts('Every'); + } + } + } + $frequencyUnit = &$form->add('select', 'frequency_unit', NULL, $units, FALSE, ['aria-label' => ts('Frequency Unit'), 'class' => 'crm-select2 eight']); + } + + if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + $form->add('text', 'frequency_interval', $unit, $attributes['frequency_interval'] + ['aria-label' => ts('Every'), 'class' => 'two']); + $form->addRule('frequency_interval', ts('Frequency must be a whole number (EXAMPLE: Every 3 months).'), 'integer'); + } + else { + // make sure frequency_interval is submitted as 1 if given no choice to user. + $form->add('hidden', 'frequency_interval', 1); + } + + $form->add('checkbox', 'is_recur', $is_recur_label, NULL); + } + } diff --git a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php index 0da5a223ce209b60d7bf937941c44c165e5e2b05..daf64aa0f6c7093a75989095381cad1228fb3141 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php @@ -328,7 +328,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr [$field, $locType] = explode('-', $loc); } - if (in_array($field, $addressBlocks)) { + if (in_array($field, $addressBlocks) && !empty($value)) { if ($locType === 'Primary') { $defaultLocationType = CRM_Core_BAO_LocationType::getDefault(); $locType = $defaultLocationType->id; @@ -565,20 +565,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $this->assign('is_separate_payment', $this->isSeparateMembershipPayment()); $this->assign('priceSetID', $this->_priceSetId); - - // The concept of contributeMode is deprecated. - if ($this->_contributeMode === 'notify' || - $this->_amount <= 0.0 || $this->_params['is_pay_later'] - ) { - $contribButton = ts('Continue'); - } - elseif (!empty($this->_ccid)) { - $contribButton = ts('Make Payment'); - } - else { - $contribButton = ts('Make Contribution'); - } - $this->assign('button', $contribButton); + $contributionButtonText = $this->getPaymentProcessorObject()->getText('contributionPageButtonText', [ + 'is_payment_to_existing' => !empty($this->_ccid), + 'amount' => $this->_amount, + ]); + $this->assign('button', $contributionButtonText); $this->assign('continueText', $this->getPaymentProcessorObject()->getText('contributionPageContinueText', [ @@ -586,11 +577,17 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr 'amount' => $this->_amount, ]) ); + $this->assign('confirmText', + $this->getPaymentProcessorObject()->getText('contributionPageConfirmText', [ + 'is_payment_to_existing' => !empty($this->_ccid), + 'amount' => $this->_amount, + ]) + ); $this->addButtons([ [ 'type' => 'next', - 'name' => $contribButton, + 'name' => $contributionButtonText, 'spacing' => ' ', 'isDefault' => TRUE, ], @@ -802,22 +799,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr return $separateMembershipPayment; } - /** - * Overwrite action. - * - * Since we are only showing elements in frozen mode no help display needed. - * - * @return int - */ - public function getAction() { - if ($this->_action & CRM_Core_Action::PREVIEW) { - return CRM_Core_Action::VIEW | CRM_Core_Action::PREVIEW; - } - else { - return CRM_Core_Action::VIEW; - } - } - /** * Set default values for the form. * @@ -1047,7 +1028,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr // add these values for the recurringContrib function ,CRM-10188 $params['financial_type_id'] = $financialType->id; - $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $billingLocationID); + $contributionParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); //@todo - this is being set from the form to resolve CRM-10188 - an // eNotice caused by it not being set @ the front end @@ -1061,7 +1042,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr // We may no longer need to set params['is_recur'] - it used to be used in processRecurringContribution $params['is_recur'] = $isRecur; $params['payment_instrument_id'] = $contributionParams['payment_instrument_id'] ?? NULL; - $recurringContributionID = !$isRecur ? NULL : self::processRecurringContribution($form, $params, [ + $recurringContributionID = !$isRecur ? NULL : $this->processRecurringContribution($params, [ 'contact_id' => $contactID, 'financial_type_id' => $financialType->id, ]); @@ -1167,13 +1148,12 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr /** * Create the recurring contribution record. * - * @param CRM_Core_Form $form * @param array $params * @param array $recurParams * * @return int|null */ - public static function processRecurringContribution($form, $params, $recurParams) { + private function processRecurringContribution(array $params, array $recurParams) { $recurParams['amount'] = $params['amount'] ?? NULL; $recurParams['auto_renew'] = $params['auto_renew'] ?? NULL; @@ -1185,20 +1165,20 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr // CRM-14354: For an auto-renewing membership with an additional contribution, // if separate payments is not enabled, make sure only the membership fee recurs - if (!empty($form->_membershipBlock) - && $form->_membershipBlock['is_separate_payment'] === '0' + if (!empty($this->_membershipBlock) + && $this->_membershipBlock['is_separate_payment'] === '0' && isset($params['selectMembership']) - && $form->_values['is_allow_other_amount'] == '1' + && $this->_values['is_allow_other_amount'] == '1' // CRM-16331 - && !empty($form->_membershipTypeValues) - && !empty($form->_membershipTypeValues[$params['selectMembership']]['minimum_fee']) + && !empty($this->_membershipTypeValues) + && !empty($this->_membershipTypeValues[$params['selectMembership']]['minimum_fee']) ) { - $recurParams['amount'] = $form->_membershipTypeValues[$params['selectMembership']]['minimum_fee']; + $recurParams['amount'] = $this->_membershipTypeValues[$params['selectMembership']]['minimum_fee']; } $recurParams['is_test'] = 0; - if (($form->_action & CRM_Core_Action::PREVIEW) || - (isset($form->_mode) && ($form->_mode == 'test')) + if (($this->_action & CRM_Core_Action::PREVIEW) || + (isset($this->_mode) && ($this->_mode === 'test')) ) { $recurParams['is_test'] = 1; } @@ -1208,16 +1188,16 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $recurParams['start_date'] = date('YmdHis', strtotime($params['receive_date'])); } $recurParams['invoice_id'] = $params['invoiceID'] ?? NULL; - $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending'); + $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', 'Pending'); $recurParams['payment_processor_id'] = $params['payment_processor_id'] ?? NULL; $recurParams['is_email_receipt'] = (bool) ($params['is_email_receipt'] ?? FALSE); // We set trxn_id=invoiceID specifically for paypal IPN. It is reset this when paypal sends us the real trxn id, CRM-2991 $recurParams['processor_id'] = $recurParams['trxn_id'] = ($params['trxn_id'] ?? $params['invoiceID']); - $campaignId = $params['campaign_id'] ?? $form->_values['campaign_id'] ?? NULL; + $campaignId = $params['campaign_id'] ?? $this->_values['campaign_id'] ?? NULL; $recurParams['campaign_id'] = $campaignId; $recurring = CRM_Contribute_BAO_ContributionRecur::add($recurParams); - $form->_params['contributionRecurID'] = $recurring->id; + $this->_params['contributionRecurID'] = $recurring->id; return $recurring->id; } @@ -1458,13 +1438,11 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $membershipParams, $contactID, $premiumParams, $customFieldsFormatted, $membershipDetails, $membershipTypeIDs, $isPaidMembership, $membershipID, $isProcessSeparateMembershipTransaction, $financialTypeID, $unprocessedLineItems) { - // Assign $this to $form while we eliminate it. - $form = $this; $membershipContribution = NULL; $isTest = $membershipParams['is_test'] ?? FALSE; $errors = $paymentResults = []; - $form->_values['isMembership'] = TRUE; - $isRecurForFirstTransaction = $form->_params['is_recur'] ?? $membershipParams['is_recur'] ?? NULL; + $this->_values['isMembership'] = TRUE; + $isRecurForFirstTransaction = $this->_params['is_recur'] ?? $membershipParams['is_recur'] ?? NULL; $totalAmount = $membershipParams['amount']; @@ -1502,14 +1480,14 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $membershipContribution = $paymentResult['contribution']; // Save the contribution ID so that I can be used in email receipts // For example, if you need to generate a tax receipt for the donation only. - $form->_values['contribution_other_id'] = $membershipContribution->id; + $this->_values['contribution_other_id'] = $membershipContribution->id; } } if ($isProcessSeparateMembershipTransaction) { try { - $form->_lineItem = $unprocessedLineItems; - if (empty($form->_params['auto_renew']) && !empty($membershipParams['is_recur'])) { + $this->_lineItem = $unprocessedLineItems; + if (empty($this->_params['auto_renew']) && !empty($membershipParams['is_recur'])) { unset($membershipParams['is_recur']); } [$membershipContribution, $secondPaymentResult] = $this->processSecondaryFinancialTransaction($contactID, array_merge($membershipParams, ['skipLineItem' => 1]), @@ -1530,7 +1508,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr //@todo - why is this nested so deep? it seems like it could be just set on the calling function on the form layer if (isset($membershipParams['onbehalf']) && !empty($membershipParams['onbehalf']['member_campaign_id'])) { - $form->_params['campaign_id'] = $membershipParams['onbehalf']['member_campaign_id']; + $this->_params['campaign_id'] = $membershipParams['onbehalf']['member_campaign_id']; } //@todo it should no longer be possible for it to get to this point & membership to not be an array if (is_array($membershipTypeIDs) && !empty($membershipContributionID)) { @@ -1546,7 +1524,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } $i = 1; - $form->_params['createdMembershipIDs'] = []; + $this->_params['createdMembershipIDs'] = []; foreach ($membershipTypeIDs as $memType) { $membershipLineItems = []; if ($i < count($membershipTypeIDs)) { @@ -1558,22 +1536,22 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } $i++; $numTerms = $typesTerms[$memType] ?? 1; - $contributionRecurID = $form->_params['contributionRecurID'] ?? NULL; + $contributionRecurID = $this->_params['contributionRecurID'] ?? NULL; $membershipSource = NULL; - if (!empty($form->_params['membership_source'])) { - $membershipSource = $form->_params['membership_source']; + if (!empty($this->_params['membership_source'])) { + $membershipSource = $this->_params['membership_source']; } - elseif ((isset($form->_values['title']) && !empty($form->_values['title'])) || (isset($form->_values['frontend_title']) && !empty($form->_values['frontend_title']))) { - $title = $form->_values['frontend_title']; + elseif ((isset($this->_values['title']) && !empty($this->_values['title'])) || (isset($this->_values['frontend_title']) && !empty($this->_values['frontend_title']))) { + $title = $this->_values['frontend_title']; $membershipSource = ts('Online Contribution:') . ' ' . $title; } $isPayLater = NULL; - if (isset($form->_params)) { - $isPayLater = $form->_params['is_pay_later'] ?? NULL; + if (isset($this->_params)) { + $isPayLater = $this->_params['is_pay_later'] ?? NULL; } $memParams = [ - 'campaign_id' => $form->_params['campaign_id'] ?? ($form->_values['campaign_id'] ?? NULL), + 'campaign_id' => $this->_params['campaign_id'] ?? ($this->_values['campaign_id'] ?? NULL), ]; // @todo Move this into CRM_Member_BAO_Membership::processMembership @@ -1593,10 +1571,10 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $membershipLineItems ); - $form->set('renewal_mode', $renewalMode); + $this->set('renewal_mode', $renewalMode); if (!empty($dates)) { - $form->assign('mem_start_date', CRM_Utils_Date::customFormat($dates['start_date'], '%Y%m%d')); - $form->assign('mem_end_date', CRM_Utils_Date::customFormat($dates['end_date'], '%Y%m%d')); + $this->assign('mem_start_date', CRM_Utils_Date::customFormat($dates['start_date'], '%Y%m%d')); + $this->assign('mem_end_date', CRM_Utils_Date::customFormat($dates['end_date'], '%Y%m%d')); } if (!empty($membershipContribution)) { @@ -1609,17 +1587,17 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr civicrm_api3('MembershipPayment', 'create', $membershipPaymentParams); } if ($membership) { - CRM_Core_BAO_CustomValueTable::postProcess($form->_params, 'civicrm_membership', $membership->id, 'Membership'); - $form->_params['createdMembershipIDs'][] = $membership->id; - $form->_params['membershipID'] = $membership->id; + CRM_Core_BAO_CustomValueTable::postProcess($this->_params, 'civicrm_membership', $membership->id, 'Membership'); + $this->_params['createdMembershipIDs'][] = $membership->id; + $this->_params['membershipID'] = $membership->id; //CRM-15232: Check if membership is created and on the basis of it use //membership receipt template to send payment receipt - $form->_values['isMembership'] = TRUE; + $this->_values['isMembership'] = TRUE; } } - if ($form->_priceSetId && !empty($form->_useForMember) && !empty($form->_lineItem)) { - foreach ($form->_lineItem[$form->_priceSetId] as & $priceFieldOp) { + if ($this->_priceSetId && !empty($this->_useForMember) && !empty($this->_lineItem)) { + foreach ($this->_lineItem[$this->_priceSetId] as & $priceFieldOp) { if (!empty($priceFieldOp['membership_type_id']) && $membership->membership_type_id == $priceFieldOp['membership_type_id']) { $membershipOb = $membership; $priceFieldOp['start_date'] = $membershipOb->start_date ? CRM_Utils_Date::formatDateOnlyLong($membershipOb->start_date) : '-'; @@ -1629,8 +1607,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $priceFieldOp['start_date'] = $priceFieldOp['end_date'] = 'N/A'; } } - $form->_values['lineItem'] = $form->_lineItem; - $form->assign('lineItem', $form->_lineItem); + $this->_values['lineItem'] = $this->_lineItem; + $this->assign('lineItem', $this->_lineItem); } } @@ -1640,25 +1618,25 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr } if (isset($membershipContributionID)) { - $form->_values['contribution_id'] = $membershipContributionID; + $this->_values['contribution_id'] = $membershipContributionID; } - if (empty($form->_params['is_pay_later']) && $form->_paymentProcessor) { + if (empty($this->_params['is_pay_later']) && $this->_paymentProcessor) { // the is_monetary concept probably should be deprecated as it can be calculated from // the existence of 'amount' & seems fragile. - if ($form->_values['is_monetary'] && $form->_amount > 0.0 && !$form->_params['is_pay_later']) { + if ($this->_values['is_monetary'] && $this->_amount > 0.0 && !$this->_params['is_pay_later']) { // call postProcess hook before leaving - $form->postProcessHook(); + $this->postProcessHook(); } - $payment = Civi\Payment\System::singleton()->getByProcessor($form->_paymentProcessor); + $payment = Civi\Payment\System::singleton()->getByProcessor($this->_paymentProcessor); // The contribution_other_id is effectively the ID for the only contribution or the non-membership contribution. // Since we have called the membership contribution (in a 2 contribution scenario) this is out // primary-contribution compared to that - but let's face it - it's all just too hard & confusing at the moment! - $paymentParams = array_merge($form->_params, ['contributionID' => $form->_values['contribution_other_id']]); + $paymentParams = array_merge($this->_params, ['contributionID' => $this->_values['contribution_other_id']]); // CRM-19792 : set necessary fields for payment processor - CRM_Core_Payment_Form::mapParams($form->_bltID, $paymentParams, $paymentParams, TRUE); + CRM_Core_Payment_Form::mapParams($this->_bltID, $paymentParams, $paymentParams, TRUE); // If this is a single membership-related contribution, it won't have // be performed yet, so do it now. @@ -1696,9 +1674,9 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr return; } - $emailValues = array_merge($membershipParams, $form->_values); + $emailValues = array_merge($membershipParams, $this->_values); $emailValues['membership_assign'] = 1; - $emailValues['useForMember'] = !empty($form->_useForMember); + $emailValues['useForMember'] = !empty($this->_useForMember); // Finally send an email receipt for pay-later scenario (although it might sometimes be caught above!) if ($totalAmount == 0) { @@ -1710,7 +1688,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr // also it reset any payment processor selection result into pending free membership // so its a kind of hack to complete free membership at this point since there is no $form->_paymentProcessor info if (!empty($membershipContribution) && !is_a($membershipContribution, 'CRM_Core_Error')) { - if (empty($form->_paymentProcessor)) { + if (empty($this->_paymentProcessor)) { // @todo this can maybe go now we are setting payment_processor_id = 0 more reliably. $paymentProcessorIDs = explode(CRM_Core_DAO::VALUE_SEPARATOR, $this->_values['payment_processor'] ?? NULL); $this->_paymentProcessor['id'] = $paymentProcessorIDs[0]; diff --git a/civicrm/CRM/Contribute/Form/Contribution/Main.php b/civicrm/CRM/Contribute/Form/Contribution/Main.php index e05211d3f5d3be864f92496594f4418aa918617a..46cf7e28c06184f0530917481e2ea8043a4a33ab 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Main.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Main.php @@ -126,14 +126,14 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu // remove component related fields foreach ($this->_fields as $name => $fieldInfo) { //don't set custom data Used for Contribution (CRM-1344) - if (substr($name, 0, 7) == 'custom_') { + if (substr($name, 0, 7) === 'custom_') { $id = substr($name, 7); if (!CRM_Core_BAO_CustomGroup::checkCustomField($id, ['Contribution', 'Membership'])) { continue; } // ignore component fields } - elseif (array_key_exists($name, $contribFields) || (substr($name, 0, 11) == 'membership_') || (substr($name, 0, 13) == 'contribution_')) { + elseif (array_key_exists($name, $contribFields) || (substr($name, 0, 11) === 'membership_') || (substr($name, 0, 13) == 'contribution_')) { continue; } $fields[$name] = $fieldInfo; @@ -146,8 +146,9 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $billingDefaults = $this->getProfileDefaults('Billing', $contactID); $this->_defaults = array_merge($this->_defaults, $billingDefaults); } - if (!empty($this->_ccid) && !empty($this->_pendingAmount)) { - $this->_defaults['total_amount'] = CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($this->_pendingAmount); + $balance = $this->getContributionBalance(); + if ($balance) { + $this->_defaults['total_amount'] = CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($balance); } /* @@ -291,7 +292,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu // CRM-18399: used by template to pass pre profile id as a url arg $this->assign('custom_pre_id', $this->_values['custom_pre_id']); - $this->buildComponentForm($this->_id, $this); + $this->buildComponentForm(); } // Build payment processor form @@ -349,12 +350,12 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu // build price set form. $this->set('priceSetId', $this->_priceSetId); if (empty($this->_ccid)) { - CRM_Price_BAO_PriceSet::buildPriceSet($this, $this->getFormContext()); + $this->buildPriceSet($this, $this->getFormContext()); } if ($this->_values['is_monetary'] && $this->_values['is_recur'] && empty($this->_values['pledge_id']) ) { - self::buildRecur($this); + $this->buildRecur(); } } @@ -366,7 +367,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu //don't build pledge block when mid is passed if (!$this->getRenewalMembershipID() && empty($this->_ccid)) { if (CRM_Core_Component::isEnabled('CiviPledge') && !empty($this->_values['pledge_block_id'])) { - CRM_Pledge_BAO_PledgeBlock::buildPledgeBlock($this); + $this->buildPledgeBlock(); } } @@ -401,10 +402,9 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu CRM_Core_BAO_CMSUser::buildForm($this, $profileID, TRUE); } } - if ($this->_pcpId && empty($this->_ccid)) { + if ($this->getPcpID() && empty($this->_ccid)) { if (CRM_PCP_BAO_PCP::displayName($this->_pcpId)) { $pcp_supporter_text = CRM_PCP_BAO_PCP::getPcpSupporterText($this->_pcpId, $this->_id, 'contribute'); - $this->assign('pcpSupporterText', $pcp_supporter_text); } $prms = ['id' => $this->_pcpId]; CRM_Core_DAO::commonRetrieve('CRM_PCP_DAO_PCP', $prms, $pcpInfo); @@ -420,6 +420,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->addField('pcp_personal_note', ['entity' => 'ContributionSoft', 'context' => 'create', 'style' => 'height: 3em; width: 40em;']); } } + $this->assign('pcpSupporterText', $pcp_supporter_text ?? NULL); if (empty($this->_values['fee']) && empty($this->_ccid)) { throw new CRM_Core_Exception(ts('This page does not have any price fields configured or you may not have permission for them. Please contact the site administrator for more details.')); } @@ -468,6 +469,122 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->addFormRule(['CRM_Contribute_Form_Contribution_Main', 'formRule'], $this); } + /** + * Build the price set form. + * + * @param CRM_Core_Form $form + * @param string|null $component + * + * @return void + * @throws \CRM_Core_Exception + */ + private function buildPriceSet(&$form, $component = NULL) { + $validPriceFieldIds = array_keys($this->getPriceFieldMetaData()); + $form->assign('priceSet', $form->_priceSet); + + // @todo - this hook wrangling can be done earlier if we set the form on $this->>order. + $feeBlock = &$form->_values['fee']; + // Call the buildAmount hook. + CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock); + + // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); + $checklifetime = FALSE; + foreach ($this->getPriceFieldMetaData() as $id => $field) { + if ($field['visibility_id:name'] === 'public' || + ($field['visibility_id:name'] === 'admin' && $adminFieldVisible) + ) { + $options = $field['options'] ?? NULL; + if ($this->_membershipContactID && $options) { + $contactsLifetimeMemberships = CRM_Member_BAO_Membership::getAllContactMembership($this->_membershipContactID, FALSE, TRUE); + $contactsLifetimeMembershipTypes = array_column($contactsLifetimeMemberships, 'membership_type_id'); + $memTypeIdsInPriceField = array_column($options, 'membership_type_id'); + $isCurrentMember = (bool) array_intersect($memTypeIdsInPriceField, $contactsLifetimeMembershipTypes); + $checklifetime = $checklifetime ?: $isCurrentMember; + } + + if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { + continue; + } + if (!CRM_Core_Permission::check('edit contributions')) { + foreach ($options as $key => $currentOption) { + if ($currentOption['visibility_id:name'] === 'admin') { + unset($options[$key]); + } + } + } + if (!empty($options)) { + $label = (!empty($this->_membershipBlock) && $field['name'] === 'contribution_amount') ? ts('Additional Contribution') : $field['label']; + $extra = []; + $fieldID = (int) $field['id']; + if ($fieldID === $this->getPriceFieldOtherID()) { + $extra = [ + 'onclick' => 'useAmountOther("price_' . $this->getPriceFieldMainID() . '");', + 'autocomplete' => 'off', + ]; + } + if ($fieldID === $this->getPriceFieldMainID()) { + $extra = [ + 'onclick' => 'clearAmountOther("price_' . $this->getPriceFieldOtherID() . '");', + ]; + } + + CRM_Price_BAO_PriceField::addQuickFormElement($form, + 'price_' . $fieldID, + $field['id'], + FALSE, + $field['is_required'] ?? FALSE, + $label, + $options, + [], + $extra + ); + } + } + } + $form->assign('hasExistingLifetimeMembership', $checklifetime); + } + + /** + * Get the idea of the other amount field if the form is configured to offer it. + * + * The other amount field is an alternative to the configured radio options, + * specific to this form. + * + * @return int|null + */ + private function getPriceFieldOtherID(): ?int { + if (!$this->isQuickConfig()) { + return NULL; + } + foreach ($this->order->getPriceFieldsMetadata() as $field) { + if ($field['name'] === 'other_amount') { + return (int) $field['id']; + } + } + return NULL; + } + + /** + * Get the idea of the other amount field if the form is configured to offer an other amount. + * + * The other amount field is an alternative to the configured radio options, + * specific to this form. + * + * @return int|null + */ + private function getPriceFieldMainID(): ?int { + if (!$this->isQuickConfig() || !$this->getPriceFieldOtherID()) { + return NULL; + } + foreach ($this->order->getPriceFieldsMetadata() as $field) { + if ($field['name'] === 'contribution_amount') { + return (int) $field['id']; + } + } + return NULL; + } + /** * Build Membership Block in Contribution Pages. * @todo this was shared on CRM_Contribute_Form_ContributionBase but we are refactoring and simplifying for each @@ -480,7 +597,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu */ private function buildMembershipBlock() { $cid = $this->_membershipContactID; - $isTest = (bool) ($this->_action & CRM_Core_Action::PREVIEW); + $isTest = (bool) ($this->getAction() & CRM_Core_Action::PREVIEW); $separateMembershipPayment = FALSE; $this->addOptionalQuickFormElement('auto_renew'); if ($this->_membershipBlock) { @@ -495,7 +612,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $separateMembershipPayment = $this->_membershipBlock['is_separate_payment'] ?? NULL; - foreach ($this->_priceSet['fields'] as $pField) { + foreach ($this->getPriceFieldMetaData() as $pField) { if (empty($pField['options'])) { continue; } @@ -571,7 +688,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu if ($membership["membership_type_id.duration_unit:name"] === 'lifetime') { unset($radio[$memType['id']]); unset($radioOptAttrs[$memType['id']]); - $this->assign('islifetime', TRUE); + $this->assign('hasExistingLifetimeMembership', TRUE); continue; } $this->assign('renewal_mode', TRUE); @@ -622,15 +739,14 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu /** * Build elements to collect information for recurring contributions. * - * - * @param CRM_Core_Form $form + * Previously shared function. */ - public static function buildRecur(&$form) { + private function buildRecur(): void { + $form = $this; $attributes = CRM_Core_DAO::getAttribute('CRM_Contribute_DAO_ContributionRecur'); - $className = get_class($form); - $form->assign('is_recur_interval', CRM_Utils_Array::value('is_recur_interval', $form->_values)); - $form->assign('is_recur_installments', CRM_Utils_Array::value('is_recur_installments', $form->_values)); + $form->assign('is_recur_interval', $this->getContributionPageValue('is_recur_interval')); + $form->assign('is_recur_installments', $this->getContributionPageValue('is_recur_installments')); $paymentObject = $form->getVar('_paymentObject'); if ($paymentObject) { $form->assign('recurringHelpText', $paymentObject->getText('contributionPageRecurringHelp', [ @@ -641,13 +757,6 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $frUnits = $form->_values['recur_frequency_unit'] ?? NULL; $frequencyUnits = CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, TRUE); - if (empty($frUnits) && - $className == 'CRM_Contribute_Form_Contribution' - ) { - $frUnits = implode(CRM_Core_DAO::VALUE_SEPARATOR, - CRM_Core_OptionGroup::values('recur_frequency_units', FALSE, FALSE, FALSE, NULL, 'value') - ); - } $unitVals = explode(CRM_Core_DAO::VALUE_SEPARATOR, $frUnits); @@ -668,7 +777,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu if (count($unitVals) == 1) { $form->assign('one_frequency_unit', TRUE); $form->add('hidden', 'frequency_unit', $unitVals[0]); - if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + if (!empty($form->_values['is_recur_interval'])) { $unit = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($unitVals[0]); $form->assign('frequency_unit', $unit); } @@ -685,7 +794,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu foreach ($unitVals as $key => $val) { if (array_key_exists($val, $frequencyUnits)) { $units[$val] = $frequencyUnits[$val]; - if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + if (!empty($form->_values['is_recur_interval'])) { $units[$val] = CRM_Contribute_BAO_Contribution::getUnitLabelWithPlural($val); $unit = ts('Every'); } @@ -694,7 +803,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $frequencyUnit = &$form->add('select', 'frequency_unit', NULL, $units, FALSE, ['aria-label' => ts('Frequency Unit'), 'class' => 'crm-select2 eight']); } - if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { + if (!empty($form->_values['is_recur_interval'])) { $form->add('text', 'frequency_interval', $unit, $attributes['frequency_interval'] + ['aria-label' => ts('Every'), 'class' => 'two']); $form->addRule('frequency_interval', ts('Frequency must be a whole number (EXAMPLE: Every 3 months).'), 'integer'); } @@ -720,7 +829,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu */ public static function formRule($fields, $files, $self) { $errors = []; - $amount = self::computeAmount($fields, $self->_values); + $amount = $self->computeAmount($fields, $self->_values); if (!empty($fields['auto_renew']) && empty($fields['payment_processor_id'])) { $errors['auto_renew'] = ts('You cannot have auto-renewal on if you are paying later.'); } @@ -912,7 +1021,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } if (isset($fields['selectProduct']) && - $fields['selectProduct'] != 'no_thanks' + $fields['selectProduct'] !== 'no_thanks' ) { $productDAO = new CRM_Contribute_DAO_Product(); $productDAO->id = $fields['selectProduct']; @@ -1032,7 +1141,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu * * @return int|mixed|null|string */ - public static function computeAmount($params, $formValues) { + private function computeAmount($params, $formValues) { $amount = 0; // First clean up the other amount field if present. if (isset($params['amount_other'])) { @@ -1135,13 +1244,13 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } } } - - if (!empty($this->_ccid) && !empty($this->_pendingAmount)) { - $params['amount'] = $this->_pendingAmount; + $balance = $this->getContributionBalance(); + if ($balance) { + $params['amount'] = $balance; } else { // from here on down, $params['amount'] holds a monetary value (or null) rather than an option ID - $params['amount'] = self::computeAmount($params, $this->_values); + $params['amount'] = $this->computeAmount($params, $this->_values); } $params['separate_amount'] = $params['amount']; @@ -1181,11 +1290,11 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->set('amount_level', CRM_Utils_Array::value('amount_level', $params)); } - $priceSetId = $params['priceSetId'] ?? NULL; + $priceSetID = $this->getPriceSetID(); if (!empty($this->_ccid)) { $this->set('lineItem', [$this->getPriceSetID() => $this->getExistingContributionLineItems()]); } - elseif ($priceSetId) { + elseif ($priceSetID) { $lineItem = []; if ($this->isQuickConfig()) { foreach ($this->_values['fee'] as $key => & $val) { @@ -1205,17 +1314,17 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } if ($this->_membershipBlock) { - $this->processAmountAndGetAutoRenew($this->_values['fee'], $params, $lineItem[$priceSetId], $priceSetId); + $this->processAmountAndGetAutoRenew($this->_values['fee'], $params, $lineItem[$priceSetID]); } else { - CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetId], $priceSetId); + CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetID], $priceSetID); } if ($proceFieldAmount) { - $lineItem[$params['priceSetId']][$fieldOption]['unit_price'] = $proceFieldAmount; - $lineItem[$params['priceSetId']][$fieldOption]['line_total'] = $proceFieldAmount; - if (isset($lineItem[$params['priceSetId']][$fieldOption]['tax_amount'])) { - $proceFieldAmount += $lineItem[$params['priceSetId']][$fieldOption]['tax_amount']; + $lineItem[$priceSetID][$fieldOption]['unit_price'] = $proceFieldAmount; + $lineItem[$priceSetID][$fieldOption]['line_total'] = $proceFieldAmount; + if (isset($lineItem[$priceSetID][$fieldOption]['tax_amount'])) { + $proceFieldAmount += $lineItem[$priceSetID][$fieldOption]['tax_amount']; } if (!$this->_membershipBlock['is_separate_payment']) { //require when separate membership not used @@ -1337,24 +1446,11 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } } $this->assign('dummyTitle', $dummyTitle); - + $this->assign('pendingAmount', $this->getContributionBalance()); if (empty($this->getExistingContributionID())) { return; } - if (!$this->getContactID()) { - CRM_Core_Error::statusBounce(ts("Returning since there is no contact attached to this contribution id.")); - } - - $paymentBalance = CRM_Contribute_BAO_Contribution::getContributionBalance($this->_ccid); - //bounce if the contribution is not pending. - if ((float) $paymentBalance <= 0) { - CRM_Core_Error::statusBounce(ts("Returning since contribution has already been handled.")); - } - if (!empty($paymentBalance)) { - $this->_pendingAmount = $paymentBalance; - $this->assign('pendingAmount', $this->_pendingAmount); - } - + // @todo - all this stuff is likely obsolete. if ($taxAmount = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', $this->_ccid, 'tax_amount')) { $this->assign('taxAmount', $taxAmount); } @@ -1365,6 +1461,29 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->assign('priceSetID', $this->getPriceSetID()); } + /** + * Get the balance amount if an existing contribution is being paid. + * + * @return float|null + * + * @throws \CRM_Core_Exception + */ + private function getContributionBalance(): ?float { + if (empty($this->getExistingContributionID())) { + return NULL; + } + if (!$this->getContactID()) { + CRM_Core_Error::statusBounce(ts('Returning since there is no contact attached to this contribution id.')); + } + + $paymentBalance = CRM_Contribute_BAO_Contribution::getContributionBalance($this->_ccid); + //bounce if the contribution is not pending. + if ((float) $paymentBalance <= 0) { + CRM_Core_Error::statusBounce(ts('Returning since contribution has already been handled.')); + } + return $paymentBalance; + } + /** * Function for unit tests on the postProcess function. * @@ -1386,7 +1505,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu * * @param array $params * - * @return mixed + * @return bool * @throws \CRM_Core_Exception */ protected function hasSeparateMembershipPaymentAmount($params) { @@ -1411,4 +1530,354 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu return NULL; } + /** + * Add onbehalf/honoree profile fields and native module fields. + * + * @throws \CRM_Core_Exception + */ + private function buildComponentForm(): void { + + foreach (['soft_credit', 'on_behalf'] as $module) { + if ($module === 'soft_credit') { + $this->addSoftCreditFields(); + } + else { + $this->addOnBehalfFields(); + } + } + + } + + /** + * Add soft credit fields. + * + * @throws \CRM_Core_Exception + */ + private function addSoftCreditFields(): void { + if (!empty($this->_values['honoree_profile_id'])) { + if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_values['honoree_profile_id'], 'is_active')) { + CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the selected honoree profile is either disabled or not found.')); + } + + $profileContactType = CRM_Core_BAO_UFGroup::getContactType($this->_values['honoree_profile_id']); + $requiredProfileFields = [ + 'Individual' => ['first_name', 'last_name'], + 'Organization' => ['organization_name', 'email'], + 'Household' => ['household_name', 'email'], + ]; + $validProfile = CRM_Core_BAO_UFGroup::checkValidProfile($this->_values['honoree_profile_id'], $requiredProfileFields[$profileContactType]); + if (!$validProfile) { + CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the required fields of the selected honoree profile are disabled or doesn\'t exist.')); + } + + $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE); + + // radio button for Honor Type + foreach ($this->_values['soft_credit_types'] as $value) { + $honorTypes[$value] = $softCreditTypes[$value]; + } + $this->addRadio('soft_credit_type_id', NULL, $honorTypes, ['allowClear' => TRUE]); + + $honoreeProfileFields = CRM_Core_BAO_UFGroup::getFields( + $this->_values['honoree_profile_id'], FALSE, + NULL, NULL, + NULL, FALSE, + NULL, TRUE, + NULL, CRM_Core_Permission::CREATE + ); + + // add the form elements + foreach ($honoreeProfileFields as $name => $field) { + // If soft credit type is not chosen then make omit requiredness from honoree profile fields + if (count($this->_submitValues) && + empty($this->_submitValues['soft_credit_type_id']) && + !empty($field['is_required']) + ) { + $field['is_required'] = FALSE; + } + CRM_Core_BAO_UFGroup::buildProfile($this, $field, CRM_Profile_Form::MODE_CREATE, NULL, FALSE, FALSE, NULL, 'honor'); + } + } + $this->assign('honoreeProfileFields', $honoreeProfileFields ?? NULL); + $this->assign('honor_block_title', $this->_values['honor_block_title'] ?? NULL); + $this->assign('honor_block_text', $this->_values['honor_block_text'] ?? NULL); + } + + /** + * Add the on behalf fields. + * + * @throws \CRM_Core_Exception + */ + private function addOnBehalfFields(): void { + $contactID = $this->getContactID(); + if (!empty($this->_values['onbehalf_profile_id'])) { + + if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $this->_values['onbehalf_profile_id'], 'is_active')) { + CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of an organization and the selected onbehalf profile is either disabled or not found.')); + } + + $member = CRM_Member_BAO_Membership::getMembershipBlock($this->getContributionPageID()); + if (empty($member['is_active'])) { + $msg = ts('Mixed profile not allowed for on behalf of registration/sign up.'); + $onBehalfProfile = CRM_Core_BAO_UFGroup::profileGroups($this->_values['onbehalf_profile_id']); + foreach ( + [ + 'Individual', + 'Organization', + 'Household', + ] as $contactType + ) { + if (in_array($contactType, $onBehalfProfile) && + (in_array('Membership', $onBehalfProfile) || + in_array('Contribution', $onBehalfProfile) + ) + ) { + CRM_Core_Error::statusBounce($msg); + } + } + } + + if ($contactID) { + // retrieve all permissioned organizations of contact $contactID + $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($contactID, NULL, NULL, 'Organization'); + + if (count($organizations)) { + // Related org url - pass checksum if needed + $args = [ + 'ufID' => $this->_values['onbehalf_profile_id'], + 'cid' => '', + ]; + if (!empty($_GET['cs'])) { + $args = [ + 'ufID' => $this->_values['onbehalf_profile_id'], + 'uid' => $this->_contactID, + 'cs' => $_GET['cs'], + 'cid' => '', + ]; + } + $locDataURL = CRM_Utils_System::url('civicrm/ajax/permlocation', $args, FALSE, NULL, FALSE); + } + if (count($organizations) > 0) { + $this->add('select', 'onbehalfof_id', '', CRM_Utils_Array::collect('name', $organizations)); + + $orgOptions = [ + 0 => ts('Select an existing organization'), + 1 => ts('Enter a new organization'), + ]; + $this->addRadio('org_option', ts('options'), $orgOptions); + $this->setDefaults(['org_option' => 0]); + } + } + + if (!empty($this->_values['is_for_organization'])) { + if ((int) $this->_values['is_for_organization'] !== 2) { + $this->addElement('checkbox', 'is_for_organization', + $this->_values['for_organization'], + NULL + ); + } + } + + $profileFields = CRM_Core_BAO_UFGroup::getFields( + $this->_values['onbehalf_profile_id'], + FALSE, CRM_Core_Action::VIEW, NULL, + NULL, FALSE, NULL, FALSE, NULL, + CRM_Core_Permission::CREATE, NULL + ); + + $fieldTypes = ['Contact', 'Organization']; + if (!empty($this->_membershipBlock)) { + $fieldTypes = array_merge($fieldTypes, ['Membership']); + } + $contactSubType = CRM_Contact_BAO_ContactType::subTypes('Organization'); + $fieldTypes = array_merge($fieldTypes, $contactSubType); + + foreach ($profileFields as $name => $field) { + if (in_array($field['field_type'], $fieldTypes)) { + [$prefixName, $index] = CRM_Utils_System::explode('-', $name, 2); + if (in_array($prefixName, ['organization_name', 'email']) && empty($field['is_required'])) { + $field['is_required'] = 1; + } + if (count($this->_submitValues) && + empty($this->_submitValues['is_for_organization']) && + $this->_values['is_for_organization'] == 1 && + !empty($field['is_required']) + ) { + $field['is_required'] = FALSE; + } + CRM_Core_BAO_UFGroup::buildProfile($this, $field, NULL, NULL, FALSE, 'onbehalf', NULL, 'onbehalf'); + } + } + } + $this->assign('onBehalfRequired', (int) ($this->_values['is_for_organization'] ?? 0) === 2); + $this->assign('locDataURL', $locDataURL ?? NULL); + $this->assign('onBehalfOfFields', $profileFields ?? NULL); + $this->assign('fieldSetTitle', empty($this->_values['onbehalf_profile_id']) ? NULL : CRM_Core_BAO_UFGroup::getFrontEndTitle($this->_values['onbehalf_profile_id'])); + // @todo - this is horrible - we are accessing a value in the POST rather than via QF. _submitValues is 'raw' + $this->assign('submittedOnBehalf', $this->_submitValues['onbehalfof_id'] ?? NULL); + $this->assign('submittedOnBehalfInfo', empty($this->_submitValues['onbehalf']) ? NULL : json_encode(str_replace('"', '\"', $this->_submitValues['onbehalf']), JSON_HEX_APOS)); + } + + /** + * Build Pledge Block in Contribution Pages. + * + * @throws \CRM_Core_Exception + */ + private function buildPledgeBlock() { + //build pledge payment fields. + if (!empty($this->_values['pledge_id'])) { + //get all payments required details. + $allPayments = []; + $returnProperties = [ + 'status_id', + 'scheduled_date', + 'scheduled_amount', + 'currency', + ]; + CRM_Core_DAO::commonRetrieveAll('CRM_Pledge_DAO_PledgePayment', 'pledge_id', + $this->_values['pledge_id'], $allPayments, $returnProperties + ); + // get all status + $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); + + $nextPayment = []; + $isNextPayment = FALSE; + $overduePayments = []; + foreach ($allPayments as $payID => $value) { + if ($allStatus[$value['status_id']] == 'Overdue') { + $overduePayments[$payID] = [ + 'id' => $payID, + 'scheduled_amount' => CRM_Utils_Rule::cleanMoney($value['scheduled_amount']), + 'scheduled_amount_currency' => $value['currency'], + 'scheduled_date' => CRM_Utils_Date::customFormat($value['scheduled_date'], + '%B %d' + ), + ]; + } + elseif (!$isNextPayment && + $allStatus[$value['status_id']] == 'Pending' + ) { + // get the next payment. + $nextPayment = [ + 'id' => $payID, + 'scheduled_amount' => CRM_Utils_Rule::cleanMoney($value['scheduled_amount']), + 'scheduled_amount_currency' => $value['currency'], + 'scheduled_date' => CRM_Utils_Date::customFormat($value['scheduled_date'], + '%B %d' + ), + ]; + $isNextPayment = TRUE; + } + } + + // build check box array for payments. + $payments = []; + if (!empty($overduePayments)) { + foreach ($overduePayments as $id => $payment) { + $label = ts("%1 - due on %2 (overdue)", [ + 1 => CRM_Utils_Money::format(CRM_Utils_Array::value('scheduled_amount', $payment), CRM_Utils_Array::value('scheduled_amount_currency', $payment)), + 2 => $payment['scheduled_date'] ?? NULL, + ]); + $paymentID = $payment['id'] ?? NULL; + $payments[] = $this->createElement('checkbox', $paymentID, NULL, $label, ['amount' => CRM_Utils_Array::value('scheduled_amount', $payment)]); + } + } + + if (!empty($nextPayment)) { + $label = ts("%1 - due on %2", [ + 1 => CRM_Utils_Money::format(CRM_Utils_Array::value('scheduled_amount', $nextPayment), CRM_Utils_Array::value('scheduled_amount_currency', $nextPayment)), + 2 => $nextPayment['scheduled_date'] ?? NULL, + ]); + $paymentID = $nextPayment['id'] ?? NULL; + $payments[] = $this->createElement('checkbox', $paymentID, NULL, $label, ['amount' => CRM_Utils_Array::value('scheduled_amount', $nextPayment)]); + } + // give error if empty or build form for payment. + if (empty($payments)) { + throw new CRM_Core_Exception(ts('Oops. It looks like there is no valid payment status for online payment.')); + } + $this->addGroup($payments, 'pledge_amount', ts('Make Pledge Payment(s):'), '<br />'); + } + else { + $pledgeBlock = []; + + $dao = new CRM_Pledge_DAO_PledgeBlock(); + $dao->entity_table = 'civicrm_contribution_page'; + $dao->entity_id = $this->getContributionPageID(); + if ($dao->find(TRUE)) { + CRM_Core_DAO::storeValues($dao, $pledgeBlock); + } + // build form for pledge creation. + $pledgeOptions = [ + '0' => ts('I want to make a one-time contribution'), + '1' => ts('I pledge to contribute this amount every'), + ]; + $this->addRadio('is_pledge', ts('Pledge Frequency Interval'), $pledgeOptions, + NULL, ['<br/>'] + ); + $this->addElement('text', 'pledge_installments', ts('Installments'), ['size' => 3, 'aria-label' => ts('Installments')]); + + if (!empty($pledgeBlock['is_pledge_interval'])) { + $this->addElement('text', 'pledge_frequency_interval', NULL, ['size' => 3, 'aria-label' => ts('Frequency Intervals')]); + } + else { + $this->add('hidden', 'pledge_frequency_interval', 1); + } + // Frequency unit drop-down label suffixes switch from *ly to *(s) + $freqUnitVals = explode(CRM_Core_DAO::VALUE_SEPARATOR, $pledgeBlock['pledge_frequency_unit']); + $freqUnits = []; + $frequencyUnits = CRM_Core_OptionGroup::values('recur_frequency_units'); + foreach ($freqUnitVals as $key => $val) { + if (array_key_exists($val, $frequencyUnits)) { + $freqUnits[$val] = !empty($pledgeBlock['is_pledge_interval']) ? "{$frequencyUnits[$val]}(s)" : $frequencyUnits[$val]; + } + } + $this->addElement('select', 'pledge_frequency_unit', NULL, $freqUnits, ['aria-label' => ts('Frequency Units')]); + // CRM-18854 + if (!empty($pledgeBlock['is_pledge_start_date_visible'])) { + if (!empty($pledgeBlock['pledge_start_date'])) { + $defaults = []; + $date = (array) json_decode($pledgeBlock['pledge_start_date']); + foreach ($date as $field => $value) { + switch ($field) { + case 'contribution_date': + $this->add('datepicker', 'start_date', ts('First installment payment'), [], FALSE, ['time' => FALSE]); + $paymentDate = $value = date('Y-m-d'); + $defaults['start_date'] = $value; + $this->assign('is_date', TRUE); + break; + + case 'calendar_date': + $this->add('datepicker', 'start_date', ts('First installment payment'), [], FALSE, ['time' => FALSE]); + $defaults['start_date'] = $value; + $this->assign('is_date', TRUE); + $paymentDate = $value; + break; + + case 'calendar_month': + $month = CRM_Utils_Date::getCalendarDayOfMonth(); + $this->add('select', 'start_date', ts('Day of month installments paid'), $month); + $paymentDate = CRM_Pledge_BAO_Pledge::getPaymentDate($value); + $defaults['start_date'] = $paymentDate; + break; + + default: + break; + + } + $this->setDefaults($defaults); + $this->assign('start_date_display', $paymentDate); + $this->assign('start_date_editable', FALSE); + if (!empty($pledgeBlock['is_pledge_start_date_editable'])) { + $this->assign('start_date_editable', TRUE); + if ($field === 'calendar_month') { + $this->assign('is_date', FALSE); + $this->setDefaults(['start_date' => $value]); + } + } + } + } + } + } + } + } diff --git a/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php b/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php index 60e14469b52b1f1b427d75d81d95593c81220307..9c0a93bccf5c7d61cc24216f2c36b6172b2ce21c 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php +++ b/civicrm/CRM/Contribute/Form/Contribution/ThankYou.php @@ -78,6 +78,8 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont /** * Build the form object. + * + * @throws \CRM_Core_Exception */ public function buildQuickForm() { // FIXME: Some of this code is identical to Confirm.php and should be broken out into a shared function @@ -109,10 +111,10 @@ class CRM_Contribute_Form_Contribution_ThankYou extends CRM_Contribute_Form_Cont } } } - $this->assign('getTaxDetails', $getTaxDetails); - $this->assign('taxTerm', CRM_Invoicing_Utils::getTaxTerm()); - $this->assign('totalTaxAmount', $params['tax_amount']); } + $this->assign('getTaxDetails', (bool) $this->order->getTotalTaxAmount()); + $this->assign('totalTaxAmount', $this->order->getTotalTaxAmount()); + $this->assign('taxTerm', \Civi::settings()->get('tax_term')); if ($this->_priceSetId && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config')) { $this->assign('lineItem', $tplLineItems); diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php index 95ff6b6a4d6f5b5d4d87feae33d8d0c5b012dcde..31b76b29f8c42e44bccdc58c6d525047ee0c3266 100644 --- a/civicrm/CRM/Contribute/Form/ContributionBase.php +++ b/civicrm/CRM/Contribute/Form/ContributionBase.php @@ -15,11 +15,14 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\Api4\PriceSet; + /** * This class generates form components for processing a contribution. */ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { use CRM_Financial_Form_FrontEndPaymentFormTrait; + use CRM_Contribute_Form_ContributeFormTrait; /** * The id of the contribution page that we are processing. @@ -114,6 +117,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { * Pcp id * * @var int + * + * @internal use getPcpID(). */ public $_pcpId; @@ -268,11 +273,41 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { else { $this->_priceSetId = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->_id); } + if (!$this->_priceSetId) { + if ($this->isShowMembershipBlock()) { + $this->_priceSetId = PriceSet::get(FALSE) + ->addWhere('name', '=', 'default_membership_type_amount') + ->execute() + ->first()['id']; + } + } $this->set('priceSetId', $this->_priceSetId); } return $this->_priceSetId ?: NULL; } + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @return int + */ + public function getContributionPageID(): int { + if (!$this->_id) { + /** @noinspection PhpUnhandledExceptionInspection */ + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + if (!$this->_id) { + // seems like the session is corrupted and/or we lost the id trail + // lets just bump this to a regular session error and redirect user to main page + $this->controller->invalidKeyRedirect(); + } + } + return $this->_id; + } + /** * Set variables up before form is built. * @@ -282,13 +317,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { public function preProcess() { // current contribution page id - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + $this->getContributionPageID(); $this->_ccid = CRM_Utils_Request::retrieve('ccid', 'Positive', $this); - if (!$this->_id) { - // seems like the session is corrupted and/or we lost the id trail - // lets just bump this to a regular session error and redirect user to main page - $this->controller->invalidKeyRedirect(); - } $this->_emailExists = $this->get('emailExists'); $this->_contactID = $this->_membershipContactID = $this->getContactID(); @@ -354,6 +384,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { if ($this->getPriceSetID()) { $this->order = new CRM_Financial_BAO_Order(); $this->order->setPriceSetID($this->getPriceSetID()); + $this->order->setIsExcludeExpiredFields(TRUE); + $this->order->setPriceSelectionFromUnfilteredInput($this->getSubmittedValues()); } else { CRM_Core_Error::deprecatedFunctionWarning('forms require a price set ID'); @@ -366,11 +398,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->_fields = []; CRM_Contribute_BAO_ContributionPage::setValues($this->_id, $this->_values); - if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() - && !CRM_Core_Permission::check('add contributions of type ' . CRM_Contribute_PseudoConstant::financialType($this->_values['financial_type_id'])) - ) { - CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); - } if (empty($this->_values['is_active'])) { throw new CRM_Contribute_Exception_InactiveContributionPageException(ts('The page you requested is currently unavailable.'), $this->_id); } @@ -455,10 +482,9 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->set('membershipBlock', $this->getMembershipBlock()); // Handle PCP - $pcpId = CRM_Utils_Request::retrieve('pcpId', 'Positive', $this); - if ($pcpId) { + $pcpId = $this->getPcpID(); + if ($this->getPcpID()) { $pcp = CRM_PCP_BAO_PCP::handlePcp($pcpId, 'contribute', $this->_values); - $this->_pcpId = $pcp['pcpId']; $this->_pcpBlock = $pcp['pcpBlock']; $this->_pcpInfo = $pcp['pcpInfo']; } @@ -473,10 +499,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->assign('linkText', $linkText); } - //set pledge block if block id is set - if (!empty($this->_values['pledge_block_id'])) { - $this->assign('pledgeBlock', TRUE); - } + $this->assign('pledgeBlock', !empty($this->_values['pledge_block_id'])); // @todo - move this check to `getMembershipBlock` if (!$this->isFormSupportsNonMembershipContributions() && @@ -490,7 +513,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->set('amount_block_is_active', $this->isFormSupportsNonMembershipContributions()); $this->_contributeMode = $this->get('contributeMode'); - $this->assign('contributeMode', $this->_contributeMode); //assigning is_monetary and is_email_receipt to template $this->assign('is_monetary', $this->_values['is_monetary']); @@ -499,7 +521,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { //assign cancelSubscription URL to templates $this->assign('cancelSubscriptionUrl', - CRM_Utils_Array::value('cancelSubscriptionUrl', $this->_values) + $this->_values['cancelSubscriptionUrl'] ?? NULL ); $title = $this->_values['frontend_title']; @@ -544,14 +566,44 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { if ($form->_action & CRM_Core_Action::UPDATE) { $form->_values['line_items'] = CRM_Price_BAO_LineItem::getLineItems($form->_id, 'contribution'); } - - $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId); - $form->_priceSet = $priceSet[$priceSetId] ?? NULL; - $form->_values['fee'] = $form->_priceSet['fields'] ?? NULL; + $form->_priceSet = $this->order->getPriceSetMetadata(); + $this->setPriceFieldMetaData($this->order->getPriceFieldsMetadata()); $form->set('priceSet', $form->_priceSet); } } + /** + * Set price field metadata. + * + * @param array $metadata + */ + public function setPriceFieldMetaData(array $metadata): void { + $this->_values['fee'] = $this->_priceSet['fields'] = $metadata; + } + + /** + * Get price field metadata. + * + * The returned value is an array of arrays where each array + * is an id-keyed price field and an 'options' key has been added to that + * arry for any options. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @return array + */ + public function getPriceFieldMetaData(): array { + if (!empty($this->_values['fee'])) { + return $this->_values['fee']; + } + if (!empty($this->_priceSet['fields'])) { + return $this->_priceSet['fields']; + } + return $this->order->getPriceFieldsMetadata(); + } + /** * Set the default values. */ @@ -787,8 +839,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { } } - $this->assign($name, $fields); - if ($profileContactType && count($viewOnlyFileValues[$profileContactType])) { $this->assign('viewOnlyPrefixFileValues', $viewOnlyFileValues); } @@ -797,6 +847,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { } } } + $this->assign($name, $fields ?? NULL); } /** @@ -856,195 +907,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { } } - /** - * Add onbehalf/honoree profile fields and native module fields. - * - * @param int $id - * @param CRM_Core_Form $form - * - * @throws \CRM_Core_Exception - */ - public function buildComponentForm($id, $form): void { - if (empty($id)) { - return; - } - - $contactID = $this->getContactID(); - - foreach (['soft_credit', 'on_behalf'] as $module) { - if ($module === 'soft_credit') { - if (empty($form->_values['honoree_profile_id'])) { - continue; - } - - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $form->_values['honoree_profile_id'], 'is_active')) { - CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the selected honoree profile is either disabled or not found.')); - } - - $profileContactType = CRM_Core_BAO_UFGroup::getContactType($form->_values['honoree_profile_id']); - $requiredProfileFields = [ - 'Individual' => ['first_name', 'last_name'], - 'Organization' => ['organization_name', 'email'], - 'Household' => ['household_name', 'email'], - ]; - $validProfile = CRM_Core_BAO_UFGroup::checkValidProfile($form->_values['honoree_profile_id'], $requiredProfileFields[$profileContactType]); - if (!$validProfile) { - CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of honoree and the required fields of the selected honoree profile are disabled or doesn\'t exist.')); - } - - foreach (['honor_block_title', 'honor_block_text'] as $name) { - $form->assign($name, $form->_values[$name]); - } - - $softCreditTypes = CRM_Core_OptionGroup::values("soft_credit_type", FALSE); - - // radio button for Honor Type - foreach ($form->_values['soft_credit_types'] as $value) { - $honorTypes[$value] = $softCreditTypes[$value]; - } - $form->addRadio('soft_credit_type_id', NULL, $honorTypes, ['allowClear' => TRUE]); - - $honoreeProfileFields = CRM_Core_BAO_UFGroup::getFields( - $this->_values['honoree_profile_id'], FALSE, - NULL, NULL, - NULL, FALSE, - NULL, TRUE, - NULL, CRM_Core_Permission::CREATE - ); - $form->assign('honoreeProfileFields', $honoreeProfileFields); - - // add the form elements - foreach ($honoreeProfileFields as $name => $field) { - // If soft credit type is not chosen then make omit requiredness from honoree profile fields - if (count($form->_submitValues) && - empty($form->_submitValues['soft_credit_type_id']) && - !empty($field['is_required']) - ) { - $field['is_required'] = FALSE; - } - CRM_Core_BAO_UFGroup::buildProfile($form, $field, CRM_Profile_Form::MODE_CREATE, NULL, FALSE, FALSE, NULL, 'honor'); - } - } - else { - if (empty($form->_values['onbehalf_profile_id'])) { - continue; - } - - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $form->_values['onbehalf_profile_id'], 'is_active')) { - CRM_Core_Error::statusBounce(ts('This contribution page has been configured for contribution on behalf of an organization and the selected onbehalf profile is either disabled or not found.')); - } - - $member = CRM_Member_BAO_Membership::getMembershipBlock($form->_id); - if (empty($member['is_active'])) { - $msg = ts('Mixed profile not allowed for on behalf of registration/sign up.'); - $onBehalfProfile = CRM_Core_BAO_UFGroup::profileGroups($form->_values['onbehalf_profile_id']); - foreach ( - [ - 'Individual', - 'Organization', - 'Household', - ] as $contactType - ) { - if (in_array($contactType, $onBehalfProfile) && - (in_array('Membership', $onBehalfProfile) || - in_array('Contribution', $onBehalfProfile) - ) - ) { - CRM_Core_Error::statusBounce($msg); - } - } - } - - if ($contactID) { - // retrieve all permissioned organizations of contact $contactID - $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($contactID, NULL, NULL, 'Organization'); - - if (count($organizations)) { - // Related org url - pass checksum if needed - $args = [ - 'ufID' => $form->_values['onbehalf_profile_id'], - 'cid' => '', - ]; - if (!empty($_GET['cs'])) { - $args = [ - 'ufID' => $form->_values['onbehalf_profile_id'], - 'uid' => $this->_contactID, - 'cs' => $_GET['cs'], - 'cid' => '', - ]; - } - $locDataURL = CRM_Utils_System::url('civicrm/ajax/permlocation', $args, FALSE, NULL, FALSE); - $form->assign('locDataURL', $locDataURL); - } - if (count($organizations) > 0) { - $form->add('select', 'onbehalfof_id', '', CRM_Utils_Array::collect('name', $organizations)); - - $orgOptions = [ - 0 => ts('Select an existing organization'), - 1 => ts('Enter a new organization'), - ]; - $form->addRadio('org_option', ts('options'), $orgOptions); - $form->setDefaults(['org_option' => 0]); - } - } - - $form->assign('fieldSetTitle', CRM_Core_BAO_UFGroup::getFrontEndTitle($form->_values['onbehalf_profile_id'])); - - if (!empty($form->_values['is_for_organization'])) { - if ($form->_values['is_for_organization'] == 2) { - $form->assign('onBehalfRequired', TRUE); - } - else { - $form->addElement('checkbox', 'is_for_organization', - $form->_values['for_organization'], - NULL - ); - } - } - - $profileFields = CRM_Core_BAO_UFGroup::getFields( - $form->_values['onbehalf_profile_id'], - FALSE, CRM_Core_Action::VIEW, NULL, - NULL, FALSE, NULL, FALSE, NULL, - CRM_Core_Permission::CREATE, NULL - ); - - $form->assign('onBehalfOfFields', $profileFields); - if (!empty($form->_submitValues['onbehalf'])) { - if (!empty($form->_submitValues['onbehalfof_id'])) { - $form->assign('submittedOnBehalf', $form->_submitValues['onbehalfof_id']); - } - $form->assign('submittedOnBehalfInfo', json_encode(str_replace('"', '\"', $form->_submitValues['onbehalf']), JSON_HEX_APOS)); - } - - $fieldTypes = ['Contact', 'Organization']; - if (!empty($form->_membershipBlock)) { - $fieldTypes = array_merge($fieldTypes, ['Membership']); - } - $contactSubType = CRM_Contact_BAO_ContactType::subTypes('Organization'); - $fieldTypes = array_merge($fieldTypes, $contactSubType); - - foreach ($profileFields as $name => $field) { - if (in_array($field['field_type'], $fieldTypes)) { - [$prefixName, $index] = CRM_Utils_System::explode('-', $name, 2); - if (in_array($prefixName, ['organization_name', 'email']) && empty($field['is_required'])) { - $field['is_required'] = 1; - } - if (count($form->_submitValues) && - empty($form->_submitValues['is_for_organization']) && - $form->_values['is_for_organization'] == 1 && - !empty($field['is_required']) - ) { - $field['is_required'] = FALSE; - } - CRM_Core_BAO_UFGroup::buildProfile($form, $field, NULL, NULL, FALSE, 'onbehalf', NULL, 'onbehalf'); - } - } - } - } - - } - /** * Check template file exists. * @@ -1241,10 +1103,9 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { * Params reflecting form input e.g with fields 'price_5' => 7, 'price_8' => array(7, 8) * @param $lineItems * Line item array to be altered. - * @param int $priceSetID */ - public function processAmountAndGetAutoRenew($fields, &$params, &$lineItems, $priceSetID = NULL) { - CRM_Price_BAO_PriceSet::processAmount($fields, $params, $lineItems, $priceSetID); + public function processAmountAndGetAutoRenew($fields, &$params, &$lineItems) { + CRM_Price_BAO_PriceSet::processAmount($fields, $params, $lineItems, $this->getPriceSetID()); $autoRenew = []; $autoRenew[0] = $autoRenew[1] = $autoRenew[2] = 0; foreach ($lineItems as $lineItem) { @@ -1382,6 +1243,48 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { return $this->_ccid ?: CRM_Utils_Request::retrieve('ccid', 'Positive', $this); } + /** + * Get the submitted value, accessing it from whatever form in the flow it is + * submitted on. + * + * @param string $fieldName + * + * @return mixed|null + */ + public function getSubmittedValue(string $fieldName) { + $value = $this->controller->exportValue('Main', $fieldName); + if (in_array($fieldName, $this->submittableMoneyFields, TRUE)) { + return CRM_Utils_Rule::cleanMoney($value); + } + + // Numeric fields are not in submittableMoneyFields (for now) + $fieldRules = $this->_rules[$fieldName] ?? []; + foreach ($fieldRules as $rule) { + if ('money' === $rule['type']) { + return CRM_Utils_Rule::cleanMoney($value); + } + } + return $value; + } + + /** + * Get the fields that can be submitted in this form flow. + * + * This is overridden to make the fields submitted on the first + * form (Contribution_Main) available from the others in the same flow + * (Contribution_Confirm, Contribution_ThankYou). + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @return string[] + */ + protected function getSubmittableFields(): array { + $fieldNames = array_keys($this->controller->exportValues('Main')); + return array_fill_keys($fieldNames, $this->_name); + } + /** * @return array */ @@ -1393,4 +1296,37 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { return $lineItems; } + /** + * Get the PCP ID being contributed to. + * + * @return int|null + */ + protected function getPcpID(): ?int { + if ($this->_pcpId === NULL) { + $this->_pcpId = CRM_Utils_Request::retrieve('pcpId', 'Positive', $this); + } + return $this->_pcpId ? (int) $this->_pcpId : NULL; + } + + /** + * Get the selected Contribution ID. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionID(): ?int { + if ($this->getExistingContributionID()) { + return $this->getExistingContributionID(); + } + if (property_exists($this, '_contributionID')) { + // Available on Confirm form (which is tested), so this avoids + // accessing that directly & will work for ThankYou in time. + return $this->_contributionID; + } + return NULL; + } + } diff --git a/civicrm/CRM/Contribute/Form/ContributionCharts.php b/civicrm/CRM/Contribute/Form/ContributionCharts.php index 5b2005f7464186e9cd1dfa89799ee1113ed8c166..666546e0ca81c8ae0e5c2b6ae4ee4fc70e2779ea 100644 --- a/civicrm/CRM/Contribute/Form/ContributionCharts.php +++ b/civicrm/CRM/Contribute/Form/ContributionCharts.php @@ -97,7 +97,7 @@ class CRM_Contribute_Form_ContributionCharts extends CRM_Core_Form { $abbrMonthNames = CRM_Utils_Date::getAbbrMonthNames(); foreach ($abbrMonthNames as $monthKey => $monthName) { - $val = CRM_Utils_Array::value($monthKey, $chartInfoMonthly['By Month'], 0); + $val = $chartInfoMonthly['By Month'][$monthKey] ?? 0; // don't include zero value month. if (!$val && ($chartType != 'bvg')) { diff --git a/civicrm/CRM/Contribute/Form/ContributionPage.php b/civicrm/CRM/Contribute/Form/ContributionPage.php index 28a383d00f52c25e5971084f6cdabff2644bbbe0..3b8f5a1d6fc0baec46d1cdac47fe1c844550f64d 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage.php @@ -46,7 +46,7 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { * * @var int */ - protected $_priceSetID = NULL; + protected $_priceSetID; protected $_values; @@ -68,11 +68,7 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { * Set variables up before form is built. */ public function preProcess() { - // current contribution page id - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', - $this, FALSE, NULL, 'REQUEST' - ); - $this->assign('contributionPageID', $this->_id); + $this->assign('contributionPageID', $this->getContributionPageID()); // get the requested action $this->_action = CRM_Utils_Request::retrieve('action', 'String', @@ -85,10 +81,7 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { $title = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_ContributionPage', $this->_id, 'title'); } - // CRM-16776 - show edit/copy/create buttons on Profiles Tab if user has required permission. - if (CRM_Core_Permission::check('administer CiviCRM')) { - $this->assign('perm', TRUE); - } + $this->assign('perm', (bool) CRM_Core_Permission::check('administer CiviCRM')); // set up tabs CRM_Contribute_Form_ContributionPage_TabHeader::build($this); @@ -258,10 +251,8 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { // get price set of type contributions //this is the value for stored in db if price set extends contribution - $usedFor = 2; - $this->_priceSetID = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->_id, $usedFor, 1); - if ($this->_priceSetID) { - $defaults['price_set_id'] = $this->_priceSetID; + if ($this->getPriceSetID()) { + $defaults['price_set_id'] = $this->getPriceSetID(); } } else { @@ -406,4 +397,36 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { } } + /** + * Get the price set ID for the event. + * + * @return int|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + */ + public function getContributionPageID(): ?int { + if (!$this->_id) { + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); + } + return $this->_id ? (int) $this->_id : NULL; + } + + /** + * Get the price set ID for the contribution page. + * + * @return int|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + */ + public function getPriceSetID(): ?int { + if (!$this->_priceSetID && $this->getContributionPageID()) { + $this->_priceSetID = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->getContributionPageID()); + } + return $this->_priceSetID ? (int) $this->_priceSetID : NULL; + } + } diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php index 910d57e1a9e02e4df6d75604c9a9d58ccdfd9b67..03df84064adebaedb978280aae5f24c5de370967 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php @@ -98,9 +98,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co if (count($recurringPaymentProcessor)) { $this->assign('recurringPaymentProcessor', $recurringPaymentProcessor); } - if (count($futurePaymentProcessor)) { - $this->assign('futurePaymentProcessor', $futurePaymentProcessor); - } + $this->assign('futurePaymentProcessor', json_encode($futurePaymentProcessor ?? [], TRUE)); if (count($paymentProcessor)) { $this->assign('paymentProcessor', $paymentProcessor); } @@ -144,7 +142,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co else { $this->assign('price', TRUE); } - + $this->assign('isQuick', $this->isQuickConfig()); $this->addSelect('price_set_id', [ 'entity' => 'PriceSet', 'option_url' => 'civicrm/admin/price', @@ -208,12 +206,10 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co if (empty($defaults['pay_later_text'])) { $defaults['pay_later_text'] = ts('I will send payment by check'); } - if (!empty($defaults['amount_block_is_active'])) { if ($priceSetId = CRM_Price_BAO_PriceSet::getFor('civicrm_contribution_page', $this->_id, NULL)) { - if ($isQuick = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config')) { - $this->assign('isQuick', $isQuick); + if ($this->isQuickConfig()) { //$priceField = CRM_Core_DAO::getFieldValue( 'CRM_Price_DAO_PriceField', $priceSetId, 'id', 'price_set_id' ); $options = $pFIDs = []; $priceFieldParams = ['price_set_id' => $priceSetId]; @@ -447,7 +443,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co if (array_key_exists(CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessor', 'AuthNet', 'id', 'payment_processor_type_id' ), - CRM_Utils_Array::value('payment_processor', $params) + ($params['payment_processor'] ?? NULL) )) { CRM_Core_Session::setStatus(ts(' Please note that the Authorize.net payment processor only allows recurring contributions and auto-renew memberships with payment intervals from 7-365 days or 1-12 months (i.e. not greater than 1 year).'), '', 'alert'); } @@ -501,8 +497,8 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co $params['recur_frequency_unit'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, array_keys($params['recur_frequency_unit']) ); - $params['is_recur_interval'] = CRM_Utils_Array::value('is_recur_interval', $params, FALSE); - $params['is_recur_installments'] = CRM_Utils_Array::value('is_recur_installments', $params, FALSE); + $params['is_recur_interval'] = $params['is_recur_interval'] ?? FALSE; + $params['is_recur_installments'] = $params['is_recur_installments'] ?? FALSE; } if (!empty($params['adjust_recur_start_date'])) { @@ -818,7 +814,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co } if ($deleteAmountBlk) { - $priceField = !empty($params['price_field_id']) ? $params['price_field_id'] : CRM_Utils_Array::value('price_field_other', $params); + $priceField = !empty($params['price_field_id']) ? $params['price_field_id'] : $params['price_field_other'] ?? NULL; if ($priceField) { $priceSetID = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $priceField, 'price_set_id'); CRM_Price_BAO_PriceSet::setIsQuickConfig($priceSetID, 0); @@ -828,6 +824,15 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co parent::endPostProcess(); } + /** + * Is the price set quick config. + * + * @return bool + */ + private function isQuickConfig(): bool { + return $this->getPriceSetID() && CRM_Price_BAO_PriceSet::isQuickConfig($this->getPriceSetID()); + } + /** * Return a descriptive name for the page, used in wizard header * diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php b/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php index 7683f3d90015b1aa8cb8acc8b47e7927321940a1..258c4e1cbafe5c5842604184f5f2d281048eec01 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Premium.php @@ -127,8 +127,8 @@ class CRM_Contribute_Form_ContributionPage_Premium extends CRM_Contribute_Form_C $params['id'] = $premiumID; } - $params['premiums_active'] = CRM_Utils_Array::value('premiums_active', $params, FALSE); - $params['premiums_display_min_contribution'] = CRM_Utils_Array::value('premiums_display_min_contribution', $params, FALSE); + $params['premiums_active'] = $params['premiums_active'] ?? FALSE; + $params['premiums_display_min_contribution'] = $params['premiums_display_min_contribution'] ?? FALSE; $params['entity_table'] = 'civicrm_contribution_page'; $params['entity_id'] = $this->_id; diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php index c91b6e9ec64afb4c338c7203a4ff74b17523f2b3..a91499ab6a5ff2846451087dacba027f909ee1c2 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php @@ -69,8 +69,8 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ $defaults['honoree_profile'] = $ufGroupDAO->id; } $defaults['soft_credit_types'] = [ - CRM_Utils_Array::value('in_honor_of', $soft_credit_types), - CRM_Utils_Array::value('in_memory_of', $soft_credit_types), + $soft_credit_types['in_honor_of'] ?? NULL, + $soft_credit_types['in_memory_of'] ?? NULL, ]; } else { @@ -92,8 +92,8 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ $defaults['honoree_profile'] = $ufGroupDAO->id; } $defaults['soft_credit_types'] = [ - CRM_Utils_Array::value('in_honor_of', $soft_credit_types), - CRM_Utils_Array::value('in_memory_of', $soft_credit_types), + $soft_credit_types['in_honor_of'] ?? NULL, + $soft_credit_types['in_memory_of'] ?? NULL, ]; } @@ -311,11 +311,11 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ $params['currency'] = $config->defaultCurrency; } - $params['is_confirm_enabled'] = CRM_Utils_Array::value('is_confirm_enabled', $params, FALSE); - $params['is_share'] = CRM_Utils_Array::value('is_share', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['is_credit_card_only'] = CRM_Utils_Array::value('is_credit_card_only', $params, FALSE); - $params['honor_block_is_active'] = CRM_Utils_Array::value('honor_block_is_active', $params, FALSE); + $params['is_confirm_enabled'] = $params['is_confirm_enabled'] ?? FALSE; + $params['is_share'] = $params['is_share'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['is_credit_card_only'] = $params['is_credit_card_only'] ?? FALSE; + $params['honor_block_is_active'] = $params['honor_block_is_active'] ?? FALSE; $params['is_for_organization'] = !empty($params['is_organization']) ? CRM_Utils_Array::value('is_for_organization', $params, FALSE) : 0; $params['goal_amount'] = CRM_Utils_Rule::cleanMoney($params['goal_amount']); diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/ThankYou.php b/civicrm/CRM/Contribute/Form/ContributionPage/ThankYou.php index f8cc668f07015c60061073306661c2b8b0c91240..2b325bc60b61234b6790217ed52a57d5c71b2c1c 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/ThankYou.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/ThankYou.php @@ -100,7 +100,7 @@ class CRM_Contribute_Form_ContributionPage_ThankYou extends CRM_Contribute_Form_ $params = $this->controller->exportValues($this->_name); $params['id'] = $this->_id; - $params['is_email_receipt'] = CRM_Utils_Array::value('is_email_receipt', $params, FALSE); + $params['is_email_receipt'] = $params['is_email_receipt'] ?? FALSE; if (!$params['is_email_receipt']) { $params['receipt_from_name'] = NULL; $params['receipt_from_email'] = NULL; diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Widget.php b/civicrm/CRM/Contribute/Form/ContributionPage/Widget.php index 937d7457c35a43236c50ec980e6375235353fa5e..a8b838cbb4bce5400dd79304ea7b945e9bc13899 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Widget.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Widget.php @@ -241,7 +241,7 @@ class CRM_Contribute_Form_ContributionPage_Widget extends CRM_Contribute_Form_Co $params['id'] = $this->_widget->id; } $params['contribution_page_id'] = $this->_id; - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; $params['url_homepage'] = 'null'; $widget = new CRM_Contribute_DAO_Widget(); diff --git a/civicrm/CRM/Contribute/Form/ContributionView.php b/civicrm/CRM/Contribute/Form/ContributionView.php index e3fa74ea259dbc66f8a631a550a944e0e2e5b329..d68c4d30876da0937fa7622b3b728e26095e6d06 100644 --- a/civicrm/CRM/Contribute/Form/ContributionView.php +++ b/civicrm/CRM/Contribute/Form/ContributionView.php @@ -21,6 +21,7 @@ use Civi\Api4\Contribution; * This class generates form components for Payment-Instrument. */ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { + use CRM_Contribute_Form_ContributeFormTrait; /** * Set variables up before form is built. @@ -28,7 +29,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { * @throws \CRM_Core_Exception */ public function preProcess() { - $id = $this->getID(); + $id = $this->getContributionID(); // Check permission for action. $actionMapping = [ @@ -82,11 +83,11 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { $values['contribution_page_title'] = ''; if (!empty($values['contribution_page_id'])) { $contribPages = CRM_Contribute_PseudoConstant::contributionPage(NULL, TRUE); - $values['contribution_page_title'] = CRM_Utils_Array::value(CRM_Utils_Array::value('contribution_page_id', $values), $contribPages); + $values['contribution_page_title'] = $contribPages[$values['contribution_page_id']] ?? ''; } // get received into i.e to_financial_account_id from last trxn - $financialTrxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($this->getID(), 'DESC'); + $financialTrxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($this->getContributionID(), 'DESC'); $values['to_financial_account'] = ''; $values['payment_processor_name'] = ''; if (!empty($financialTrxnId['financialTrxnId'])) { @@ -176,7 +177,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { } //assign soft credit record if exists. - $SCRecords = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($this->getID(), TRUE); + $SCRecords = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($this->getContributionID(), TRUE); $this->assign('softContributions', empty($SCRecords['soft_credit']) ? NULL : $SCRecords['soft_credit']); // unset doesn't complain if array member missing unset($SCRecords['soft_credit']); @@ -266,7 +267,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { $urlParams = "reset=1&id={$id}&cid={$values['contact_id']}&action=update&context={$context}&key={$searchKey}"; } if (!$contribution['is_template']) { - foreach (CRM_Contribute_BAO_Contribution::getContributionPaymentLinks($this->getID(), $contributionStatus) as $paymentButton) { + foreach (CRM_Contribute_BAO_Contribution::getContributionPaymentLinks($this->getContributionID(), $contributionStatus) as $paymentButton) { $paymentButton['icon'] = 'fa-plus-circle'; $linkButtons[] = $paymentButton; } @@ -378,7 +379,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { try { return Contribution::checkAccess() ->setAction($action) - ->addValue('id', $this->getID()) + ->addValue('id', $this->getContributionID()) ->execute()->first()['access']; } catch (CRM_Core_Exception $e) { @@ -387,16 +388,33 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { } /** - * Get the contribution ID. + * Get the selected Contribution ID. * - * @return int + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection */ - private function getID(): int { + public function getContributionID(): ?int { $id = $this->get('id'); - if (empty($id)) { - CRM_Core_Error::statusBounce('Contribution ID is required'); + if (!$id) { + $id = CRM_Utils_Request::retrieve('id', 'Positive'); } - return $id; + return (int) $id; + } + + /** + * Get id of contribution page being acted on. + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * + * @noinspection PhpUnhandledExceptionInspection + */ + public function getContributionPageID(): ?int { + return $this->getContributionID() ? $this->getContributionValue('contribution_page_id') : NULL; } } diff --git a/civicrm/CRM/Contribute/Form/Task/Invoice.php b/civicrm/CRM/Contribute/Form/Task/Invoice.php index c43a24be99b1702569833b7221f05f0e15bcea46..f8b885edcbb6885a12acb190be8177e1762faf0b 100644 --- a/civicrm/CRM/Contribute/Form/Task/Invoice.php +++ b/civicrm/CRM/Contribute/Form/Task/Invoice.php @@ -287,12 +287,12 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { $lineItem = CRM_Price_BAO_LineItem::getLineItemsByContributionID($contributionID); foreach ($lineItem as $taxRate) { if (isset($dataArray[(string) $taxRate['tax_rate']])) { - $dataArray[(string) $taxRate['tax_rate']] = $dataArray[(string) $taxRate['tax_rate']] + CRM_Utils_Array::value('tax_amount', $taxRate); + $dataArray[(string) $taxRate['tax_rate']] = $dataArray[(string) $taxRate['tax_rate']] + ($taxRate['tax_amount'] ?? 0); } else { $dataArray[(string) $taxRate['tax_rate']] = $taxRate['tax_amount'] ?? NULL; } - $subTotal += CRM_Utils_Array::value('subTotal', $taxRate); + $subTotal += $taxRate['subTotal'] ?? 0; } // to email the invoice diff --git a/civicrm/CRM/Contribute/Form/Task/PDFLetter.php b/civicrm/CRM/Contribute/Form/Task/PDFLetter.php index 833bc44be9a455eb38a604d20932e965804d317f..1718cca1a701f6b4104e48332c76071e8476519a 100644 --- a/civicrm/CRM/Contribute/Form/Task/PDFLetter.php +++ b/civicrm/CRM/Contribute/Form/Task/PDFLetter.php @@ -241,7 +241,7 @@ class CRM_Contribute_Form_Task_PDFLetter extends CRM_Contribute_Form_Task { $contactIds = array_keys($contacts); // CRM-16725 Skip creation of activities if user is previewing their PDF letter(s) if ($this->isLiveMode()) { - $this->createActivities($html_message, $contactIds, CRM_Utils_Array::value('subject', $formValues, ts('Thank you letter')), CRM_Utils_Array::value('campaign_id', $formValues), $contactHtml); + $this->createActivities($html_message, $contactIds, CRM_Utils_Array::value('subject', $formValues, ts('Thank you letter')), $formValues['campaign_id'] ?? NULL, $contactHtml); } $html = array_diff_key($html, $emailedHtml); diff --git a/civicrm/CRM/Contribute/Page/ContributionRecur.php b/civicrm/CRM/Contribute/Page/ContributionRecur.php index 644c4144b9767190e4835ba69e80e7998a595c70..4236ae3a582ae08845447203741e53c0483acb5a 100644 --- a/civicrm/CRM/Contribute/Page/ContributionRecur.php +++ b/civicrm/CRM/Contribute/Page/ContributionRecur.php @@ -51,7 +51,7 @@ class CRM_Contribute_Page_ContributionRecur extends CRM_Core_Page { } $contributionRecur['payment_processor'] = CRM_Financial_BAO_PaymentProcessor::getPaymentProcessorName( - CRM_Utils_Array::value('payment_processor_id', $contributionRecur) + $contributionRecur['payment_processor_id'] ?? NULL ); $idFields = ['contribution_status_id', 'campaign_id', 'financial_type_id']; foreach ($idFields as $idField) { diff --git a/civicrm/CRM/Contribute/Page/DashBoard.php b/civicrm/CRM/Contribute/Page/DashBoard.php index b7df27e2f79da5750a5684443cce67ea97d0da87..aa8cdbbc413df36175391074c8d05fbeff134199 100644 --- a/civicrm/CRM/Contribute/Page/DashBoard.php +++ b/civicrm/CRM/Contribute/Page/DashBoard.php @@ -68,7 +68,7 @@ class CRM_Contribute_Page_DashBoard extends CRM_Core_Page { } //for contribution tabular View - $buildTabularView = CRM_Utils_Array::value('showtable', $_GET, FALSE); + $buildTabularView = $_GET['showtable'] ?? FALSE; $this->assign('buildTabularView', $buildTabularView); if ($buildTabularView) { return; diff --git a/civicrm/CRM/Contribute/Page/Premium.php b/civicrm/CRM/Contribute/Page/Premium.php index 72cc941defd1358a74afb134b09cf882e04f12fd..98c50a73d62e73fad1e83ee5c5094bf2d682ca26 100644 --- a/civicrm/CRM/Contribute/Page/Premium.php +++ b/civicrm/CRM/Contribute/Page/Premium.php @@ -54,12 +54,14 @@ class CRM_Contribute_Page_Premium extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/contribute/addProductToPage', 'qs' => 'action=update&id=%%id%%&pid=%%pid%%&reset=1', 'title' => ts('Edit Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Preview'), 'url' => 'civicrm/admin/contribute/addProductToPage', 'qs' => 'action=preview&id=%%id%%&pid=%%pid%%', 'title' => ts('Preview Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW), ], CRM_Core_Action::DELETE => [ 'name' => ts('Remove'), @@ -67,6 +69,7 @@ class CRM_Contribute_Page_Premium extends CRM_Core_Page_Basic { 'qs' => 'action=delete&id=%%id%%&pid=%%pid%%', 'extra' => 'onclick = "if (confirm(\'' . $deleteExtra . '\') ) this.href+=\'&confirmed=1\'; else return false;"', 'title' => ts('Disable Premium'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } @@ -142,7 +145,7 @@ class CRM_Contribute_Page_Premium extends CRM_Core_Page_Basic { $action = array_sum(array_keys($this->links())); - $premiums[$premiumsProductDao->product_id]['action'] = CRM_Core_Action::formLink(self::links(), $action, + $premiums[$premiumsProductDao->product_id]['action'] = CRM_Core_Action::formLink($this->links(), $action, ['id' => $pageID, 'pid' => $premiumsProductDao->id], ts('more'), FALSE, diff --git a/civicrm/CRM/Contribute/Page/UserDashboard.php b/civicrm/CRM/Contribute/Page/UserDashboard.php index 96b94a18d73b11e12253d577eada813b9ae0bb48..cdb2745468a72bd8712d644e94108dc678ce644c 100644 --- a/civicrm/CRM/Contribute/Page/UserDashboard.php +++ b/civicrm/CRM/Contribute/Page/UserDashboard.php @@ -32,7 +32,9 @@ class CRM_Contribute_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBo // which the tpl can iterate through - this should allow us to cope with competing attempts to add new buttons // and allow extensions to assign new ones through the pageRun hook // We could check for balance_amount > 0 here? It feels more correct but this seems to be working. - if (in_array($row['contribution_status_id:name'], ['Pending', 'Partially paid'], TRUE)) { + if (in_array($row['contribution_status_id:name'], ['Pending', 'Partially paid'], TRUE) + && Civi::settings()->get('default_invoice_page') + ) { $row['buttons']['pay'] = [ 'class' => 'button', 'label' => ts('Pay Now'), diff --git a/civicrm/CRM/Contribute/Tokens.php b/civicrm/CRM/Contribute/Tokens.php index 5af208998fcdee01146d84a1869a06ff7819ac66..625496528f87cd4be617c68ec8c1211872b9c6b0 100644 --- a/civicrm/CRM/Contribute/Tokens.php +++ b/civicrm/CRM/Contribute/Tokens.php @@ -10,8 +10,8 @@ +--------------------------------------------------------------------+ */ -use Civi\Api4\ContributionPage; -use Civi\Api4\ContributionRecur; +use Civi\Api4\Address; +use Civi\Token\TokenRow; /** * Class CRM_Contribute_Tokens @@ -61,35 +61,61 @@ class CRM_Contribute_Tokens extends CRM_Core_EntityTokens { if (!array_key_exists('Contribution', \Civi::service('action_object_provider')->getEntities())) { return $tokens; } + $tokens += $this->getRelatedTokensForEntity('Address', 'address_id', ['name', 'id']); + + $tokens['address_id.name']['title'] = ts('Billing Address Name'); + $tokens['address_id.display'] = [ + 'title' => ts('Billing Address'), + 'name' => 'address_id.display', + 'type' => 'mapped', + 'input_type' => 'Text', + 'audience' => 'user', + 'data_type' => 'String', + ]; + // Ideally we would derive this from 'usage' - but it looks like adding the usage data // was quite a bit of work & didn't leave the energy to implement - esp expose for // where clauses (also, it feels like 'hidden+token' would be a good usage. - $tokenList = ['frontend_title', 'pay_later_text', 'pay_later_receipt', 'is_share', 'receipt_text']; - $contributionPageTokens = ContributionPage::getFields(FALSE)->addWhere('name', 'IN', $tokenList)->execute(); - foreach ($contributionPageTokens as $contributionPageToken) { - $tokens['contribution_page_id.' . $contributionPageToken['name']] = [ - 'title' => $contributionPageToken['title'], - 'name' => 'contribution_page_id.' . $contributionPageToken['name'], - 'type' => 'mapped', - 'data_type' => $contributionPageToken['data_type'], - 'input_type' => $contributionPageToken['input_type'], - 'audience' => $contributionPageToken['name'] === 'is_share' ? 'hidden' : 'user', - ]; - } + $contributionPageTokens = ['frontend_title', 'pay_later_text', 'pay_later_receipt', 'is_share', 'receipt_text']; + $tokens += $this->getRelatedTokensForEntity('ContributionPage', 'contribution_page_id', $contributionPageTokens, ['is_share']); + $hiddenTokens = ['modified_date', 'create_date', 'trxn_id', 'invoice_id', 'is_test', 'payment_token_id', 'payment_processor_id', 'payment_instrument_id', 'cycle_day', 'installments', 'processor_id', 'next_sched_contribution_date', 'failure_count', 'failure_retry_date', 'auto_renew', 'is_email_receipt', 'contribution_status_id']; - $contributionRecurFields = ContributionRecur::getFields(FALSE)->setLoadOptions(TRUE)->execute(); - foreach ($contributionRecurFields as $contributionRecurField) { - $tokens['contribution_recur_id.' . $contributionRecurField['name']] = [ - 'title' => $contributionRecurField['title'], - 'name' => 'contribution_recur_id.' . $contributionRecurField['name'], - 'type' => 'mapped', - 'options' => $contributionRecurField['options'] ?? NULL, - 'data_type' => $contributionRecurField['data_type'], - 'input_type' => $contributionRecurField['input_type'], - 'audience' => in_array($contributionRecurField['name'], $hiddenTokens) ? 'hidden' : 'user', - ]; - } + $tokens += $this->getRelatedTokensForEntity('ContributionRecur', 'contribution_recur_id', ['*'], $hiddenTokens); return $tokens; } + /** + * @param \Civi\Token\TokenRow $row + * @param string $field + * @return string|int + */ + protected function getFieldValue(TokenRow $row, string $field) { + $entityName = $this->getEntityName(); + if (isset($row->context[$entityName][$field])) { + return $row->context[$entityName][$field]; + } + if ($field === 'address_id.display') { + $addressID = $this->getFieldValue($row, 'address_id.id'); + // We possibly could figure out how to load in a cleverer way + // or as part of apiv4 but this is tested so that can easily happen later... + $address = Address::get(FALSE) + ->addWhere('id', '=', $addressID) + ->addSelect('*', 'state_province_id:label', 'country_id:label') + ->execute()->first(); + // We have name in the address_id.name token. + unset($address['name']); + return \CRM_Utils_Address::format($address); + } + return parent::getFieldValue($row, $field); + } + + /** + * Get fields which need to be returned to render another token. + * + * @return array + */ + public function getDependencies(): array { + return ['address_id.display' => 'address_id.id']; + } + } diff --git a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php index d3477bb3da10e1b50c3ab6be469098a53036606d..4c5bdc364fca39eb38449727f643901aaaa591cf 100644 --- a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php +++ b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php @@ -143,6 +143,10 @@ class CRM_Contribute_WorkflowMessage_Contribution_BasicContribution extends Work $this->setLineItem($mockOrder, $priceField, $priceFieldValue, $index); } + $contribution['address_id.name'] = 'Barbara Johnson'; + $contribution['address_id.display'] = '790L Lincoln St S +Baltimore, New York 10545 +United States'; $contribution['total_amount'] = $mockOrder->getTotalAmount(); $contribution['tax_amount'] = $mockOrder->getTotalTaxAmount() ? round($mockOrder->getTotalTaxAmount(), 2) : 0; $messageTemplate->setContribution($contribution); diff --git a/civicrm/CRM/Core/BAO/Address.php b/civicrm/CRM/Core/BAO/Address.php index d7391167e735e8acb1b6a7a8ebe5004612e0783a..a0aa6a50191e7bfac3c09c1d9fec520872c562e6 100644 --- a/civicrm/CRM/Core/BAO/Address.php +++ b/civicrm/CRM/Core/BAO/Address.php @@ -1283,8 +1283,13 @@ SELECT is_primary, catch (CRM_Core_Exception $e) { $providerExists = FALSE; } - if ($providerExists) { - $provider::format($params); + try { + if ($providerExists) { + $provider::format($params); + } + } + catch (CRM_Core_Exception $e) { + \Civi::log()->error('Geocoding error:' . $e->getMessage(), ['geocoder' => get_class($provider), 'input' => $params]); } // dev/core#2379 - Limit geocode length to 14 characters to avoid validation error on save in UI. foreach (['geo_code_1', 'geo_code_2'] as $geocode) { @@ -1292,6 +1297,8 @@ SELECT is_primary, // ensure that if the geocoding provider (Google, OSM etc) has returned the string 'null' because they can't geocode, ensure that contacts are not placed on null island 0,0 if ($params[$geocode] !== 'null') { $params[$geocode] = (float) substr($params[$geocode], 0, 14); + //set manual_geo_code to 0 + $params['manual_geo_code'] = FALSE; } } } @@ -1312,7 +1319,7 @@ SELECT is_primary, } CRM_Core_BAO_Block::sortPrimaryFirst($params['address']); - $updateBlankLocInfo = CRM_Utils_Array::value('updateBlankLocInfo', $params, FALSE); + $updateBlankLocInfo = $params['updateBlankLocInfo'] ?? FALSE; $contactId = $params['contact_id']; //get all the addresses for this contact $addresses = self::allAddress($contactId); diff --git a/civicrm/CRM/Core/BAO/Block.php b/civicrm/CRM/Core/BAO/Block.php index bd80441e142d5aac1db1d697c615272d12225917..fe5df456d309b4d1d608544014266ef4fd286dc0 100644 --- a/civicrm/CRM/Core/BAO/Block.php +++ b/civicrm/CRM/Core/BAO/Block.php @@ -208,8 +208,8 @@ class CRM_Core_BAO_Block { $contactId = $params['contact_id']; - $updateBlankLocInfo = CRM_Utils_Array::value('updateBlankLocInfo', $params, FALSE); - $isIdSet = CRM_Utils_Array::value('isIdSet', $params[$blockName], FALSE); + $updateBlankLocInfo = $params['updateBlankLocInfo'] ?? FALSE; + $isIdSet = $params[$blockName]['isIdSet'] ?? FALSE; //get existing block ids. $blockIds = self::getBlockIds($blockName, $contactId, $entityElements); diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php index 619dbdb042af079e4b7ba49ceb6071671c24a1c0..e6f4b68d31b084d8d3af36565c4b08050124ba6d 100644 --- a/civicrm/CRM/Core/BAO/CustomField.php +++ b/civicrm/CRM/Core/BAO/CustomField.php @@ -856,6 +856,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { && $field['custom_group_id.is_public'] && ( !empty($entityValueMatches) + || empty($entityFilters) || empty($field['custom_group_id.extends_entity_column_id']) ) && ( @@ -1132,6 +1133,10 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $qf->assign('customUrls', $customUrls); break; + + case 'Hidden': + $element = $qf->add('hidden', $elementName); + break; } switch ($field->data_type) { @@ -1148,21 +1153,21 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { case 'Float': if ($field->is_search_range && $search) { - $qf->addRule($elementName . '_from', ts('%1 From must be a number (with or without decimal point).', [1 => $label]), 'numeric'); - $qf->addRule($elementName . '_to', ts('%1 To must be a number (with or without decimal point).', [1 => $label]), 'numeric'); + $qf->addRule($elementName . '_from', ts('%1 From must be a number (with or without decimals).', [1 => $label]), 'money'); + $qf->addRule($elementName . '_to', ts('%1 To must be a number (with or without decimals).', [1 => $label]), 'money'); } elseif ($widget == 'Text') { - $qf->addRule($elementName, ts('%1 must be a number (with or without decimal point).', [1 => $label]), 'numeric'); + $qf->addRule($elementName, ts('%1 must be a number (with or without decimals).', [1 => $label]), 'money'); } break; case 'Money': if ($field->is_search_range && $search) { - $qf->addRule($elementName . '_from', ts('%1 From must in proper money format. (decimal point/comma/space is allowed).', [1 => $label]), 'money'); - $qf->addRule($elementName . '_to', ts('%1 To must in proper money format. (decimal point/comma/space is allowed).', [1 => $label]), 'money'); + $qf->addRule($elementName . '_from', ts('%1 From must in money format (a number with or without decimals, ex: %2).', [1 => $label, 2 => Civi::format()->number(123.98)]), 'money'); + $qf->addRule($elementName . '_to', ts('%1 To must in money format (a number with or without decimals, ex: %2).', [1 => $label, 2 => Civi::format()->number(123.98)]), 'money'); } elseif ($widget == 'Text') { - $qf->addRule($elementName, ts('%1 must be in proper money format. (decimal point/comma/space is allowed).', [1 => $label]), 'money'); + $qf->addRule($elementName, ts('%1 must be in money format (a number with or without decimals, ex: %2).', [1 => $label, 2 => Civi::format()->number(123.98)]), 'money'); } break; @@ -1321,7 +1326,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { // In such cases we could just get intval($value) and fetch matching // option again, but this would not work if key is float like 5.6. // So we need to truncate trailing zeros to make it work as expected. - if ($display === '' && strpos(($value ?? ''), '.') !== FALSE) { + if ($display === '' && is_numeric($value) && strpos(($value ?? ''), '.') !== FALSE) { // Use round() to truncate trailing zeros, e.g: // 10.00 -> 10, 10.60 -> 10.6, 10.69 -> 10.69. $value = (string) round($value, 5); @@ -2221,7 +2226,7 @@ WHERE id IN ( %1, %2 ) // create any option group & values if required $allowedOptionTypes = ['String', 'Int', 'Float', 'Money']; - if ($htmlType !== 'Text' && in_array($dataType, $allowedOptionTypes, TRUE)) { + if (!in_array($htmlType, ['Text', 'Hidden'], TRUE) && in_array($dataType, $allowedOptionTypes, TRUE)) { //CRM-16659: if option_value then create an option group for this custom field. // An option_type of 2 would be a 'message' from the form layer not to handle // the option_values key. If not set then it is not ignored. @@ -2749,30 +2754,22 @@ WHERE f.id IN ($ids)"; switch ($dataType) { case 'Int': $ruleName = 'integer'; - $errorMsg = ts('%1 must be an integer (whole number).', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be an integer (whole number).', [1 => $fieldTitle]); break; case 'Money': $ruleName = 'money'; - $errorMsg = ts('%1 must in proper money format. (decimal point/comma/space is allowed).', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be in money format (a number with or without decimals, ex: %2).', [1 => $fieldTitle, 2 => Civi::format()->number(123.98)]); break; case 'Float': $ruleName = 'numeric'; - $errorMsg = ts('%1 must be a number (with or without decimal point).', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be a number (with or without decimals).', [1 => $fieldTitle]); break; case 'Link': $ruleName = 'wikiURL'; - $errorMsg = ts('%1 must be valid Website.', - [1 => $fieldTitle] - ); + $errorMsg = ts('%1 must be valid Website.', [1 => $fieldTitle]); break; } diff --git a/civicrm/CRM/Core/BAO/Domain.php b/civicrm/CRM/Core/BAO/Domain.php index 548baffdc68a0f0347cc24be915d9ca9eabfc6fc..6e4049562faed452ddcffa8ee7922b22eda9b093 100644 --- a/civicrm/CRM/Core/BAO/Domain.php +++ b/civicrm/CRM/Core/BAO/Domain.php @@ -164,9 +164,11 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { } /** + * @deprecated * @return bool */ public static function multipleDomains() { + CRM_Core_Error::deprecatedFunctionWarning('API'); $session = CRM_Core_Session::singleton(); $numberDomains = $session->get('numberDomains'); @@ -231,12 +233,12 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { /** * @param int $contactID - * - * @return bool|null|object|string - * + * @return bool|int + * @deprecated * @throws \CRM_Core_Exception */ public static function addContactToDomainGroup($contactID) { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Contact_BAO_GroupContact::addContactsToGroup'); $groupID = self::getGroupId(); if ($groupID) { diff --git a/civicrm/CRM/Core/BAO/EntityTag.php b/civicrm/CRM/Core/BAO/EntityTag.php index c48246775db47cd33537292d58696fc3fc65fe43..97c94866d95da8fd15f670cf314c88d002317512 100644 --- a/civicrm/CRM/Core/BAO/EntityTag.php +++ b/civicrm/CRM/Core/BAO/EntityTag.php @@ -301,7 +301,7 @@ class CRM_Core_BAO_EntityTag extends CRM_Core_DAO_EntityTag { public static function getContactTags($contactID, $count = FALSE) { $contactTags = []; if (!$count) { - $select = "SELECT ct.id, ct.name "; + $select = "SELECT ct.id, ct.label "; } else { $select = "SELECT count(*) as cnt"; @@ -322,7 +322,7 @@ class CRM_Core_BAO_EntityTag extends CRM_Core_DAO_EntityTag { } while ($dao->fetch()) { - $contactTags[$dao->id] = $dao->name; + $contactTags[$dao->id] = $dao->label; } return $contactTags; diff --git a/civicrm/CRM/Core/BAO/MailSettings.php b/civicrm/CRM/Core/BAO/MailSettings.php index 1519394d031bde6ca2e11358e16af6476f0e7402..2d8b6b85ef6dcf70fcdff09bc7755f9a829800c5 100644 --- a/civicrm/CRM/Core/BAO/MailSettings.php +++ b/civicrm/CRM/Core/BAO/MailSettings.php @@ -19,7 +19,7 @@ class CRM_Core_BAO_MailSettings extends CRM_Core_DAO_MailSettings { /** * Get a list of setup-actions. * - * @return array + * @return array{array{title:string, callback: mixed, url: string}} * List of available actions. See description in the hook-docs. * @see CRM_Utils_Hook::mailSetupActions() */ @@ -31,6 +31,13 @@ class CRM_Core_BAO_MailSettings extends CRM_Core_DAO_MailSettings { ]; CRM_Utils_Hook::mailSetupActions($setupActions); + + foreach ($setupActions as $key => &$setupAction) { + if (!isset($setupAction['url'])) { + $setupAction['url'] = (string) Civi::url('//civicrm/ajax/setupMailAccount')->addQuery(['type' => $key]); + } + } + return $setupActions; } @@ -129,8 +136,8 @@ class CRM_Core_BAO_MailSettings extends CRM_Core_DAO_MailSettings { } if (empty($params['id'])) { - $params['is_ssl'] = CRM_Utils_Array::value('is_ssl', $params, FALSE); - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); + $params['is_ssl'] = $params['is_ssl'] ?? FALSE; + $params['is_default'] = $params['is_default'] ?? FALSE; } //handle is_default. diff --git a/civicrm/CRM/Core/BAO/Managed.php b/civicrm/CRM/Core/BAO/Managed.php index 4204350105382a936f716ebf31695252a6da9b0b..38fc061a7ca74159315d749044fb643e7c98ffbc 100644 --- a/civicrm/CRM/Core/BAO/Managed.php +++ b/civicrm/CRM/Core/BAO/Managed.php @@ -50,11 +50,14 @@ class CRM_Core_BAO_Managed extends CRM_Core_DAO_Managed implements Civi\Core\Hoo * @param \Civi\Core\Event\PostEvent $event */ public static function on_hook_civicrm_post(\Civi\Core\Event\PostEvent $event) { - // When an entity is deleted, delete the corresponding Managed record + // When an entity is deleted by the user, nullify 'entity_id' from corresponding Managed record + // This tells the ManagedEntity system that the entity was manually deleted, + // and should be recreated at the discretion of the `update` policy. if ($event->action === 'delete' && $event->id && self::isApi4ManagedType($event->entity)) { - \Civi\Api4\Managed::delete(FALSE) + \Civi\Api4\Managed::update(FALSE) ->addWhere('entity_type', '=', $event->entity) ->addWhere('entity_id', '=', $event->id) + ->addValue('entity_id', NULL) ->execute(); } // When an entity is updated, update the timestamp in corresponding Managed record diff --git a/civicrm/CRM/Core/BAO/Navigation.php b/civicrm/CRM/Core/BAO/Navigation.php index 5357b6f7d4a9a4097965a08497af72638f178f62..9a5bb862a260db8c05fbd490df3f5890b1d0f167 100644 --- a/civicrm/CRM/Core/BAO/Navigation.php +++ b/civicrm/CRM/Core/BAO/Navigation.php @@ -74,10 +74,9 @@ class CRM_Core_BAO_Navigation extends CRM_Core_DAO_Navigation { * @return CRM_Core_DAO_Navigation */ public static function add(&$params) { - $navigation = new CRM_Core_DAO_Navigation(); if (empty($params['id'])) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['has_separator'] = CRM_Utils_Array::value('has_separator', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['has_separator'] = $params['has_separator'] ?? FALSE; $params['domain_id'] = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()); } @@ -98,14 +97,7 @@ class CRM_Core_BAO_Navigation extends CRM_Core_DAO_Navigation { $params['weight'] = self::calculateWeight(CRM_Utils_Array::value('parent_id', $params)); } - if (array_key_exists('permission', $params) && is_array($params['permission'])) { - $params['permission'] = implode(',', $params['permission']); - } - - $navigation->copyValues($params); - - $navigation->save(); - return $navigation; + return self::writeRecord($params); } /** @@ -513,11 +505,11 @@ ORDER BY weight"; break; case "rename": - self::processRename($nodeID, $label); + self::writeRecord(['id' => $nodeID, 'label' => $label]); break; case "delete": - self::processDelete($nodeID); + self::deleteRecord(['id' => $nodeID]); break; } @@ -578,8 +570,6 @@ ORDER BY weight"; $incrementOtherNodes = FALSE; } - $transaction = new CRM_Core_Transaction(); - // now update the existing nodes to weight + 1, if required. if ($incrementOtherNodes) { $query = "UPDATE civicrm_navigation SET weight = weight + 1 @@ -588,11 +578,8 @@ ORDER BY weight"; CRM_Core_DAO::executeQuery($query); } - // finally set the weight of current node - $query = "UPDATE civicrm_navigation SET weight = {$newWeight}, parent_id = {$newParentID} WHERE id = {$nodeID}"; - CRM_Core_DAO::executeQuery($query); - - $transaction->commit(); + // finally set the weight and parent of current node + self::writeRecord(['id' => $nodeID, 'weight' => $newWeight, 'parent_id' => $newParentID]); } /** @@ -600,19 +587,22 @@ ORDER BY weight"; * * @param int $nodeID * @param $label + * @deprecated - use API */ public static function processRename($nodeID, $label) { - CRM_Core_DAO::setFieldValue('CRM_Core_DAO_Navigation', $nodeID, 'label', $label); + CRM_Core_Error::deprecatedFunctionWarning('writeRecord'); + self::writeRecord(['id' => $nodeID, 'label' => $label]); } /** * Process delete action for tree. * * @param int $nodeID + * @deprecated - use API */ public static function processDelete($nodeID) { - $query = "DELETE FROM civicrm_navigation WHERE id = {$nodeID}"; - CRM_Core_DAO::executeQuery($query); + CRM_Core_Error::deprecatedFunctionWarning('writeRecord'); + self::deleteRecord(['id' => $nodeID]); } /** diff --git a/civicrm/CRM/Core/BAO/RecurringEntity.php b/civicrm/CRM/Core/BAO/RecurringEntity.php index 9a8aa744927a5aca2b1e8987ccdcbe6c827269e0..cc1d7c1f8ecabf962bff39fe1c79739a86bd9cba 100644 --- a/civicrm/CRM/Core/BAO/RecurringEntity.php +++ b/civicrm/CRM/Core/BAO/RecurringEntity.php @@ -39,24 +39,8 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity implemen protected $recursion = NULL; protected $recursion_start_date = NULL; - public static $_entitiesToBeDeleted = []; - public static $status = NULL; - public static $_recurringEntityHelper - = [ - 'civicrm_event' => [ - 'helper_class' => 'CRM_Event_DAO_Event', - 'delete_func' => 'delete', - 'pre_delete_func' => 'CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents', - ], - 'civicrm_activity' => [ - 'helper_class' => 'CRM_Activity_DAO_Activity', - 'delete_func' => 'delete', - 'pre_delete_func' => '', - ], - ]; - public static $_dateColumns = [ 'civicrm_event' => [ diff --git a/civicrm/CRM/Core/BAO/Tag.php b/civicrm/CRM/Core/BAO/Tag.php index cd2a0522e05efe6f10a8bcb23c57b2ee14ad1634..2e57b46f72996328437382fc55f31046f5fd8e22 100644 --- a/civicrm/CRM/Core/BAO/Tag.php +++ b/civicrm/CRM/Core/BAO/Tag.php @@ -198,14 +198,15 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { // Instead of recursively making mysql queries, we'll make one big // query and build the hierarchy with the algorithm below. $args = [1 => ['%' . $usedFor . '%', 'String']]; - $query = "SELECT id, name, parent_id, is_tagset, is_selectable + $query = "SELECT id, name, label, parent_id, is_tagset, is_selectable FROM civicrm_tag WHERE used_for LIKE %1"; if ($parentId) { $query .= " AND parent_id = %2"; $args[2] = [$parentId, 'Integer']; } - $query .= " ORDER BY name"; + $query .= " ORDER BY label"; + // @todo when it becomes localizable then we might need the i18nrewrite $dao = CRM_Core_DAO::executeQuery($query, $args, TRUE, NULL, FALSE, FALSE); // Sort the tags into the correct storage by the parent_id/is_tagset @@ -231,6 +232,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { 'prefix' => '', 'name' => $dao->name, 'idPrefix' => $idPrefix, + 'label' => $dao->label, ]; } else { @@ -240,6 +242,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { 'name' => $dao->name, 'parent_id' => $dao->parent_id, 'idPrefix' => $idPrefix, + 'label' => $dao->label, ]; } } @@ -257,6 +260,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { $root['prefix'], $root['name'], $root['idPrefix'], + $root['label'], ]; // As you find the children, append them to the end of the new set @@ -270,6 +274,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { 'prefix' => $tags[$root['id']][0] . $separator, 'name' => $row['name'], 'idPrefix' => $row['idPrefix'], + 'label' => $row['label'], ]; unset($rows[$key]); } @@ -290,7 +295,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { if (!empty($tag[2])) { $key = $tag[2] . "-" . $key; } - $formattedTags[$key] = $tag[0] . $tag[1]; + $formattedTags[$key] = $tag[0] . $tag[3]; } $tags = $formattedTags; @@ -311,7 +316,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { 'sort' => "name ASC", ], 'is_tagset' => 0, - 'return' => ['name', 'description', 'parent_id', 'color', 'is_selectable', 'used_for'], + 'return' => ['label', 'description', 'parent_id', 'color', 'is_selectable', 'used_for'], ]; if ($usedFor) { $params['used_for'] = ['LIKE' => "%$usedFor%"]; @@ -322,7 +327,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { $allTags = []; foreach (CRM_Utils_Array::value('values', civicrm_api3('Tag', 'get', $params)) as $id => $tag) { $allTags[$id] = [ - 'text' => $tag['name'], + 'text' => $tag['label'], 'id' => $id, 'description' => $tag['description'] ?? NULL, 'parent_id' => $tag['parent_id'] ?? NULL, @@ -366,8 +371,16 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { */ public static function add(&$params, $ids = []) { $id = $params['id'] ?? $ids['tag'] ?? NULL; - if (!$id && !self::dataExists($params)) { - return NULL; + if (!$id) { + // Make label from name if missing. + if (CRM_Utils_System::isNull($params['label'] ?? NULL)) { + // If name is also missing, cannot create object. + if (CRM_Utils_System::isNull($params['name'] ?? NULL)) { + // FIXME: Throw exception + return NULL; + } + $params['label'] = $params['name']; + } } // Check permission to create or modify reserved tag @@ -401,7 +414,6 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { // save creator id and time if (!$id) { $params['created_id'] = $params['created_id'] ?? CRM_Core_Session::getLoggedInContactID(); - $params['created_date'] = $params['created_date'] ?? date('YmdHis'); } $tag = self::writeRecord($params); @@ -422,23 +434,6 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { return $tag; } - /** - * Check if there is data to create the object. - * - * @param array $params - * - * @return bool - */ - public static function dataExists($params) { - // Disallow empty values except for the number zero. - // TODO: create a utility for this since it's needed in many places - if (!empty($params['name']) || (string) $params['name'] === '0') { - return TRUE; - } - - return FALSE; - } - /** * Get the tag sets for a entity object. * @@ -450,7 +445,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { */ public static function getTagSet($entityTable) { $tagSets = []; - $query = "SELECT name, id FROM civicrm_tag + $query = "SELECT label, id FROM civicrm_tag WHERE is_tagset=1 AND parent_id IS NULL and used_for LIKE %1"; $dao = CRM_Core_DAO::executeQuery($query, [ 1 => [ @@ -459,7 +454,7 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { ], ], TRUE, NULL, FALSE, FALSE); while ($dao->fetch()) { - $tagSets[$dao->id] = $dao->name; + $tagSets[$dao->id] = $dao->label; } return $tagSets; } diff --git a/civicrm/CRM/Core/BAO/UFField.php b/civicrm/CRM/Core/BAO/UFField.php index 88ef83cfe107b1c889a56a9e6ce22ce214a4ed11..0212831e838d3b417a84d66f0a786eeba786c96b 100644 --- a/civicrm/CRM/Core/BAO/UFField.php +++ b/civicrm/CRM/Core/BAO/UFField.php @@ -248,7 +248,7 @@ WHERE cf.id IN (" . $customFieldIds . ") AND is_multiple = 1 LIMIT 0,1"; $oldWeight = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFField', !empty($params['id']) ? $params['id'] : $params['field_id'], 'weight', 'id'); } $fieldValues = ['uf_group_id' => !empty($params['uf_group_id']) ? $params['uf_group_id'] : $params['group_id']]; - return CRM_Utils_Weight::updateOtherWeights('CRM_Core_DAO_UFField', $oldWeight, CRM_Utils_Array::value('weight', $params, 0), $fieldValues); + return CRM_Utils_Weight::updateOtherWeights('CRM_Core_DAO_UFField', $oldWeight, $params['weight'] ?? 0, $fieldValues); } /** diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php index 645dfcb6d3cda3f34a17cd07834aa9f50cacf30a..fae355c2e705941ca0a333bff4fcbf1855a763b9 100644 --- a/civicrm/CRM/Core/BAO/UFGroup.php +++ b/civicrm/CRM/Core/BAO/UFGroup.php @@ -1808,7 +1808,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) $view = $field['is_view']; $required = ($mode == CRM_Profile_Form::MODE_SEARCH) ? FALSE : $field['is_required']; $search = $mode == CRM_Profile_Form::MODE_SEARCH; - $isShared = CRM_Utils_Array::value('is_shared', $field, 0); + $isShared = $field['is_shared'] ?? 0; // do not display view fields in drupal registration form // CRM-4632 @@ -1958,7 +1958,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) ], $required); } elseif ($fieldName === 'contact_sub_type') { - $gId = $form->get('gid') ? $form->get('gid') : CRM_Utils_Array::value('group_id', $field); + $gId = $form->get('gid') ?: $field['group_id'] ?? NULL; if ($usedFor == 'onbehalf') { $profileType = 'Organization'; } @@ -1992,7 +1992,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) } elseif (in_array($fieldName, CRM_Contact_BAO_Contact::$_greetingTypes)) { // Get contact type for greeting selector - $gId = $form->get('gid') ?: CRM_Utils_Array::value('group_id', $field); + $gId = $form->get('gid') ?: $field['group_id'] ?? NULL; $profileType = CRM_Core_BAO_UFField::getProfileType($gId, TRUE, FALSE, TRUE); if (!$profileType || in_array($profileType, ['Contact', 'Contribution', 'Participant', 'Membership'])) { diff --git a/civicrm/CRM/Core/BAO/UserJob.php b/civicrm/CRM/Core/BAO/UserJob.php index 8f572fa54d4f3dcfdad0f1e78230e418a64cf0fb..0e3ea8faf294ca8f47ee1674af9dbec8a0126716 100644 --- a/civicrm/CRM/Core/BAO/UserJob.php +++ b/civicrm/CRM/Core/BAO/UserJob.php @@ -16,6 +16,7 @@ */ use Civi\Api4\Mapping; +use Civi\Api4\Queue; use Civi\Api4\UserJob; use Civi\Core\ClassScanner; use Civi\Core\Event\PreEvent; @@ -102,6 +103,9 @@ class CRM_Core_BAO_UserJob extends CRM_Core_DAO_UserJob implements HookInterface $mappingName = Mapping::get(FALSE)->addWhere('id', '=', $event->id)->addSelect('name')->execute()->first()['name']; UserJob::delete(FALSE)->addWhere('name', '=', 'import_' . $mappingName)->execute(); } + if ($event->entity === 'UserJob' && $event->action === 'delete') { + Queue::delete(FALSE)->addWhere('name', '=', 'user_job_' . $event->id)->execute(); + } } /** diff --git a/civicrm/CRM/Core/CodeGen/Util/MessageTemplates.php b/civicrm/CRM/Core/CodeGen/Util/MessageTemplates.php new file mode 100644 index 0000000000000000000000000000000000000000..2df31656427e7180ab3a707674768e0632008f2e --- /dev/null +++ b/civicrm/CRM/Core/CodeGen/Util/MessageTemplates.php @@ -0,0 +1,82 @@ +<?php +/** + * Class CRM_Core_CodeGen_Util_MessageTemplate + */ +class CRM_Core_CodeGen_Util_MessageTemplates { + + public static function assignSmartyVariables($smarty): void { + // Assigns for message templates + $ogNames = [ + 'case' => ts('Message Template Workflow for Cases', ['escape' => 'sql']), + 'contribution' => ts('Message Template Workflow for Contributions', ['escape' => 'sql']), + 'event' => ts('Message Template Workflow for Events', ['escape' => 'sql']), + 'friend' => ts('Message Template Workflow for Tell-a-Friend', ['escape' => 'sql']), + 'membership' => ts('Message Template Workflow for Memberships', ['escape' => 'sql']), + 'meta' => ts('Message Template Workflow for Meta Templates', ['escape' => 'sql']), + 'pledge' => ts('Message Template Workflow for Pledges', ['escape' => 'sql']), + 'uf' => ts('Message Template Workflow for Profiles', ['escape' => 'sql']), + 'petition' => ts('Message Template Workflow for Petition', ['escape' => 'sql']), + ]; + $ovNames = [ + 'case' => [ + 'case_activity' => ts('Cases - Send Copy of an Activity', ['escape' => 'sql']), + ], + 'contribution' => [ + 'contribution_dupalert' => ts('Contributions - Duplicate Organization Alert', ['escape' => 'sql']), + 'contribution_offline_receipt' => ts('Contributions - Receipt (off-line)', ['escape' => 'sql']), + 'contribution_online_receipt' => ts('Contributions - Receipt (on-line)', ['escape' => 'sql']), + 'contribution_invoice_receipt' => ts('Contributions - Invoice', ['escape' => 'sql']), + 'contribution_recurring_notify' => ts('Contributions - Recurring Start and End Notification', ['escape' => 'sql']), + 'contribution_recurring_cancelled' => ts('Contributions - Recurring Cancellation Notification', ['escape' => 'sql']), + 'contribution_recurring_billing' => ts('Contributions - Recurring Billing Updates', ['escape' => 'sql']), + 'contribution_recurring_edit' => ts('Contributions - Recurring Updates', ['escape' => 'sql']), + 'pcp_notify' => ts('Personal Campaign Pages - Admin Notification', ['escape' => 'sql']), + 'pcp_status_change' => ts('Personal Campaign Pages - Supporter Status Change Notification', ['escape' => 'sql']), + 'pcp_supporter_notify' => ts('Personal Campaign Pages - Supporter Welcome', ['escape' => 'sql']), + 'pcp_owner_notify' => ts('Personal Campaign Pages - Owner Notification', ['escape' => 'sql']), + 'payment_or_refund_notification' => ts('Additional Payment Receipt or Refund Notification', ['escape' => 'sql']), + ], + 'event' => [ + 'event_offline_receipt' => ts('Events - Registration Confirmation and Receipt (off-line)', ['escape' => 'sql']), + 'event_online_receipt' => ts('Events - Registration Confirmation and Receipt (on-line)', ['escape' => 'sql']), + 'event_registration_receipt' => ts('Events - Receipt only', ['escape' => 'sql']), + 'participant_cancelled' => ts('Events - Registration Cancellation Notice', ['escape' => 'sql']), + 'participant_confirm' => ts('Events - Registration Confirmation Invite', ['escape' => 'sql']), + 'participant_expired' => ts('Events - Pending Registration Expiration Notice', ['escape' => 'sql']), + 'participant_transferred' => ts('Events - Registration Transferred Notice', ['escape' => 'sql']), + ], + 'friend' => [ + 'friend' => ts('Tell-a-Friend Email', ['escape' => 'sql']), + ], + 'membership' => [ + 'membership_offline_receipt' => ts('Memberships - Signup and Renewal Receipts (off-line)', ['escape' => 'sql']), + 'membership_online_receipt' => ts('Memberships - Receipt (on-line)', ['escape' => 'sql']), + 'membership_autorenew_cancelled' => ts('Memberships - Auto-renew Cancellation Notification', ['escape' => 'sql']), + 'membership_autorenew_billing' => ts('Memberships - Auto-renew Billing Updates', ['escape' => 'sql']), + ], + 'meta' => [ + 'test_preview' => ts('Test-drive - Receipt Header', ['escape' => 'sql']), + ], + 'pledge' => [ + 'pledge_acknowledge' => ts('Pledges - Acknowledgement', ['escape' => 'sql']), + 'pledge_reminder' => ts('Pledges - Payment Reminder', ['escape' => 'sql']), + ], + 'uf' => [ + 'uf_notify' => ts('Profiles - Admin Notification', ['escape' => 'sql']), + ], + 'petition' => [ + 'petition_sign' => ts('Petition - signature added', ['escape' => 'sql']), + 'petition_confirmation_needed' => ts('Petition - need verification', ['escape' => 'sql']), + ], + ]; + $smarty->assign('ogNames', $ogNames); + $smarty->assign('ovNames', $ovNames); + $dir = $smarty->get_template_vars()['gencodeXmlDir'] . '/templates/message_templates/sample'; + $templates = []; + foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { + $templates[] = ['name' => basename($filename, '.tpl'), 'filename' => "$dir/$filename"]; + } + $smarty->assign('templates', $templates); + } + +} diff --git a/civicrm/CRM/Core/CodeGen/Util/Smarty.php b/civicrm/CRM/Core/CodeGen/Util/Smarty.php index d45989504d557c51491073dda3ceeda0d7112e0e..a1eb1f29c963b4945e2bda6e633682bc48674940 100644 --- a/civicrm/CRM/Core/CodeGen/Util/Smarty.php +++ b/civicrm/CRM/Core/CodeGen/Util/Smarty.php @@ -59,9 +59,9 @@ class CRM_Core_CodeGen_Util_Smarty { require_once 'CRM/Core/Smarty/plugins/block.localize.php'; $smarty->register_block('localize', 'smarty_block_localize'); - $smarty->assign('gencodeXmlDir', dirname(dirname(dirname(dirname(__DIR__)))) . '/xml'); - + require_once 'CRM/Core/CodeGen/Util/MessageTemplates.php'; + CRM_Core_CodeGen_Util_MessageTemplates::assignSmartyVariables($smarty); return $smarty; } diff --git a/civicrm/CRM/Core/DAO.php b/civicrm/CRM/Core/DAO.php index 027ea8c5abc7d13ae741f3088cd0dfaa23b72cc7..eb8a7499a36821b07afd11f643d69f4de4afa1e5 100644 --- a/civicrm/CRM/Core/DAO.php +++ b/civicrm/CRM/Core/DAO.php @@ -780,6 +780,10 @@ class CRM_Core_DAO extends DB_DataObject { } } elseif (is_array($value) && !empty($field['serialize'])) { + if (!empty($field['pseudoconstant'])) { + // Pseudoconstant implies 1-1 option matching; duplicates would not make sense + $value = array_unique($value); + } $this->$dbName = CRM_Core_DAO::serializeField($value, $field['serialize']); $allNull = FALSE; } @@ -3408,27 +3412,76 @@ SELECT contact_id // No label supplied, do nothing return; } + + // Strip unsafe characters and trim to max length, allowing room for a + // unique suffix composed of an underscore + 4 alphanumeric chars, + // supporting up to 36^4=1,679,616 unique names for any given value of + // $label. Half that amount could be considered the working limit, as + // much above that the time to find a non-existent suffix becomes + // unacceptable. + $maxSuffixLen = 5; $maxLen = static::getSupportedFields()['name']['maxlength'] ?? 255; - // Strip unsafe characters and trim to max length (-3 characters leaves room for a unique suffix) - $name = CRM_Utils_String::munge($label, '_', $maxLen - 3); - - // Find existing records with the same name - $sql = new CRM_Utils_SQL_Select($this::getTableName()); - $sql->select(['id', 'name']); - $sql->where('name LIKE @name', ['@name' => $name . '%']); - // Include all fields that are part of the index - foreach (array_diff($indexNameWith, ['name']) as $field) { - $sql->where("`$field` = @val", ['@val' => $this->$field]); - } - $query = $sql->toSQL(); - $existing = self::executeQuery($query)->fetchMap('id', 'name'); - $dupes = 0; - $suffix = ''; - // Add unique suffix if existing records have the same name - while (in_array($name . $suffix, $existing)) { - $suffix = '_' . ++$dupes; - } - $this->name = $name . $suffix; + $name = CRM_Utils_String::munge($label, '_', $maxLen - $maxSuffixLen); + + // Define an arbitrary limit on how many guesses we will perform before + // throwing an exception. This would occur only in some unanticipated use + // case. + $max_guesses = 36 ^ ($maxSuffixLen - 1); + + $guesses_per_loop = 5; + $guess_count = 0; + + do { + // Make an initial attempt to guess a unique name by searching for + // 5 candidates (the original $name plus $name with 4 random suffixes). + // If all of these happen to exist in the table, we'll keep trying, + // doubling the number of guesses each time through the loop. + for ($i = 0; $i < $guesses_per_loop; $i++, $guess_count++) { + $suffix = $guess_count == 0 ? '' : + '_' . CRM_Utils_String::createRandom($maxSuffixLen - 1, 'abcdefghijklmnopqrstuvwxyz0123456789'); + $candidates[$i] = $name . $suffix; + } + + $sql = new CRM_Utils_SQL_Select($this::getTableName()); + $sql->select(['id', 'LOWER(name) name_lc']); + $sql->where('name IN (@candidates)', ['@candidates' => $candidates]); + + // Narrow the search by specifying the value of any additional fields + // that may be part of the index. + foreach (array_diff($indexNameWith, ['name']) as $field) { + $sql->where("`$field` = @val", ['@val' => $this->$field]); + } + $query = $sql->toSQL(); + + // Search the table for our candidates using case-sensitivity determined + // by the collation of the name column -- case-insensitive by default. + // Array $existing_lc will contains all the candidates found in the table, + // converted to lower-case. + $existing_lc = self::executeQuery($query)->fetchMap('id', 'name_lc'); + + if (count($existing_lc) < $guesses_per_loop) { + // Not all of our candidates were found in the table, so we'll search + // for the first element of $candidates that wasn't found. This search + // is performed case-insensitive to ensure that the selected candidate + // is unique with both ci and cs collation of the name column. If the + // original (unsuffixed) value of $name doesn't exist in the table, then + // that value will be our selected candidate. + foreach ($candidates as $c) { + if (!in_array(strtolower($c), $existing_lc)) { + $this->name = $c; + return; + } + } + } + else { + // All candidates were found in the table. Try harder next time. + $guesses_per_loop = min(1000, $guesses_per_loop * 2); + + if ($guess_count > $max_guesses) { + throw new CRM_Core_Exception("CRM_Core_DAO::makeNameFromLabel failed to generate a unique name for label $label."); + } + } + } while (1); } /** diff --git a/civicrm/CRM/Core/DAO/EntityTag.php b/civicrm/CRM/Core/DAO/EntityTag.php index 3f57d572bdecb9825380674732ec5df88f4ad08b..df3e79bd2ae813ad7b60050d49f5b1641a3ef20f 100644 --- a/civicrm/CRM/Core/DAO/EntityTag.php +++ b/civicrm/CRM/Core/DAO/EntityTag.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/EntityTag.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:2fccc138a26fe391325fd641c891cd91) + * (GenCodeChecksum:5bca5ff1c4ba7d85034410408464f0ac) */ /** @@ -200,7 +200,8 @@ class CRM_Core_DAO_EntityTag extends CRM_Core_DAO { 'pseudoconstant' => [ 'table' => 'civicrm_tag', 'keyColumn' => 'id', - 'labelColumn' => 'name', + 'labelColumn' => 'label', + 'nameColumn' => 'name', 'condition' => 'is_tagset != 1', ], 'add' => '1.1', diff --git a/civicrm/CRM/Core/DAO/Managed.php b/civicrm/CRM/Core/DAO/Managed.php index a82a5cae361932593e10237dcc9b91bf3ad09abb..d23d84643e13463b3a006c5f1fec54b8457d126a 100644 --- a/civicrm/CRM/Core/DAO/Managed.php +++ b/civicrm/CRM/Core/DAO/Managed.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Managed.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:1f1273f734c559351767e25b05b3925e) + * (GenCodeChecksum:4ff1b19106d4bc7810d4aa9eb2a73f65) */ /** @@ -40,10 +40,10 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { public $id; /** - * Name of the module which declared this object + * Name of the module which declared this object (soft FK to civicrm_extension.full_name) * * @var string - * (SQL type: varchar(127)) + * (SQL type: varchar(255)) * Note that values will be retrieved from the database as a string. */ public $module; @@ -51,8 +51,8 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { /** * Symbolic name used by the module to identify the object * - * @var string|null - * (SQL type: varchar(127)) + * @var string + * (SQL type: varchar(255)) * Note that values will be retrieved from the database as a string. */ public $name; @@ -67,9 +67,9 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { public $entity_type; /** - * Foreign key to the referenced item. + * Soft foreign key to the referenced item. * - * @var int|string + * @var int|string|null * (SQL type: int unsigned) * Note that values will be retrieved from the database as a string. */ @@ -78,8 +78,8 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { /** * Policy on when to cleanup entity (always, never, unused) * - * @var string|null - * (SQL type: varchar(32)) + * @var string + * (SQL type: varchar(16)) * Note that values will be retrieved from the database as a string. */ public $cleanup; @@ -146,9 +146,9 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'name' => 'module', 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Module'), - 'description' => ts('Name of the module which declared this object'), + 'description' => ts('Name of the module which declared this object (soft FK to civicrm_extension.full_name)'), 'required' => TRUE, - 'maxlength' => 127, + 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, 'usage' => [ 'import' => FALSE, @@ -161,6 +161,9 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'entity' => 'Managed', 'bao' => 'CRM_Core_BAO_Managed', 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_BAO_Managed::getBaseModules', + ], 'add' => '4.2', ], 'name' => [ @@ -168,7 +171,8 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Name'), 'description' => ts('Symbolic name used by the module to identify the object'), - 'maxlength' => 127, + 'required' => TRUE, + 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, 'usage' => [ 'import' => FALSE, @@ -208,8 +212,7 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'name' => 'entity_id', 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Entity ID'), - 'description' => ts('Foreign key to the referenced item.'), - 'required' => TRUE, + 'description' => ts('Soft foreign key to the referenced item.'), 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -228,8 +231,9 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Cleanup Setting'), 'description' => ts('Policy on when to cleanup entity (always, never, unused)'), - 'maxlength' => 32, - 'size' => CRM_Utils_Type::MEDIUM, + 'required' => TRUE, + 'maxlength' => 16, + 'size' => CRM_Utils_Type::TWELVE, 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -237,6 +241,7 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO { 'token' => FALSE, ], 'where' => 'civicrm_managed.cleanup', + 'default' => 'always', 'table_name' => 'civicrm_managed', 'entity' => 'Managed', 'bao' => 'CRM_Core_BAO_Managed', diff --git a/civicrm/CRM/Core/DAO/Tag.php b/civicrm/CRM/Core/DAO/Tag.php index b84fa0d5e4e102adf00864000ea304c105ba6944..b6c5a2f1a4d4adc20f365c62db9fbe957c1209a9 100644 --- a/civicrm/CRM/Core/DAO/Tag.php +++ b/civicrm/CRM/Core/DAO/Tag.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Tag.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:f8d8698f48fbd60b8d8e0bf8eff40c47) + * (GenCodeChecksum:ded9d6a9f9c08146a0205da83c838c91) */ /** @@ -35,7 +35,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { * * @var string */ - public static $_labelField = 'name'; + public static $_labelField = 'label'; /** * Should CiviCRM log any modifications to this table in the civicrm_log table. @@ -54,7 +54,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { public $id; /** - * Name of Tag. + * Unique machine name * * @var string * (SQL type: varchar(64)) @@ -62,6 +62,15 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { */ public $name; + /** + * User-facing tag name + * + * @var string + * (SQL type: varchar(64)) + * Note that values will be retrieved from the database as a string. + */ + public $label; + /** * Optional verbose description of the tag. * @@ -206,7 +215,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'name' => 'name', 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Tag Name'), - 'description' => ts('Name of Tag.'), + 'description' => ts('Unique machine name'), 'required' => TRUE, 'maxlength' => 64, 'size' => CRM_Utils_Type::BIG, @@ -223,6 +232,30 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'localizable' => 0, 'add' => '1.1', ], + 'label' => [ + 'name' => 'label', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Tag Label'), + 'description' => ts('User-facing tag name'), + 'required' => TRUE, + 'maxlength' => 64, + 'size' => CRM_Utils_Type::BIG, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_tag.label', + 'table_name' => 'civicrm_tag', + 'entity' => 'Tag', + 'bao' => 'CRM_Core_BAO_Tag', + 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], + 'add' => '5.68', + ], 'description' => [ 'name' => 'description', 'type' => CRM_Utils_Type::T_STRING, @@ -267,7 +300,8 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'pseudoconstant' => [ 'table' => 'civicrm_tag', 'keyColumn' => 'id', - 'labelColumn' => 'name', + 'labelColumn' => 'label', + 'nameColumn' => 'name', ], 'add' => '1.1', ], @@ -375,6 +409,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'localizable' => 0, 'FKClassName' => 'CRM_Contact_DAO_Contact', 'html' => [ + 'type' => 'EntityRef', 'label' => ts("Created By"), ], 'add' => '3.4', @@ -412,10 +447,17 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'token' => FALSE, ], 'where' => 'civicrm_tag.created_date', + 'default' => 'CURRENT_TIMESTAMP', 'table_name' => 'civicrm_tag', 'entity' => 'Tag', 'bao' => 'CRM_Core_BAO_Tag', 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDateTime', + 'label' => ts("Created Date"), + ], + 'readonly' => TRUE, 'add' => '3.4', ], ]; diff --git a/civicrm/CRM/Core/EntityTokens.php b/civicrm/CRM/Core/EntityTokens.php index 850f5848debcc9a380126288fac147ac96b6631e..ce76c40e23502738ed23fa86b4f136a9fd8e0918 100644 --- a/civicrm/CRM/Core/EntityTokens.php +++ b/civicrm/CRM/Core/EntityTokens.php @@ -701,4 +701,35 @@ class CRM_Core_EntityTokens extends AbstractTokenSubscriber { return $cacheKey; } + /** + * Get metadata for tokens for a related entity joined by a field on the main entity. + * + * @param string $entity + * @param string $joinField + * @param array $tokenList + * @param array $hiddenTokens + * + * @return array + * @throws \CRM_Core_Exception + */ + protected function getRelatedTokensForEntity(string $entity, string $joinField, array $tokenList, $hiddenTokens = []): array { + $apiParams = ['checkPermissions' => FALSE]; + if ($tokenList !== ['*']) { + $apiParams['where'] = [['name', 'IN', $tokenList]]; + } + $relatedTokens = civicrm_api4($entity, 'getFields', $apiParams); + $tokens = []; + foreach ($relatedTokens as $relatedToken) { + $tokens[$joinField . '.' . $relatedToken['name']] = [ + 'title' => $relatedToken['title'], + 'name' => $joinField . '.' . $relatedToken['name'], + 'type' => 'mapped', + 'data_type' => $relatedToken['data_type'], + 'input_type' => $relatedToken['input_type'], + 'audience' => in_array($relatedToken['name'], $hiddenTokens, TRUE) ? 'hidden' : 'user', + ]; + } + return $tokens; + } + } diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php index 10382406dfb46fd9d4ef39e46f9927da1f654e60..da2a22ae6d1238ab6e188ce8e60a4a99bc66c0d2 100644 --- a/civicrm/CRM/Core/Form.php +++ b/civicrm/CRM/Core/Form.php @@ -202,6 +202,10 @@ class CRM_Core_Form extends HTML_QuickForm_Page { * to combine fields from the various screens & save the resulting 'submitted_values' * to the UserJob. * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * * @return array */ public function getSubmittedValues(): array { @@ -219,6 +223,10 @@ class CRM_Core_Form extends HTML_QuickForm_Page { * Contribution_Main and Contribution_Confirm) accessible you can override * this function as CRM_Import_Forms does. * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. + * * @return string[] */ protected function getSubmittableFields(): array { @@ -781,7 +789,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $this->submitOnce = TRUE; } - $attrs = ['class' => 'crm-form-submit'] + (array) CRM_Utils_Array::value('js', $button); + $attrs = ['class' => 'crm-form-submit'] + ($button['js'] ?? []); // A lot of forms use the hacky method of looking at // `$params['button name']` (dating back to them being inputs with a @@ -1836,7 +1844,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } if ($context == 'search') { $widget = $widget == 'Select2' ? $widget : 'Select'; - $props['multiple'] = CRM_Utils_Array::value('multiple', $props, TRUE); + $props['multiple'] = $props['multiple'] ?? TRUE; } elseif (!empty($fieldSpec['serialize'])) { $props['multiple'] = TRUE; @@ -2316,6 +2324,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $props['data-select-params'] = json_encode($props['select']); $props['data-api-params'] = json_encode($props['api']); $props['data-api-entity'] = $props['entity']; + if (!empty($props['select']['quickAdd'])) { + Civi::service('angularjs.loader')->addModules(['af']); + } CRM_Utils_Array::remove($props, 'select', 'api', 'entity'); return $this->add('text', $name, $label, $props, $required); } @@ -3012,6 +3023,8 @@ class CRM_Core_Form extends HTML_QuickForm_Page { * they have permission to (setContactID does do that) and can be used to check if the user is * accessing their own record. * + * @deprecated use getAuthenticatedContactID() + * * @return int|false * @throws \CRM_Core_Exception */ @@ -3028,14 +3041,20 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } /** - * Get values submitted by the user. + * Get value submitted by the user. * * These values have been validated against the fields added to the form. * https://pear.php.net/manual/en/package.html.html-quickform.html-quickform.exportvalues.php * + * Any money processing has also been done. + * * @param string $fieldName * * @return mixed|null + * + * @api This function will not change in a minor release and is supported for + * use outside of core. This annotation / external support for properties + * is only given where there is specific test cover. */ public function getSubmittedValue(string $fieldName) { if (empty($this->exportedValues)) { @@ -3045,6 +3064,15 @@ class CRM_Core_Form extends HTML_QuickForm_Page { if (in_array($fieldName, $this->submittableMoneyFields, TRUE)) { return CRM_Utils_Rule::cleanMoney($value); } + else { + // Numeric fields are not in submittableMoneyFields (for now) + $fieldRules = $this->_rules[$fieldName] ?? []; + foreach ($fieldRules as $rule) { + if ('money' === $rule['type']) { + return CRM_Utils_Rule::cleanMoney($value); + } + } + } return $value; } diff --git a/civicrm/CRM/Core/Form/RecurringEntity.php b/civicrm/CRM/Core/Form/RecurringEntity.php index 6390726a755f03cb287224ba0f5c831656acdead..ce86c7a42ab2ce7d1fc07b38fe6889e0343384aa 100644 --- a/civicrm/CRM/Core/Form/RecurringEntity.php +++ b/civicrm/CRM/Core/Form/RecurringEntity.php @@ -20,6 +20,12 @@ * This class generates form components for processing Entity. */ class CRM_Core_Form_RecurringEntity { + + private static $preDeleteFunction = [ + 'Event' => 'CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents', + 'Activity' => NULL, + ]; + /** * Current entity id * @var int @@ -317,6 +323,7 @@ class CRM_Core_Form_RecurringEntity { * * @param array $params * @param string $type + * Redundant - always the same as `$params['entity_table']` * @param array $linkedEntities * * @throws \CRM_Core_Exception @@ -393,59 +400,22 @@ class CRM_Core_Form_RecurringEntity { } } - // FIXME: This is the worst way possible to convert a table name to an api entity name - $apiEntityType = explode("_", $type); - if (!empty($apiEntityType[1])) { - $apiType = $apiEntityType[1]; - } - //Delete relations if any from recurring entity tables before inserting new relations for this entity id + // Delete relations if any from recurring entity tables before inserting new relations for this entity id if ($params['entity_id']) { - //If entity has any pre delete function, consider that first - if (!empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['pre_delete_func']) && - !empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['helper_class']) - ) { - // FIXME: This calls `CRM_Event_Form_ManageEvent_Repeat::checkRegistrationForEvents` - // which then sets the static variable `CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted` - // which is then accessed below and used to delete events with no registrations. - // I can't think of a worse way to pass a variable back from a function. - call_user_func_array(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['pre_delete_func'], [$params['entity_id']]); + $entityType = CRM_Core_DAO_AllCoreTables::getEntityNameForTable($type); + // Use pre-delete function for events to exclude those with registered participants + if (!empty(self::$preDeleteFunction[$entityType])) { + $itemsToDelete = call_user_func_array(self::$preDeleteFunction[$entityType], [$params['entity_id']]); } - //Ready to execute delete on entities if it has delete function set - if (!empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func']) && - !empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['helper_class']) - ) { - //Check if pre delete function has some ids to be deleted - if (!empty(CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted)) { - foreach (CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted as $eid) { - $result = civicrm_api3( - ucfirst(strtolower($apiType)), - CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func'], - [ - 'sequential' => 1, - 'id' => $eid, - ] - ); - if ($result['error']) { - CRM_Core_Error::statusBounce(ts('Error creating recurring list')); - } - } - } - else { - $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($params['entity_id'], $params['entity_table'], FALSE); - foreach ($getRelatedEntities as $key => $value) { - $result = civicrm_api3( - ucfirst(strtolower($apiType)), - CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func'], - [ - 'sequential' => 1, - 'id' => $value['id'], - ] - ); - if ($result['error']) { - CRM_Core_Error::statusBounce(ts('Error creating recurring list')); - } - } - } + else { + $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($params['entity_id'], $params['entity_table'], FALSE); + $itemsToDelete = array_column($getRelatedEntities, 'id'); + } + if ($itemsToDelete) { + civicrm_api4($entityType, 'delete', [ + 'checkPermissions' => FALSE, + 'where' => [['id', 'IN', $itemsToDelete]], + ]); } // find all entities from the recurring set. At this point we 'll get entities which were not deleted diff --git a/civicrm/CRM/Core/Form/Tag.php b/civicrm/CRM/Core/Form/Tag.php index 0d55661b3cd7b9914cae77b842845db8533d6fb7..fe9c14605b59bb241e1cfb6552a2b8a2edaafce0 100644 --- a/civicrm/CRM/Core/Form/Tag.php +++ b/civicrm/CRM/Core/Form/Tag.php @@ -46,10 +46,7 @@ class CRM_Core_Form_Tag { $form->assign('isTagset', FALSE); $mode = NULL; - foreach ($parentNames as &$parentNameItem) { - // get the parent id for tag list input for keyword - $parentId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Tag', $parentNameItem, 'id', 'name'); - + foreach ($parentNames as $parentId => $parentNameItem) { // check if parent exists if ($parentId) { $tagsetItem = $tagsetElementName . 'parentId_' . $parentId; diff --git a/civicrm/CRM/Core/ManagedEntities.php b/civicrm/CRM/Core/ManagedEntities.php index daacdca7a5922f3a1bffd505cfaf969669b7e1a6..09ea4c76a247698e81fc8a5e5ced44242c26485e 100644 --- a/civicrm/CRM/Core/ManagedEntities.php +++ b/civicrm/CRM/Core/ManagedEntities.php @@ -153,7 +153,7 @@ class CRM_Core_ManagedEntities { // Fetch default values for fields that are writeable $condition = [['type', '=', 'Field'], ['readonly', 'IS EMPTY'], ['default_value', '!=', 'now']]; // Exclude "weight" as that auto-adjusts - if (in_array('SortableEntity', CoreUtil::getInfoItem($item['entity_type'], 'type'), TRUE)) { + if (CoreUtil::isType($item['entity_type'], 'SortableEntity')) { $weightCol = CoreUtil::getInfoItem($item['entity_type'], 'order_by'); $condition[] = ['name', '!=', $weightCol]; } @@ -200,12 +200,18 @@ class CRM_Core_ManagedEntities { } /** - * Create a new entity. + * Create a new entity (if policy allows). * * @param array $item * Entity specification (per hook_civicrm_managedEntities). */ protected function insertNewEntity(array $item) { + // If entity has previously been created, only re-insert if 'update' policy is 'always' + // NOTE: $item[id] is the id of the `civicrm_managed` row not the entity itself + // If that id exists, then we know the entity was inserted previously and subsequently deleted. + if (!empty($item['id']) && $item['update'] !== 'always') { + return; + } $params = $item['params']; // APIv4 if ($params['version'] == 4) { @@ -233,11 +239,13 @@ class CRM_Core_ManagedEntities { } $dao = new CRM_Core_DAO_Managed(); + // If re-inserting the entity, we'll update instead of create the managed record. + $dao->id = $item['id'] ?? NULL; $dao->module = $item['module']; $dao->name = $item['name']; $dao->entity_type = $item['entity_type']; $dao->entity_id = $id; - $dao->cleanup = $item['cleanup'] ?? NULL; + $dao->cleanup = $item['cleanup'] ?? 'always'; $dao->save(); } @@ -291,7 +299,13 @@ class CRM_Core_ManagedEntities { } elseif ($doUpdate && $item['params']['version'] == 4) { $params = ['checkPermissions' => FALSE] + $item['params']; - $params['values']['id'] = $item['entity_id']; + $idField = CoreUtil::getIdFieldName($item['entity_type']); + $params['values'][$idField] = $item['entity_id']; + // Exclude "weight" as that auto-adjusts + if (CoreUtil::isType($item['entity_type'], 'SortableEntity')) { + $weightCol = CoreUtil::getInfoItem($item['entity_type'], 'order_by'); + unset($params['values'][$weightCol]); + } // 'match' param doesn't apply to "update" action unset($params['match']); try { @@ -429,30 +443,6 @@ class CRM_Core_ManagedEntities { return $result; } - /** - * @param array $moduleIndex - * @param array $declarations - * - * @return array - * indexed by module,name - */ - protected function createDeclarationIndex($moduleIndex, $declarations) { - $result = []; - if (!isset($moduleIndex[TRUE])) { - return $result; - } - foreach ($moduleIndex[TRUE] as $moduleName => $module) { - if ($module->is_active) { - // need an empty array() for all active modules, even if there are no current $declarations - $result[$moduleName] = []; - } - } - foreach ($declarations as $declaration) { - $result[$declaration['module']][$declaration['name']] = $declaration; - } - return $result; - } - /** * @param array $declarations * @@ -585,29 +575,20 @@ class CRM_Core_ManagedEntities { $plan = []; foreach ($managedEntities as $managedEntity) { $key = "{$managedEntity['module']}_{$managedEntity['name']}_{$managedEntity['entity_type']}"; - // Set to disable or delete if module is disabled or missing - it will be overwritten below module is active. + // Set to disable or delete if module is disabled or missing - it will be overwritten below if module is active. $action = $this->isModuleDisabled($managedEntity['module']) ? 'disable' : 'delete'; $plan[$key] = array_merge($managedEntity, ['managed_action' => $action]); } foreach ($declarations as $declaration) { $key = "{$declaration['module']}_{$declaration['name']}_{$declaration['entity']}"; - if (isset($plan[$key])) { - $plan[$key]['params'] = $declaration['params']; - $plan[$key]['managed_action'] = 'update'; - $plan[$key]['cleanup'] = $declaration['cleanup'] ?? NULL; - $plan[$key]['update'] = $declaration['update'] ?? 'always'; - } - else { - $plan[$key] = [ - 'module' => $declaration['module'], - 'name' => $declaration['name'], - 'entity_type' => $declaration['entity'], - 'managed_action' => 'create', - 'params' => $declaration['params'], - 'cleanup' => $declaration['cleanup'] ?? NULL, - 'update' => $declaration['update'] ?? 'always', - ]; - } + // Set action to update if already managed + $plan[$key]['managed_action'] = empty($plan[$key]['entity_id']) ? 'create' : 'update'; + $plan[$key]['module'] = $declaration['module']; + $plan[$key]['name'] = $declaration['name']; + $plan[$key]['entity_type'] = $declaration['entity']; + $plan[$key]['params'] = $declaration['params']; + $plan[$key]['cleanup'] = $declaration['cleanup'] ?? NULL; + $plan[$key]['update'] = $declaration['update'] ?? 'always'; } return $plan; } diff --git a/civicrm/CRM/Core/OptionValue.php b/civicrm/CRM/Core/OptionValue.php index 95662e6bd4b99c595fa8d412de4e0f5d60888f2a..89f45a28da2abe29d95d353c60ab371c4b336ce8 100644 --- a/civicrm/CRM/Core/OptionValue.php +++ b/civicrm/CRM/Core/OptionValue.php @@ -181,7 +181,7 @@ class CRM_Core_OptionValue { * */ public static function addOptionValue(&$params, $optionGroupName, $action, $optionValueID) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; // checking if the group name with the given id or name (in $groupParams) exists $groupParams = ['name' => $optionGroupName, 'is_active' => 1]; $optionGroup = CRM_Core_BAO_OptionGroup::retrieve($groupParams, $defaults); diff --git a/civicrm/CRM/Core/Page.php b/civicrm/CRM/Core/Page.php index 41a8a57c693a03be9a3c7fc532c653d45672342c..bfe554070fc6548476a4fe4cdffe81088372fdf7 100644 --- a/civicrm/CRM/Core/Page.php +++ b/civicrm/CRM/Core/Page.php @@ -132,6 +132,8 @@ class CRM_Core_Page { // in 'body.tpl 'suppressForm', 'beginHookFormElements', + // This is checked in validate.tpl + 'snippet_type', ]; /** diff --git a/civicrm/CRM/Core/Page/Redirect.php b/civicrm/CRM/Core/Page/Redirect.php index 4f0b83dde4b60267b614c0890064518c8b989ea6..3977e5ad3389e846a60b8543f067256956d22a85 100644 --- a/civicrm/CRM/Core/Page/Redirect.php +++ b/civicrm/CRM/Core/Page/Redirect.php @@ -55,7 +55,7 @@ class CRM_Core_Page_Redirect extends CRM_Core_Page { $urlParts = parse_url($urlString); $url = CRM_Utils_System::url( $urlParts['path'], - CRM_Utils_Array::value('query', $urlParts, NULL), + $urlParts['query'] ?? NULL, $absolute, CRM_Utils_Array::value('fragment', $urlParts, NULL) ); diff --git a/civicrm/CRM/Core/Payment.php b/civicrm/CRM/Core/Payment.php index 0453ac8ad712de39aa2f1add103e5d7241d8dd79..9e0f2a33a87ecba2938175e0fe59fa9b16555edb 100644 --- a/civicrm/CRM/Core/Payment.php +++ b/civicrm/CRM/Core/Payment.php @@ -591,6 +591,24 @@ abstract class CRM_Core_Payment { case 'contributionPageContinueText': return ts('Click the <strong>Continue</strong> button to proceed with the payment.'); + case 'contributionPageConfirmText': + if ($params['amount'] <= 0.0) { + return ''; + } + if ((int) $this->_paymentProcessor['billing_mode'] !== 4) { + return ts('Your contribution will not be completed until you click the <strong>%1</strong> button. Please click the button one time only.', [1 => ts('Make Contribution')]); + } + return ''; + + case 'contributionPageButtonText': + if ($params['amount'] <= 0.0 || (int) $this->_paymentProcessor['billing_mode'] === 4) { + return ts('Continue'); + } + if ($params['is_payment_to_existing']) { + return ts('Make Payment'); + } + return ts('Make Contribution'); + case 'cancelRecurDetailText': if ($params['mode'] === 'auto_renew') { return ts('Click the button below if you want to cancel the auto-renewal option for your %1 membership. This will not cancel your membership. However you will need to arrange payment for renewal when your membership expires.', diff --git a/civicrm/CRM/Core/Payment/Manual.php b/civicrm/CRM/Core/Payment/Manual.php index 07a008c0ec3737883ed85f547a88415a0f472b29..26b348638b24a55a1d083b3aadae09a6404a3d6a 100644 --- a/civicrm/CRM/Core/Payment/Manual.php +++ b/civicrm/CRM/Core/Payment/Manual.php @@ -272,13 +272,16 @@ class CRM_Core_Payment_Manual extends CRM_Core_Payment { * * @return string */ - public function getText($context, $params) { + public function getText($context, $params): string { switch ($context) { case 'contributionPageContinueText': - if ($params['amount'] <= 0) { - return ts('To complete this transaction, click the <strong>Continue</strong> button below.'); - } - return ts('To complete your contribution, click the <strong>Continue</strong> button below.'); + return ''; + + case 'contributionPageButtonText': + return ts('Continue'); + + case 'contributionPageConfirmText': + return ''; default: return parent::getText($context, $params); diff --git a/civicrm/CRM/Core/Payment/PayPalIPN.php b/civicrm/CRM/Core/Payment/PayPalIPN.php index 23be16e1afd08038501836e257282391c55a30ff..232cad6e9f21d9de882dbddf6070c4fbf508d75a 100644 --- a/civicrm/CRM/Core/Payment/PayPalIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalIPN.php @@ -430,7 +430,7 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $this->contribution = new CRM_Contribute_BAO_Contribution(); $this->contribution->id = $this->getContributionID(); if (!$this->contribution->find(TRUE)) { - throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . (int) $contribution->id, NULL, ['context' => "Could not find contribution record: {$contribution->id} in IPN request: "]); + throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . (int) $this->contribution->id, NULL, ['context' => "Could not find contribution record: {$this->contribution->id} in IPN request: "]); } if ((int) $this->contribution->contact_id !== $this->getContactID()) { CRM_Core_Error::debug_log_message("Contact ID in IPN not found but contact_id found in contribution."); diff --git a/civicrm/CRM/Core/PseudoConstant.php b/civicrm/CRM/Core/PseudoConstant.php index 4a86234f1f837fc7b9964b93c44428b2c00103cf..73275f3eb51a29f7a8a24182f292fe8abb5b88b5 100644 --- a/civicrm/CRM/Core/PseudoConstant.php +++ b/civicrm/CRM/Core/PseudoConstant.php @@ -68,12 +68,6 @@ class CRM_Core_PseudoConstant { */ private static $country; - /** - * CountryIsoCode. - * @var array - */ - private static $countryIsoCode; - /** * group * @var array @@ -99,43 +93,6 @@ class CRM_Core_PseudoConstant { */ private static $currencyCode; - /** - * Payment processor - * @var array - */ - private static $paymentProcessor; - - /** - * Payment processor types - * @var array - */ - private static $paymentProcessorType; - - /** - * World Region - * @var array - */ - private static $worldRegions; - - /** - * activity status - * @var array - * @deprecated Please use the buildOptions() method in the appropriate BAO object. - */ - private static $activityStatus; - - /** - * Visibility - * @var array - */ - private static $visibility; - - /** - * Greetings - * @var array - */ - private static $greeting; - /** * Extensions of type module * @var array @@ -466,8 +423,7 @@ class CRM_Core_PseudoConstant { } /** - * Flush given pseudoconstant so it can be reread from db. - * nex time it's requested. + * Flush static array cache. * * @param bool|string $name pseudoconstant to be flushed */ @@ -496,12 +452,12 @@ class CRM_Core_PseudoConstant { */ public static function &activityType() { $args = func_get_args(); - $all = CRM_Utils_Array::value(0, $args, TRUE); - $includeCaseActivities = CRM_Utils_Array::value(1, $args, FALSE); - $reset = CRM_Utils_Array::value(2, $args, FALSE); - $returnColumn = CRM_Utils_Array::value(3, $args, 'label'); - $includeCampaignActivities = CRM_Utils_Array::value(4, $args, FALSE); - $onlyComponentActivities = CRM_Utils_Array::value(5, $args, FALSE); + $all = $args[0] ?? TRUE; + $includeCaseActivities = $args[1] ?? FALSE; + $reset = $args[2] ?? FALSE; + $returnColumn = $args[3] ?? 'label'; + $includeCampaignActivities = $args[4] ?? FALSE; + $onlyComponentActivities = $args[5] ?? FALSE; $index = (int) $all . '_' . $returnColumn . '_' . (int) $includeCaseActivities; $index .= '_' . (int) $includeCampaignActivities; $index .= '_' . (int) $onlyComponentActivities; @@ -668,6 +624,7 @@ WHERE id = %1"; /** * Get all the State/Province abbreviations from the database for the specified country. + * @deprecated * * @param int $countryID * @@ -675,21 +632,24 @@ WHERE id = %1"; * array of all State/Province abbreviations for the given country. */ public static function stateProvinceAbbreviationForCountry($countryID) { - if (!isset(\Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID])) { - \Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID] = []; - } - self::populate(\Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID], 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', "country_id = " . (int) $countryID, 'abbreviation'); - return \Civi::$statics[__CLASS__]['stateProvinceAbbreviationForCountry'][$countryID]; + CRM_Core_Error::deprecatedFunctionWarning('API'); + $abbrs = []; + self::populate($abbrs, 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', "country_id = " . (int) $countryID, 'abbreviation'); + return $abbrs; } /** * Get all the State/Province abbreviations from the database for the default country. + * @deprecated * * @return array * array of all State/Province abbreviations for the given country. */ public static function stateProvinceAbbreviationForDefaultCountry() { - return CRM_Core_PseudoConstant::stateProvinceAbbreviationForCountry(Civi::settings()->get('defaultContactCountry')); + $countryID = Civi::settings()->get('defaultContactCountry'); + $abbrs = []; + self::populate($abbrs, 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', "country_id = " . (int) $countryID, 'abbreviation'); + return $abbrs; } /** @@ -754,31 +714,18 @@ WHERE id = %1"; /** * Get all the country ISO Code abbreviations from the database. * - * The static array countryIsoCode is returned, and if it's - * called the first time, the <b>Country DAO</b> is used - * to get all the countries' ISO codes. - * - * Note: any database errors will be trapped by the DAO. - * - * * @param bool $id * * @return array - * array reference of all country ISO codes. */ - public static function &countryIsoCode($id = FALSE) { - if (!self::$countryIsoCode) { - self::populate(self::$countryIsoCode, 'CRM_Core_DAO_Country', TRUE, 'iso_code'); - } + public static function countryIsoCode($id = FALSE) { + $values = []; + self::populate($values, 'CRM_Core_DAO_Country', TRUE, 'iso_code'); + if ($id) { - if (array_key_exists($id, self::$countryIsoCode)) { - return self::$countryIsoCode[$id]; - } - else { - return CRM_Core_DAO::$_nullObject; - } + return $values[$id] ?? NULL; } - return self::$countryIsoCode; + return $values; } /** @@ -803,12 +750,9 @@ WHERE id = %1"; */ public static function allGroup($groupType = NULL, $excludeHidden = TRUE) { $condition = CRM_Contact_BAO_Group::groupTypeCondition($groupType, $excludeHidden); - $groupKey = ($groupType ?: 'null') . !empty($excludeHidden); - - if (!isset(Civi::$statics[__CLASS__]['groups']['allGroup'][$groupKey])) { - self::populate(Civi::$statics[__CLASS__]['groups']['allGroup'][$groupKey], 'CRM_Contact_DAO_Group', FALSE, 'title', 'is_active', $condition); - } - return Civi::$statics[__CLASS__]['groups']['allGroup'][$groupKey]; + $values = []; + self::populate($values, 'CRM_Contact_DAO_Group', FALSE, 'title', 'is_active', $condition); + return $values; } /** @@ -955,9 +899,6 @@ WHERE id = %1"; /** * Get all the ISO 4217 currency codes * - * so far, we use this for validation only, so there's no point of putting this into the database - * - * * @return array * array reference of all currency codes */ @@ -966,7 +907,6 @@ WHERE id = %1"; $query = "SELECT name FROM civicrm_currency"; $dao = CRM_Core_DAO::executeQuery($query); - $currencyCode = []; while ($dao->fetch()) { self::$currencyCode[] = $dao->name; } @@ -1025,8 +965,7 @@ WHERE id = %1"; * array of all payment processors */ public static function paymentProcessor($all = FALSE, $test = FALSE, $additionalCond = NULL) { - $condition = "is_test = "; - $condition .= ($test) ? '1' : '0'; + $condition = 'is_test = ' . ($test ? '1' : '0'); if ($additionalCond) { $condition .= " AND ( $additionalCond ) "; @@ -1035,13 +974,10 @@ WHERE id = %1"; // CRM-7178. Make sure we only include payment processors valid in this // domain $condition .= " AND domain_id = " . CRM_Core_Config::domainID(); + $values = []; + self::populate($values, 'CRM_Financial_DAO_PaymentProcessor', $all, 'name', 'is_active', $condition, 'is_default desc, name'); - $cacheKey = $condition . '_' . (int) $all; - if (!isset(self::$paymentProcessor[$cacheKey])) { - self::populate(self::$paymentProcessor[$cacheKey], 'CRM_Financial_DAO_PaymentProcessor', $all, 'name', 'is_active', $condition, 'is_default desc, name'); - } - - return self::$paymentProcessor[$cacheKey]; + return $values; } /** @@ -1060,40 +996,32 @@ WHERE id = %1"; * array of all payment processor types */ public static function &paymentProcessorType($all = FALSE, $id = NULL, $return = 'title') { - $cacheKey = $id . '_' . $return; - if (empty(self::$paymentProcessorType[$cacheKey])) { - self::populate(self::$paymentProcessorType[$cacheKey], 'CRM_Financial_DAO_PaymentProcessorType', $all, $return, 'is_active', NULL, "is_default, $return", 'id'); - } - if ($id && !empty(self::$paymentProcessorType[$cacheKey][$id])) { - return self::$paymentProcessorType[$cacheKey][$id]; - } - return self::$paymentProcessorType[$cacheKey]; + CRM_Core_Error::deprecatedFunctionWarning('API'); + $values = []; + self::populate($values, 'CRM_Financial_DAO_PaymentProcessorType', $all, $return, 'is_active', NULL, "is_default, $return", 'id'); + // This is incredibly stupid, but the whole function is deprecated anyway... + if ($id && !empty($values[$id])) { + return $values[$id]; + } + return $values; } /** * Get all the World Regions from Database. * - * * @param bool $id * * @return array * array reference of all World Regions */ - public static function &worldRegion($id = FALSE) { - if (!self::$worldRegions) { - self::populate(self::$worldRegions, 'CRM_Core_DAO_Worldregion', TRUE, 'name', NULL, NULL, 'id'); - } + public static function worldRegion($id = FALSE) { + $values = []; + self::populate($values, 'CRM_Core_DAO_Worldregion', TRUE, 'name', NULL, NULL, 'id'); if ($id) { - if (array_key_exists($id, self::$worldRegions)) { - return self::$worldRegions[$id]; - } - else { - return CRM_Core_DAO::$_nullObject; - } + return $values[$id] ?? NULL; } - - return self::$worldRegions; + return $values; } /** @@ -1101,25 +1029,12 @@ WHERE id = %1"; * * Get all Activity Statuses. * - * The static array activityStatus is returned - * - * * @param string $column * * @return array - * array reference of all activity statuses */ public static function &activityStatus($column = 'label') { - if (NULL === self::$activityStatus) { - self::$activityStatus = []; - } - if (!array_key_exists($column, self::$activityStatus)) { - self::$activityStatus[$column] = []; - - self::$activityStatus[$column] = CRM_Core_OptionGroup::values('activity_status', FALSE, FALSE, FALSE, NULL, $column); - } - - return self::$activityStatus[$column]; + return CRM_Core_OptionGroup::values('activity_status', FALSE, FALSE, FALSE, NULL, $column); } /** @@ -1135,16 +1050,8 @@ WHERE id = %1"; * @return array * array reference of all Visibility levels. */ - public static function &visibility($column = 'label') { - if (!isset(self::$visibility)) { - self::$visibility = []; - } - - if (!isset(self::$visibility[$column])) { - self::$visibility[$column] = CRM_Core_OptionGroup::values('visibility', FALSE, FALSE, FALSE, NULL, $column); - } - - return self::$visibility[$column]; + public static function visibility($column = 'label') { + return CRM_Core_OptionGroup::values('visibility', FALSE, FALSE, FALSE, NULL, $column); } /** diff --git a/civicrm/CRM/Core/QuickForm/Action/Upload.php b/civicrm/CRM/Core/QuickForm/Action/Upload.php index c86d0b2f1602005de931f613b76a3d2d7440c538..9f7089893d2ff6bc4f874a2c91f09051d61bfbe8 100644 --- a/civicrm/CRM/Core/QuickForm/Action/Upload.php +++ b/civicrm/CRM/Core/QuickForm/Action/Upload.php @@ -77,7 +77,7 @@ class CRM_Core_QuickForm_Action_Upload extends CRM_Core_QuickForm_Action { // rename the uploaded file with a unique number at the end $value = $element->getValue(); - $newName = CRM_Utils_File::makeFileName($value['name']); + $newName = CRM_Utils_File::makeFileName($value['name'], TRUE); $status = $element->moveUploadedFile($this->_uploadDir, $newName); if (!$status) { CRM_Core_Error::statusBounce(ts('We could not move the uploaded file %1 to the upload directory %2. Please verify that the \'Temporary Files\' setting points to a valid path which is writable by your web server.', [ diff --git a/civicrm/CRM/Core/Resources.php b/civicrm/CRM/Core/Resources.php index f1610b35f63cfc269583c09d7f2567ab69c4493a..748aaa1c2629519233b74eba92c6a7bf973ef9dc 100644 --- a/civicrm/CRM/Core/Resources.php +++ b/civicrm/CRM/Core/Resources.php @@ -432,10 +432,47 @@ class CRM_Core_Resources implements CRM_Core_Resources_CollectionAdderInterface 'contactSearch' => json_encode(!empty($params['includeEmailInName']) ? ts('Search by name/email or id...') : ts('Search by name or id...')), 'otherSearch' => json_encode(ts('Enter search term or id...')), 'entityRef' => self::getEntityRefMetadata(), + 'quickAdd' => self::getQuickAddForms($e->params['cid']), ]; $e->content = CRM_Core_Smarty::singleton()->fetchWith('CRM/common/l10n.js.tpl', $params); } + /** + * Gets links to "Quick Add" forms, for use in Autocomplete widgets + * + * @param int|null $cid + * @return array + */ + private static function getQuickAddForms(?int $cid): array { + $forms = []; + try { + $contactTypes = CRM_Contact_BAO_ContactType::getAllContactTypes(); + $routes = \Civi\Api4\Route::get(FALSE) + ->addSelect('path', 'title', 'access_arguments') + ->addWhere('path', 'LIKE', 'civicrm/quick-add/%') + ->execute(); + foreach ($routes as $route) { + // Ensure user has permission to use the form + if (!empty($route['access_arguments'][0]) && !CRM_Core_Permission::check($route['access_arguments'][0], $cid)) { + continue; + } + // Ensure API entity exists + [, , $entityType] = array_pad(explode('/', $route['path']), 3, '*'); + if (\Civi\Api4\Utils\CoreUtil::entityExists($entityType)) { + $forms[] = [ + 'entity' => $entityType, + 'path' => $route['path'], + 'title' => $route['title'], + 'icon' => \Civi\Api4\Utils\CoreUtil::getInfoItem($entityType, 'icon'), + ]; + } + } + } + catch (CRM_Core_Exception $e) { + } + return $forms; + } + /** * @return bool * is this page request an ajax snippet? diff --git a/civicrm/CRM/Core/SelectValues.php b/civicrm/CRM/Core/SelectValues.php index 374e708edf6cf921a1cee00e0a4c1373c0a6f54b..1384b0375fa97a9c4b3e2e497d26cee2a4adfc9d 100644 --- a/civicrm/CRM/Core/SelectValues.php +++ b/civicrm/CRM/Core/SelectValues.php @@ -219,6 +219,11 @@ class CRM_Core_SelectValues { 'name' => 'Link', 'label' => ts('Link'), ], + [ + 'id' => 'Hidden', + 'name' => 'Hidden', + 'label' => ts('Hidden'), + ], ]; } @@ -634,6 +639,7 @@ class CRM_Core_SelectValues { * @return array */ public static function participantTokens(): array { + CRM_Core_Error::deprecatedFunctionWarning('user TokenProcessor'); $tokenProcessor = new TokenProcessor(Civi::dispatcher(), ['schema' => ['participantId']]); $allTokens = $tokenProcessor->listTokens(); foreach (array_keys($allTokens) as $token) { @@ -1159,6 +1165,10 @@ class CRM_Core_SelectValues { 'label' => ts('Postal Code'), 'adv_search_legacy' => 'postal_code', ], + [ + 'key' => 'employer_id.sort_name', + 'label' => ts('Current Employer'), + ], [ 'key' => 'job_title', 'label' => ts('Job Title'), diff --git a/civicrm/CRM/Core/Selector/Controller.php b/civicrm/CRM/Core/Selector/Controller.php index c2cc8d196aa6c8b3324329107c682b5f1da398e2..b2d899a3053241f14b7850d67d1a52593543f744 100644 --- a/civicrm/CRM/Core/Selector/Controller.php +++ b/civicrm/CRM/Core/Selector/Controller.php @@ -325,7 +325,7 @@ class CRM_Core_Selector_Controller { } else { // output requires paging/sorting capability - $rows = self::getRows($this); + $rows = $this->getRows($this); CRM_Utils_Hook::searchColumns($contextName, $columnHeaders, $rows, $this); $reorderedHeaders = []; $noWeightHeaders = []; diff --git a/civicrm/CRM/Core/Smarty.php b/civicrm/CRM/Core/Smarty.php index 41de354b17e7eeda103e53d11924376a2efcecd1..60f6cfcb0973f1a329ae2b7d0699e528b55018bc 100644 --- a/civicrm/CRM/Core/Smarty.php +++ b/civicrm/CRM/Core/Smarty.php @@ -136,6 +136,7 @@ class CRM_Core_Smarty extends CRM_Core_SmartyCompatibility { 'cacheCleanup' => CRM_Utils_Request::retrieveValue('cacheCleanup', 'Integer'), 'configReset' => CRM_Utils_Request::retrieveValue('configReset', 'Integer'), ]); + $this->assign('snippet_type', CRM_Utils_Request::retrieveValue('snippet', 'String')); $tsLocale = CRM_Core_I18n::getLocale(); $this->assign('tsLocale', $tsLocale); diff --git a/civicrm/CRM/Core/Smarty/plugins/block.localize.php b/civicrm/CRM/Core/Smarty/plugins/block.localize.php index 47e64fe6be3d8debb359f04258db0754f64cb943..6b7f357d85eee7ab1a516948c82625fe9eb32787 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.localize.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.localize.php @@ -33,18 +33,19 @@ * @return string * multilingualized query */ -function smarty_block_localize($params, $text, &$smarty, &$repeat) { +function smarty_block_localize($params, $text, $smarty, &$repeat) { if ($repeat) { // For opening tag text is always null return ''; } - - if (!array_key_exists('multilingual', $smarty->_tpl_vars) || !$smarty->_tpl_vars['multilingual']) { + $multiLingual = method_exists($smarty, 'get_template_vars') ? $smarty->get_template_vars('multilingual') : $smarty->getTemplateVars('multilingual'); + if (!$multiLingual) { return $text; } $lines = []; - foreach ($smarty->_tpl_vars['locales'] as $locale) { + $locales = (array) (method_exists($smarty, 'get_template_vars') ? $smarty->get_template_vars('locales') : $smarty->getTemplateVars('locales')); + foreach ($locales as $locale) { $line = $text; if (isset($params['field'])) { $fields = explode(',', $params['field']); diff --git a/civicrm/CRM/Custom/Form/Field.php b/civicrm/CRM/Custom/Form/Field.php index 9a8c2e3d7362462057d5f10a26084748fcf30705..ece46e55555683276992960ba37094c716bdea6c 100644 --- a/civicrm/CRM/Custom/Form/Field.php +++ b/civicrm/CRM/Custom/Form/Field.php @@ -58,10 +58,10 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { * @var array[] */ public static $_dataToHTML = [ - 'String' => ['Text', 'Select', 'Radio', 'CheckBox', 'Autocomplete-Select'], - 'Int' => ['Text', 'Select', 'Radio'], - 'Float' => ['Text', 'Select', 'Radio'], - 'Money' => ['Text', 'Select', 'Radio'], + 'String' => ['Text', 'Select', 'Radio', 'CheckBox', 'Autocomplete-Select', 'Hidden'], + 'Int' => ['Text', 'Select', 'Radio', 'Hidden'], + 'Float' => ['Text', 'Select', 'Radio', 'Hidden'], + 'Money' => ['Text', 'Select', 'Radio', 'Hidden'], 'Memo' => ['TextArea', 'RichTextEditor'], 'Date' => ['Select Date'], 'Boolean' => ['Radio'], diff --git a/civicrm/CRM/Custom/Page/Field.php b/civicrm/CRM/Custom/Page/Field.php index 8d6b6aefb6531d5fbf5629bddea47392def8ae71..188e48ed4d146653d9b78a722391b764abb9d5ca 100644 --- a/civicrm/CRM/Custom/Page/Field.php +++ b/civicrm/CRM/Custom/Page/Field.php @@ -133,27 +133,9 @@ class CRM_Custom_Page_Field extends CRM_Core_Page { $action -= CRM_Core_Action::DISABLE; } - switch ($customFieldBAO->data_type) { - case "String": - case "Int": - case "Float": - case "Money": - // if Multi Select field is selected in custom field - if ($customFieldBAO->html_type == 'Text') { - $action -= CRM_Core_Action::BROWSE; - } - break; - - case "ContactReference": - case "Memo": - case "Date": - case "Boolean": - case "StateProvince": - case "Country": - case "File": - case "Link": - $action -= CRM_Core_Action::BROWSE; - break; + // Remove link to edit option group if there isn't one + if (!$customFieldBAO->option_group_id) { + $action -= CRM_Core_Action::BROWSE; } $customFieldDataType = array_column(CRM_Core_BAO_CustomField::dataType(), 'label', 'id'); diff --git a/civicrm/CRM/Dedupe/MergeHandler.php b/civicrm/CRM/Dedupe/MergeHandler.php index 79c296fdccb6050ee011d02177b6f0c9425828cb..cf64201bcdb4e0dcdb62335d65e4fc44deac5db2 100644 --- a/civicrm/CRM/Dedupe/MergeHandler.php +++ b/civicrm/CRM/Dedupe/MergeHandler.php @@ -398,7 +398,7 @@ class CRM_Dedupe_MergeHandler { foreach ($block as $blkCount => $values) { $otherBlockId = $migrationInfo['other_details']['location_blocks'][$name][$blkCount]['id'] ?? NULL; - $mainBlockId = CRM_Utils_Array::value('mainContactBlockId', $migrationInfo['location_blocks'][$name][$blkCount], 0); + $mainBlockId = $migrationInfo['location_blocks'][$name][$blkCount]['mainContactBlockId'] ?? 0; if (!$otherBlockId) { continue; } diff --git a/civicrm/CRM/Event/BAO/Event.php b/civicrm/CRM/Event/BAO/Event.php index 4fcbb99cef8a4a136291f72a4d8425fc547ae033..6f843c7742c038c72165f31709557e479975eaae 100644 --- a/civicrm/CRM/Event/BAO/Event.php +++ b/civicrm/CRM/Event/BAO/Event.php @@ -2019,7 +2019,7 @@ WHERE ce.loc_block_id = $locBlockId"; $participant = new CRM_Event_DAO_Participant(); $participant->copyValues($params); - $participant->is_test = CRM_Utils_Array::value('is_test', $params, 0); + $participant->is_test = $params['is_test'] ?? 0; $participant->selectAdd(); $participant->selectAdd('status_id'); if ($participant->find(TRUE) && array_key_exists($participant->status_id, $statusTypes)) { diff --git a/civicrm/CRM/Event/BAO/Participant.php b/civicrm/CRM/Event/BAO/Participant.php index 9018edaec5ce39f874763885e53f141cff8aed3d..e0946b03da3db848f37f8fbaf74cf1affc5685ed 100644 --- a/civicrm/CRM/Event/BAO/Participant.php +++ b/civicrm/CRM/Event/BAO/Participant.php @@ -546,7 +546,7 @@ INNER JOIN civicrm_price_field field ON ( value.price_field_id = field.id if ($lineItem->html_type == 'Text') { $count *= $lineItem->qty; } - $optionsCount[$lineItem->valueId] = $count + CRM_Utils_Array::value($lineItem->valueId, $optionsCount, 0); + $optionsCount[$lineItem->valueId] = $count + ($optionsCount[$lineItem->valueId] ?? 0); } return $optionsCount; @@ -1744,8 +1744,8 @@ WHERE civicrm_participant.contact_id = {$contactID} AND $contactId = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $participantId, 'contact_id'); $date = CRM_Utils_Date::currentDBDate(); - $event = CRM_Event_BAO_Event::getEvents(0, $eventId); - $subject = sprintf("Registration selections changed for %s", CRM_Utils_Array::value($eventId, $event)); + $title = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $eventId, 'title'); + $subject = ts('Registration selections changed for %1', [1 => $title]); // activity params $activityParams = [ diff --git a/civicrm/CRM/Event/BAO/ParticipantStatusType.php b/civicrm/CRM/Event/BAO/ParticipantStatusType.php index 7176dcc48b9e5d38f2aca7dbcd4a9203cb3f36cb..7632f634e7071110b3204532b05c27f4df2a9b82 100644 --- a/civicrm/CRM/Event/BAO/ParticipantStatusType.php +++ b/civicrm/CRM/Event/BAO/ParticipantStatusType.php @@ -17,33 +17,23 @@ class CRM_Event_BAO_ParticipantStatusType extends CRM_Event_DAO_ParticipantStatusType { /** + * @deprecated * @param array $params * * @return self|null */ public static function add(&$params) { - if (empty($params)) { - return NULL; - } - $dao = new CRM_Event_DAO_ParticipantStatusType(); - $dao->copyValues($params); - return $dao->save(); + return self::writeRecord($params); } /** + * @deprecated * @param array $params * * @return self|null */ - public static function &create(&$params) { - $transaction = new CRM_Core_Transaction(); - $statusType = self::add($params); - if (is_a($statusType, 'CRM_Core_Error')) { - $transaction->rollback(); - return $statusType; - } - $transaction->commit(); - return $statusType; + public static function create(&$params) { + return self::writeRecord($params); } /** diff --git a/civicrm/CRM/Event/Form/EventFees.php b/civicrm/CRM/Event/Form/EventFees.php index b0601f014b7b62c305b4c12271692b42b896eada..32a3f10ead3b1d6aadaf0ae2925ecb625cd4d6e9 100644 --- a/civicrm/CRM/Event/Form/EventFees.php +++ b/civicrm/CRM/Event/Form/EventFees.php @@ -55,19 +55,6 @@ class CRM_Event_Form_EventFees { public static function setDefaultValues(&$form) { $defaults = []; - if ($form->_eventId) { - //get receipt text and financial type - $returnProperities = ['confirm_email_text', 'financial_type_id', 'campaign_id', 'start_date']; - $details = []; - CRM_Core_DAO::commonRetrieveAll('CRM_Event_DAO_Event', 'id', $form->_eventId, $details, $returnProperities); - if (!empty($details[$form->_eventId]['financial_type_id'])) { - $defaults['financial_type_id'] = $details[$form->_eventId]['financial_type_id']; - } - if (!empty($details[$form->_eventId]['confirm_email_text'])) { - $defaults['receipt_text'] = $details[$form->_eventId]['confirm_email_text']; - } - } - if ($form->_pId) { $ids = []; $params = ['id' => $form->_pId]; @@ -91,23 +78,8 @@ class CRM_Event_Form_EventFees { $form->assign('fee_amount', CRM_Utils_Array::value('fee_amount', $defaults)); $form->assign('fee_level', CRM_Utils_Array::value('fee_level', $defaults)); } - $defaults['send_receipt'] = 0; - } - else { - $defaults['send_receipt'] = (strtotime(CRM_Utils_Array::value('start_date', $details[$form->_eventId])) >= time()) ? 1 : 0; - $defaults['receive_date'] = date('Y-m-d H:i:s'); } - //CRM-11601 we should keep the record contribution - //true by default while adding participant - if ($form->_action == CRM_Core_Action::ADD && !$form->_mode && $form->_isPaidEvent) { - $defaults['record_contribution'] = 1; - } - - //CRM-13420 - if (empty($defaults['payment_instrument_id'])) { - $defaults['payment_instrument_id'] = key(CRM_Core_OptionGroup::values('payment_instrument', FALSE, FALSE, FALSE, 'AND is_default = 1')); - } if ($form->_mode) { $config = CRM_Core_Config::singleton(); // set default country from config if no country set diff --git a/civicrm/CRM/Event/Form/ManageEvent.php b/civicrm/CRM/Event/Form/ManageEvent.php index 10d3018caecad18c0d5e7f81fb11d7e3a322d11c..0bd71043f425660d0197889599778f3ac9ea2b87 100644 --- a/civicrm/CRM/Event/Form/ManageEvent.php +++ b/civicrm/CRM/Event/Form/ManageEvent.php @@ -177,6 +177,9 @@ class CRM_Event_Form_ManageEvent extends CRM_Core_Form { if (CRM_Core_Permission::check($checkPermission) || !empty($ufCreate) || !empty($ufEdit)) { $this->assign('perm', TRUE); } + else { + $this->assign('perm', FALSE); + } // also set up tabs CRM_Event_Form_ManageEvent_TabHeader::build($this); diff --git a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php index c2b896f00100b3296008c69aeba1a8bf5b72de6d..0fd442b025dc3f34a25289960187c3fb7047f552 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php +++ b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php @@ -217,12 +217,12 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { //format params $params['start_date'] = $params['start_date'] ?? NULL; $params['end_date'] = $params['end_date'] ?? NULL; - $params['has_waitlist'] = CRM_Utils_Array::value('has_waitlist', $params, FALSE); - $params['is_map'] = CRM_Utils_Array::value('is_map', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['is_public'] = CRM_Utils_Array::value('is_public', $params, FALSE); - $params['is_share'] = CRM_Utils_Array::value('is_share', $params, FALSE); - $params['default_role_id'] = CRM_Utils_Array::value('default_role_id', $params, FALSE); + $params['has_waitlist'] = $params['has_waitlist'] ?? FALSE; + $params['is_map'] = $params['is_map'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['is_public'] = $params['is_public'] ?? FALSE; + $params['is_share'] = $params['is_share'] ?? FALSE; + $params['default_role_id'] = $params['default_role_id'] ?? FALSE; $params['id'] = $this->_id; //merge params with defaults from templates diff --git a/civicrm/CRM/Event/Form/ManageEvent/Fee.php b/civicrm/CRM/Event/Form/ManageEvent/Fee.php index 52eb1eb987a7a87db753fc1e017d7ac968099d7d..901b1a8c9c2f57427959dcabdc0aa04f8ce79de7 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Fee.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Fee.php @@ -246,14 +246,15 @@ class CRM_Event_Form_ManageEvent_Fee extends CRM_Event_Form_ManageEvent { ); // financial type - if (!CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() || - (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() && CRM_Core_Permission::check('administer CiviCRM Financial Types'))) { - $this->addSelect('financial_type_id'); - } - else { - CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, CRM_Core_Action::ADD); - $this->addSelect('financial_type_id', ['context' => 'search', 'options' => $financialTypes]); + CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, CRM_Core_Action::ADD); + $financialOptions = [ + 'options' => $financialTypes, + ]; + if (!CRM_Core_Permission::check('administer CiviCRM Financial Types')) { + $financialOptions['context'] = 'search'; } + $this->addSelect('financial_type_id', $financialOptions); + // add pay later options $this->addElement('checkbox', 'is_pay_later', ts('Pay later option'), NULL, ['onclick' => "return showHideByValue('is_pay_later','','payLaterOptions','block','radio',false);"] @@ -550,8 +551,8 @@ class CRM_Event_Form_ManageEvent_Fee extends CRM_Event_Form_ManageEvent { $params['payment_processor'] = 'null'; } - $params['is_pay_later'] = CRM_Utils_Array::value('is_pay_later', $params, 0); - $params['is_billing_required'] = CRM_Utils_Array::value('is_billing_required', $params, 0); + $params['is_pay_later'] = $params['is_pay_later'] ?? 0; + $params['is_billing_required'] = $params['is_billing_required'] ?? 0; if ($this->_id) { diff --git a/civicrm/CRM/Event/Form/ManageEvent/Registration.php b/civicrm/CRM/Event/Form/ManageEvent/Registration.php index 4d288953204c4ffae46052c472b25d067871aa60..7b51f7281d0ae9a72fd38159d44c41a2e4e01478 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Registration.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Registration.php @@ -33,10 +33,10 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent * Set variables up before form is built. */ public function preProcess() { - $this->_addProfileBottom = CRM_Utils_Array::value('addProfileBottom', $_GET, FALSE); - $this->_profileBottomNum = CRM_Utils_Array::value('addProfileNum', $_GET, 0); - $this->_addProfileBottomAdd = CRM_Utils_Array::value('addProfileBottomAdd', $_GET, FALSE); - $this->_profileBottomNumAdd = CRM_Utils_Array::value('addProfileNumAdd', $_GET, 0); + $this->_addProfileBottom = $_GET['addProfileBottom'] ?? FALSE; + $this->_profileBottomNum = $_GET['addProfileNum'] ?? 0; + $this->_addProfileBottomAdd = $_GET['addProfileBottomAdd'] ?? FALSE; + $this->_profileBottomNumAdd = $_GET['addProfileNumAdd'] ?? 0; parent::preProcess(); $this->setSelectedChild('registration'); @@ -783,12 +783,12 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent $params['id'] = $this->_id; // format params - $params['is_online_registration'] = CRM_Utils_Array::value('is_online_registration', $params, FALSE); + $params['is_online_registration'] = $params['is_online_registration'] ?? FALSE; // CRM-11182 - $params['is_confirm_enabled'] = CRM_Utils_Array::value('is_confirm_enabled', $params, FALSE); - $params['is_multiple_registrations'] = CRM_Utils_Array::value('is_multiple_registrations', $params, FALSE); - $params['allow_same_participant_emails'] = CRM_Utils_Array::value('allow_same_participant_emails', $params, FALSE); - $params['requires_approval'] = CRM_Utils_Array::value('requires_approval', $params, FALSE); + $params['is_confirm_enabled'] = $params['is_confirm_enabled'] ?? FALSE; + $params['is_multiple_registrations'] = $params['is_multiple_registrations'] ?? FALSE; + $params['allow_same_participant_emails'] = $params['allow_same_participant_emails'] ?? FALSE; + $params['requires_approval'] = $params['requires_approval'] ?? FALSE; // reset is_email confirm if not online reg if (!$params['is_online_registration']) { @@ -922,7 +922,7 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent self::addMultipleProfiles($additionalProfileIds, $params, 'additional_custom_post_id_multiple'); $cantDedupe = FALSE; - $rgId = CRM_Utils_Array::value('dedupe_rule_group_id', $params, 0); + $rgId = $params['dedupe_rule_group_id'] ?? 0; switch (self::canProfilesDedupe($profileIds, $rgId)) { case 0: diff --git a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php index f84c3de49420d86c849ae529644e556daf4a3a28..74c24246df7c3002fce308aa990ce2d8359236a8 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php @@ -205,7 +205,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { * * @return array */ - public static function checkRegistrationForEvents($eventID) { + public static function checkRegistrationForEvents($eventID): array { $eventIdsWithNoRegistration = []; if ($eventID) { $getRelatedEntities = CRM_Core_BAO_RecurringEntity::getEntitiesFor($eventID, 'civicrm_event', TRUE); @@ -218,8 +218,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { } } } - CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted = $eventIdsWithNoRegistration; - return CRM_Core_BAO_RecurringEntity::$_entitiesToBeDeleted; + return $eventIdsWithNoRegistration; } } diff --git a/civicrm/CRM/Event/Form/Participant.php b/civicrm/CRM/Event/Form/Participant.php index d867ae8b12d61c225e78026708a92787e6ea7ba8..b33f7acb45c23ff4e1ae193764e354037a58e0ec 100644 --- a/civicrm/CRM/Event/Form/Participant.php +++ b/civicrm/CRM/Event/Form/Participant.php @@ -385,15 +385,41 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment */ public function setDefaultValues(): array { if ($this->isOverloadFeesMode()) { - return CRM_Event_Form_EventFees::setDefaultValues($this); + if ($this->getEventID()) { + //get receipt text and financial type + $returnProperities = ['confirm_email_text', 'financial_type_id', 'campaign_id', 'start_date']; + CRM_Core_DAO::commonRetrieveAll('CRM_Event_DAO_Event', 'id', $this->getEventID(), $details, $returnProperities); + if (!empty($details[$this->getEventID()]['financial_type_id'])) { + $defaults['financial_type_id'] = $details[$this->getEventID()]['financial_type_id']; + } + if (!empty($details[$this->getEventID()]['confirm_email_text'])) { + $defaults['receipt_text'] = $details[$this->getEventID()]['confirm_email_text']; + } + if (!$this->getParticipantID()) { + $defaults['send_receipt'] = (strtotime(CRM_Utils_Array::value('start_date', $details[$this->getEventID()])) >= time()) ? 1 : 0; + $defaults['receive_date'] = date('Y-m-d H:i:s'); + } + } + + //CRM-11601 we should keep the record contribution + //true by default while adding participant + if ($this->getAction() === CRM_Core_Action::ADD && !$this->_mode && $this->_isPaidEvent) { + $defaults['record_contribution'] = 1; + } + + //CRM-13420 + if (empty($defaults['payment_instrument_id'])) { + $defaults['payment_instrument_id'] = key(CRM_Core_OptionGroup::values('payment_instrument', FALSE, FALSE, FALSE, 'AND is_default = 1')); + } + return $defaults + CRM_Event_Form_EventFees::setDefaultValues($this); } $defaults = []; - if ($this->_id) { + if ($this->getParticipantID()) { $ids = []; $params = ['id' => $this->_id]; - + $defaults['send_receipt'] = 0; CRM_Event_BAO_Participant::getValues($params, $defaults, $ids); $defaults = $defaults[$this->_id]; $sep = CRM_Core_DAO::VALUE_SEPARATOR; @@ -846,7 +872,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $params['total_amount'] = CRM_Utils_Rule::cleanMoney($params['total_amount']); } if ($this->_isPaidEvent) { - [$contributionParams, $lineItem, $additionalParticipantDetails, $params] = $this->preparePaidEventProcessing($params); + [$contributionParams, $lineItem, $params] = $this->preparePaidEventProcessing($params); } $this->_params = $params; @@ -870,7 +896,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment //participant method (addParticipant) $this->_params['participant_status_id'] = $params['status_id']; $this->_params['participant_role_id'] = $this->getSubmittedValue('role_id'); - $this->assign('participant_status_id', $params['status_id']); $now = date('YmdHis'); @@ -905,7 +930,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $params["address_name-{$this->_bltID}"] = ($params['billing_first_name'] ?? '') . ' ' . ($params['billing_middle_name'] ?? '') . ' ' . - CRM_Utils_Array::value('billing_last_name', $params); + ($params['billing_last_name'] ?? ''); $params["address_name-{$this->_bltID}"] = trim($params["address_name-{$this->_bltID}"]); $fields["address_name-{$this->_bltID}"] = 1; @@ -985,9 +1010,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } $this->set('params', $this->_params); - $this->assign('trxn_id', $result['trxn_id']); - $this->assign('receive_date', $this->_params['receive_date']); - //add contribution record $this->_params['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $params['event_id'], 'financial_type_id'); @@ -1089,16 +1111,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment foreach ($recordContribution as $f) { $contributionParams[$f] = $this->_params[$f] ?? NULL; - if ($f === 'trxn_id') { - $this->assign('trxn_id', $contributionParams[$f]); - } } - - //insert financial type name in receipt. - $this->assign('financialTypeName', CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', - $contributionParams['financial_type_id'])); - // legacy support - $this->assign('contributionTypeName', CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $contributionParams['financial_type_id'])); $contributionParams['skipLineItem'] = 1; if ($this->_id) { $contributionParams['contribution_mode'] = 'participant'; @@ -1130,7 +1143,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment // the owed amount $contributionParams['total_amount'] = $amountOwed; $contributionParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending'); - $this->assign('balanceAmount', $amountOwed - $params['total_amount']); $this->storePaymentCreateParams($params); } } @@ -1192,7 +1204,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } $lineItem[$this->_priceSetId][$lineKey] = $line; } - CRM_Price_BAO_LineItem::processPriceSet($participants[$num]->id, $lineItem, CRM_Utils_Array::value($num, $contributions, NULL), 'civicrm_participant'); + CRM_Price_BAO_LineItem::processPriceSet($participants[$num]->id, $lineItem, $contributions[$num] ?? NULL, 'civicrm_participant'); } } } @@ -1216,7 +1228,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } if (!empty($params['send_receipt'])) { - $result = $this->sendReceipts($params, $participants, $lineItem[0] ?? [], $additionalParticipantDetails ?? []); + $result = $this->sendReceipts($params, $participants); } // set the participant id if it is not set @@ -1344,13 +1356,10 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $lineItem = []; $totalTaxAmount = 0; if (!CRM_Utils_System::isNull($form->_values['line_items'] ?? NULL)) { - $lineItem[] = $form->_values['line_items']; foreach ($form->_values['line_items'] as $key => $value) { $totalTaxAmount = $value['tax_amount'] + $totalTaxAmount; } } - $form->assign('totalTaxAmount', Civi::settings()->get('invoicing') ? ($totalTaxAmount ?? NULL) : NULL); - $form->assign('lineItem', empty($lineItem) ? FALSE : $lineItem); $discounts = []; if (!empty($form->_values['discount'])) { foreach ($form->_values['discount'] as $key => $value) { @@ -1496,7 +1505,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment //also add additional participant's fee level/priceset if (CRM_Event_BAO_Participant::isPrimaryParticipant($this->_id)) { $additionalIds = CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->_id); - $hasLineItems = CRM_Utils_Array::value('priceSetId', $params, FALSE); + $hasLineItems = $params['priceSetId'] ?? FALSE; $additionalParticipantDetails = $this->getFeeDetails($additionalIds, $hasLineItems); } } @@ -1545,25 +1554,10 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $this->_lineItem = $lineItem; $lineItem = array_merge($lineItem, $additionalParticipantDetails); - - $participantCount = []; - foreach ($lineItem as $k) { - foreach ($k as $v) { - if (CRM_Utils_Array::value('participant_count', $v) > 0) { - $participantCount[] = $v['participant_count']; - } - } - } } - if (isset($participantCount)) { - $this->assign('pricesetFieldsCount', $participantCount); - } - $this->assign('lineItem', empty($lineItem[0]) || $this->isQuickConfig() ? FALSE : $lineItem); - } - else { - $this->assign('amount_level', $params['amount_level']); } - return [$contributionParams, $lineItem, $additionalParticipantDetails, $params]; + + return [$contributionParams, $lineItem, $params]; } /** @@ -1574,43 +1568,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment * @throws \CRM_Core_Exception */ protected function assignEventDetailsToTpl($eventID, $participantRoles, $receiptText): void { - //use of the message template below requires variables in different format - $events = []; - $returnProperties = ['event_type_id', 'fee_label', 'start_date', 'end_date', 'is_show_location', 'title']; - - //get all event details. - CRM_Core_DAO::commonRetrieveAll('CRM_Event_DAO_Event', 'id', $eventID, $events, $returnProperties); - $event = $events[$eventID]; - unset($event['start_date']); - unset($event['end_date']); - - $role = CRM_Event_PseudoConstant::participantRole(); - - if (is_array($participantRoles)) { - $selectedRoles = []; - foreach ($participantRoles as $roleId) { - $selectedRoles[] = $role[$roleId]; - } - $event['participant_role'] = implode(', ', $selectedRoles); - } - else { - $event['participant_role'] = $role[$participantRoles] ?? NULL; - } - $event['is_monetary'] = $this->_isPaidEvent; - - if ($receiptText) { - $event['confirm_email_text'] = $receiptText; - } - $this->assign('event', $event); - $this->assign('isShowLocation', $event['is_show_location']); - if (($event['is_show_location'] ?? NULL) == 1) { - $locationParams = [ - 'entity_id' => $eventID, - 'entity_table' => 'civicrm_event', - ]; - $location = CRM_Core_BAO_Location::getValues($locationParams, TRUE); - $this->assign('location', $location); - } + $this->assign('event', ['confirm_email_text' => $receiptText]); } /** @@ -1654,7 +1612,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment 'invoice_id' => $params['invoiceID'], 'currency' => $params['currencyID'], 'source' => !empty($params['participant_source']) ? $params['participant_source'] : $params['description'], - 'is_pay_later' => CRM_Utils_Array::value('is_pay_later', $params, 0), + 'is_pay_later' => $params['is_pay_later'] ?? 0, 'campaign_id' => $params['campaign_id'] ?? NULL, 'card_type_id' => $params['card_type_id'] ?? NULL, 'pan_truncation' => $params['pan_truncation'] ?? NULL, @@ -1693,12 +1651,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } $contribParams['revenue_recognition_date'] = $this->getRevenueRecognitionDate(); - //create an contribution address - // The concept of contributeMode is deprecated. Elsewhere we use the function processBillingAddress() - although - // currently that is only inherited by back-office forms. - if ($form->_contributeMode != 'notify' && empty($params['is_pay_later'])) { - $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $form->_bltID); - } + $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); $contribParams['skipLineItem'] = 1; $contribParams['skipCleanMoney'] = 1; @@ -1707,12 +1660,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment // CRM-11124 CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params)); - // process soft credit / pcp pages - if (!empty($params['pcp_made_through_id'])) { - CRM_Contribute_BAO_ContributionSoft::formatSoftCreditParams($params, $form); - CRM_Contribute_BAO_ContributionSoft::processSoftContribution($params, $contribution); - } - $transaction->commit(); return $contribution; @@ -1746,7 +1693,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $participantFields['participant_source']['maxlength'] ), 'fee_level' => $params['amount_level'] ?? NULL, - 'is_pay_later' => CRM_Utils_Array::value('is_pay_later', $params, 0), + 'is_pay_later' => $params['is_pay_later'] ?? 0, 'fee_amount' => $params['fee_amount'] ?? NULL, 'registered_by_id' => $params['registered_by_id'] ?? NULL, 'discount_id' => $params['discount_id'] ?? NULL, @@ -1966,63 +1913,20 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ /** * @param $params * @param array $participants - * @param $lineItem - * @param $additionalParticipantDetails * * @return array * @throws \CRM_Core_Exception * @throws \Brick\Money\Exception\UnknownCurrencyException */ - protected function sendReceipts($params, array $participants, $lineItem, $additionalParticipantDetails): array { + protected function sendReceipts($params, array $participants): array { $sent = []; $notSent = []; - $this->assign('module', 'Event Registration'); $this->assignEventDetailsToTpl($params['event_id'], CRM_Utils_Array::value('role_id', $params), CRM_Utils_Array::value('receipt_text', $params)); - if ($this->_isPaidEvent) { - $paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument(); - if (!$this->_mode) { - if (isset($params['payment_instrument_id'])) { - $this->assign('paidBy', - CRM_Utils_Array::value($params['payment_instrument_id'], - $paymentInstrument - ) - ); - } - } - } - $this->assign('checkNumber', $params['check_number'] ?? NULL); if ($this->_mode) { - $this->assignBillingName($params); - $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters( - $this->_params, - $this->_bltID - )); - $valuesForForm = CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($params); $this->assignVariables($valuesForForm, ['credit_card_exp_date', 'credit_card_type', 'credit_card_number']); - $this->assign('is_pay_later', 0); - } - - $this->assign('register_date', $params['register_date']); - if (isset($params['receive_date'])) { - $this->assign('receive_date', $params['receive_date']); - } - - $customGroup = []; - $customFieldFilters = [ - 'ParticipantRole' => $this->getSubmittedValue('role_id'), - 'ParticipantEventName' => $this->getEventID(), - 'ParticipantEventType' => $this->getEventValue('event_type_id'), - ]; - $customFields = CRM_Core_BAO_CustomField::getViewableCustomFields('Participant', $customFieldFilters); - foreach ($params['custom'] as $fieldID => $values) { - foreach ($values as $fieldValue) { - $formattedValue = CRM_Core_BAO_CustomField::displayValue($fieldValue['value'], $fieldID, $participants[0]->id); - $customGroup[$customFields[$fieldID]['custom_group_id.title']][$customFields[$fieldID]['label']] = str_replace(' ', '', $formattedValue); - } } - $this->assign('customGroup', $customGroup); $fromEmails = CRM_Event_BAO_Event::getFromEmailIds($this->getEventID()); foreach ($participants as $num => $participant) { @@ -2043,66 +1947,10 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ $this->assign('isOnWaitlist', TRUE); } - $this->assign('contactID', $contactID); - $this->assign('participantID', $participantID); - $contributionID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $participantID, 'contribution_id', 'participant_id' ); - $totalAmount = 0; - if ($contributionID) { - // @todo - this should be temporary - we are looking to remove this variable from the template - // in favour of the {contribution.total_amount} token. - // In case this needs back-porting I have kept it as simple as possible. - $totalAmount = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', - $contributionID, 'id', 'total_amount' - ); - } - $this->assign('totalAmount', $params['total_amount'] ?? $totalAmount); - $this->_id = $participantID; - - if ($this->_isPaidEvent) { - // fix amount for each of participants ( for bulk mode ) - $eventAmount = []; - $totalTaxAmount = 0; - - // add dataArray in the receipts in ADD and UPDATE condition - // dataArray contains the total tax amount for each tax rate, in the form [tax rate => total tax amount] - // include 0% tax rate if it exists because if $dataArray controls if tax is shown for each line item - // in the message templates and we want to show 0% tax if set, even if there is no total tax - $dataArray = []; - if ($this->_action & CRM_Core_Action::ADD) { - $line = $lineItem ?? []; - } - elseif ($this->_action & CRM_Core_Action::UPDATE) { - $line = $this->_values['line_items']; - } - if (Civi::settings()->get('invoicing')) { - foreach ($line as $key => $value) { - if (isset($value['tax_amount']) && isset($value['tax_rate'])) { - $totalTaxAmount += $value['tax_amount']; - if (isset($dataArray[(string) $value['tax_rate']])) { - $dataArray[(string) $value['tax_rate']] += $value['tax_amount']; - } - else { - $dataArray[(string) $value['tax_rate']] = $value['tax_amount']; - } - } - } - $this->assign('taxTerm', $this->getSalesTaxTerm()); - $this->assign('dataArray', $dataArray); - } - $eventAmount[$num] = [ - 'label' => preg_replace('//', '', $params['amount_level']), - 'amount' => $params['fee_amount'], - ]; - //as we are using same template for online & offline registration. - //So we have to build amount as array. - $eventAmount = array_merge($eventAmount, $additionalParticipantDetails); - $this->assign('amount', $eventAmount); - } - $this->assign('totalTaxAmount', $totalTaxAmount ?? 0); $sendTemplateParams = [ 'workflow' => 'event_offline_receipt', 'contactId' => $contactID, diff --git a/civicrm/CRM/Event/Form/Participant/Delete.php b/civicrm/CRM/Event/Form/Participant/Delete.php index e095d80290570a63464869d4f95bf464ea10acae..f9634ee4e7463921075113eb3f02633738efe5e3 100644 --- a/civicrm/CRM/Event/Form/Participant/Delete.php +++ b/civicrm/CRM/Event/Form/Participant/Delete.php @@ -19,7 +19,7 @@ /** * Back office participant delete form. */ -class CRM_Event_Form_Participant_Delete extends CRM_Contribute_Form_AbstractEditPayment { +class CRM_Event_Form_Participant_Delete extends CRM_Core_Form { use CRM_Event_Form_EventFormTrait; use CRM_Contact_Form_ContactFormTrait; diff --git a/civicrm/CRM/Event/Form/Registration.php b/civicrm/CRM/Event/Form/Registration.php index 1553c2b03182e4fe10b2e9540ba0aedb1219bfd5..f73508bbb4c685b459bcc58f7f7db34f6d48a17a 100644 --- a/civicrm/CRM/Event/Form/Registration.php +++ b/civicrm/CRM/Event/Form/Registration.php @@ -473,8 +473,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, $this->_bltID)); - // The concept of contributeMode is deprecated. - if ($this->_contributeMode === 'direct' && empty($params['is_pay_later'])) { + if ($this->getSubmittedValue('credit_card_number')) { if (isset($params['credit_card_exp_date'])) { $date = CRM_Utils_Date::format($params['credit_card_exp_date']); $date = CRM_Utils_Date::mysqlToIso($date); @@ -631,7 +630,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $count = CRM_Utils_Array::value('count', $option, 0); + $count = $option['count'] ?? 0; $optionsCountDetails['fields'][$field['id']]['options'][$option['id']] = $count; } } @@ -646,7 +645,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $maxVal = CRM_Utils_Array::value('max_value', $option, 0); + $maxVal = $option['max_value'] ?? 0; $optionsMaxValueDetails['fields'][$field['id']]['options'][$option['id']] = $maxVal; $optionsMaxValueTotal += $maxVal; } diff --git a/civicrm/CRM/Event/Form/Registration/Confirm.php b/civicrm/CRM/Event/Form/Registration/Confirm.php index d23e7002528681243c851e942abd48654745c52b..5d84a66b683a5f1a2b10073d4528653492c05e29 100644 --- a/civicrm/CRM/Event/Form/Registration/Confirm.php +++ b/civicrm/CRM/Event/Form/Registration/Confirm.php @@ -1012,7 +1012,7 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration { // The concept of contributeMode is deprecated. Elsewhere we use the function processBillingAddress() - although // currently that is only inherited by back-office forms. if ($form->_contributeMode != 'notify' && empty($params['is_pay_later'])) { - $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params, $form->_bltID); + $contribParams['address_id'] = CRM_Contribute_BAO_Contribution::createAddress($params); } $contribParams['skipLineItem'] = 1; @@ -1022,12 +1022,6 @@ class CRM_Event_Form_Registration_Confirm extends CRM_Event_Form_Registration { // CRM-11124 CRM_Event_BAO_Participant::createDiscountTrxn($form->_eventId, $contribParams, NULL, CRM_Price_BAO_PriceSet::parseFirstPriceSetValueIDFromParams($params)); - // process soft credit / pcp pages - if (!empty($params['pcp_made_through_id'])) { - CRM_Contribute_BAO_ContributionSoft::formatSoftCreditParams($params, $form); - CRM_Contribute_BAO_ContributionSoft::processSoftContribution($params, $contribution); - } - $transaction->commit(); return $contribution; diff --git a/civicrm/CRM/Event/Form/Registration/Register.php b/civicrm/CRM/Event/Form/Registration/Register.php index faec4b6131c96dd10d1f17622367c2d503c24143..a3614cfba5216d44338b05a9050360caf47969e6 100644 --- a/civicrm/CRM/Event/Form/Registration/Register.php +++ b/civicrm/CRM/Event/Form/Registration/Register.php @@ -189,7 +189,26 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { // get the participant values from EventFees.php, CRM-4320 if ($this->_allowConfirmation) { - CRM_Event_Form_EventFees::preProcess($this); + $this->eventFeeWrangling($this); + } + } + + /** + * This is previously shared code which is probably of little value. + * + * @param CRM_Core_Form $form + * + * @throws \CRM_Core_Exception + */ + private function eventFeeWrangling($form) { + $form->_pId = CRM_Utils_Request::retrieve('participantId', 'Positive', $form); + $form->_discountId = CRM_Utils_Request::retrieve('discountId', 'Positive', $form); + + //CRM-6907 set event specific currency. + if ($this->getEventID() && + ($currency = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $form->_eventId, 'currency')) + ) { + CRM_Core_Config::singleton()->defaultCurrency = $currency; } } @@ -310,7 +329,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { if ($this->_allowConfirmation) { $this->_contactId = $contactID; $this->_discountId = $discountId; - $forcePayLater = CRM_Utils_Array::value('is_pay_later', $this->_defaults, FALSE); + $forcePayLater = $this->_defaults['is_pay_later'] ?? FALSE; $this->_defaults = array_merge($this->_defaults, CRM_Event_Form_EventFees::setDefaultValues($this)); $this->_defaults['is_pay_later'] = $forcePayLater; @@ -735,10 +754,10 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { } foreach ($field['options'] as & $option) { $optId = $option['id']; - $count = CRM_Utils_Array::value('count', $option, 0); - $maxValue = CRM_Utils_Array::value('max_value', $option, 0); - $dbTotalCount = CRM_Utils_Array::value($optId, $recordedOptionsCount, 0); - $currentTotalCount = CRM_Utils_Array::value($optId, $currentOptionsCount, 0); + $count = $option['count'] ?? 0; + $maxValue = $option['max_value'] ?? 0; + $dbTotalCount = $recordedOptionsCount[$optId] ?? 0; + $currentTotalCount = $currentOptionsCount[$optId] ?? 0; $totalCount = $currentTotalCount + $dbTotalCount; $isFull = FALSE; @@ -750,7 +769,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { $optionFullIds[$optId] = $optId; if ($field['html_type'] != 'Select') { if (in_array($optId, $defaultPricefieldIds)) { - $optionFullTotalAmount += CRM_Utils_Array::value('amount', $option); + $optionFullTotalAmount += $option['amount'] ?? 0; } } else { @@ -969,7 +988,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { $this->set('is_pay_later', $params['is_pay_later']); // assign pay later stuff - $this->_params['is_pay_later'] = CRM_Utils_Array::value('is_pay_later', $params, FALSE); + $this->_params['is_pay_later'] = $params['is_pay_later'] ?? FALSE; $this->assign('is_pay_later', $params['is_pay_later']); $this->assign('pay_later_text', $params['is_pay_later'] ? $this->_values['event']['pay_later_text'] : NULL); $this->assign('pay_later_receipt', $params['is_pay_later'] ? $this->_values['event']['pay_later_receipt'] : NULL); diff --git a/civicrm/CRM/Event/Form/SelfSvcUpdate.php b/civicrm/CRM/Event/Form/SelfSvcUpdate.php index 149c88027638261417d14673ed5dc8ba2bbfa1ab..ae9850714737b43634ef813f232d07f7ad98e6d4 100644 --- a/civicrm/CRM/Event/Form/SelfSvcUpdate.php +++ b/civicrm/CRM/Event/Form/SelfSvcUpdate.php @@ -95,6 +95,10 @@ class CRM_Event_Form_SelfSvcUpdate extends CRM_Core_Form { * @var bool */ protected $isBackoffice = FALSE; + /** + * @var string + */ + protected $_userContext; /** * Set variables up before form is built based on participant ID from URL diff --git a/civicrm/CRM/Event/ICalendar.php b/civicrm/CRM/Event/ICalendar.php index cb1faa778d2f3889de0e8b803c58401d16b97851..0d16cfe2ad263fa45a4af339c8f26c20cdf0a2e9 100644 --- a/civicrm/CRM/Event/ICalendar.php +++ b/civicrm/CRM/Event/ICalendar.php @@ -69,25 +69,7 @@ class CRM_Event_ICalendar { $calendar = $template->fetch('CRM/Core/Calendar/GData.tpl'); } else { - if (count($info) > 0) { - $date_min = min( - array_map(function ($event) { - return strtotime($event['start_date']); - }, $info) - ); - $date_max = max( - array_map(function ($event) { - return strtotime($event['end_date'] ?? $event['start_date']); - }, $info) - ); - $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($timezones, $date_min, $date_max)); - } - else { - $template->assign('timezones', NULL); - } - - $calendar = $template->fetch('CRM/Core/Calendar/ICal.tpl'); - $calendar = preg_replace('/(?<!\r)\n/', "\r\n", $calendar); + $calendar = CRM_Utils_ICalendar::createCalendarFile($info); } // Push output for feed or download diff --git a/civicrm/CRM/Event/Page/EventInfo.php b/civicrm/CRM/Event/Page/EventInfo.php index 871e312586f0e934a12808fc35a6a96cdd21f912..8f9d9d2e4099c4448148fcaabb4df3a85b0c0631 100644 --- a/civicrm/CRM/Event/Page/EventInfo.php +++ b/civicrm/CRM/Event/Page/EventInfo.php @@ -276,8 +276,8 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page { } } } - $this->assign('registerClosed', !empty($values['event']['is_online_registration']) && !$isEventOpenForRegistration); + $this->assign('registerClosed', !empty($values['event']['is_online_registration']) && !$isEventOpenForRegistration && CRM_Core_Permission::check('register for events')); $this->assign('allowRegistration', $allowRegistration); $session = CRM_Core_Session::singleton(); diff --git a/civicrm/CRM/Event/PseudoConstant.php b/civicrm/CRM/Event/PseudoConstant.php index b8bd9f11a62bf664d5bfaadd9fefa3d55908f5ce..8a67ed916d09194047fff1c98b140ab4dfaff75a 100644 --- a/civicrm/CRM/Event/PseudoConstant.php +++ b/civicrm/CRM/Event/PseudoConstant.php @@ -16,59 +16,10 @@ */ /** - * This class holds all the Pseudo constants that are specific to Event. This avoids - * polluting the core class and isolates the Event + * @deprecated functions. Use the API instead. */ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { - /** - * Event - * - * @var array - */ - private static $event; - - /** - * Participant Status - * - * @var array - */ - private static $participantStatus; - - /** - * Participant Role - * - * @var array - */ - private static $participantRole; - - /** - * Participant Listing - * @var array - * @deprecated - */ - private static $participantListing; - - /** - * Event Type. - * - * @var array - */ - private static $eventType; - - /** - * Event template titles - * @var array - */ - private static $eventTemplates; - - /** - * Personal campaign pages - * @var array - * @deprecated - */ - private static $pcPage; - /** * Get all events * @@ -81,28 +32,16 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * array of all events if any */ public static function event($id = NULL, $all = FALSE, $condition = NULL) { - $key = "{$id}_{$all}_{$condition}"; - - if (!isset(self::$event[$key])) { - self::$event[$key] = []; - } - - if (!self::$event[$key]) { - CRM_Core_PseudoConstant::populate(self::$event[$key], - 'CRM_Event_DAO_Event', - $all, 'title', 'is_active', $condition, NULL - ); - } + $options = []; + CRM_Core_PseudoConstant::populate($options, + 'CRM_Event_DAO_Event', + $all, 'title', 'is_active', $condition, NULL + ); if ($id) { - if (array_key_exists($id, self::$event[$key])) { - return self::$event[$key][$id]; - } - else { - return NULL; - } + return $options[$id] ?? NULL; } - return self::$event[$key]; + return $options; } /** @@ -119,26 +58,17 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array|string * array reference of all participant statuses if any, or single value if $id was passed */ - public static function &participantStatus($id = NULL, $cond = NULL, $retColumn = 'name') { - if (self::$participantStatus === NULL) { - self::$participantStatus = []; - } - - $index = $cond ?: 'No Condition'; - $index = "{$index}_{$retColumn}"; - if (empty(self::$participantStatus[$index])) { - self::$participantStatus[$index] = []; - CRM_Core_PseudoConstant::populate(self::$participantStatus[$index], - 'CRM_Event_DAO_ParticipantStatusType', - FALSE, $retColumn, 'is_active', $cond, 'weight' - ); - } + public static function participantStatus($id = NULL, $cond = NULL, $retColumn = 'name') { + $statuses = []; + CRM_Core_PseudoConstant::populate($statuses, + 'CRM_Event_DAO_ParticipantStatusType', + FALSE, $retColumn, 'is_active', $cond, 'weight' + ); if ($id) { - return self::$participantStatus[$index][$id]; + return $statuses[$id] ?? NULL; } - - return self::$participantStatus[$index]; + return $statuses; } /** @@ -161,13 +91,9 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array * Array of status classes, keyed by status type */ - public static function &participantStatusClass() { - static $statusClasses = NULL; - - if ($statusClasses === NULL) { - self::populate($statusClasses, 'CRM_Event_DAO_ParticipantStatusType', TRUE, 'class'); - } - + public static function participantStatusClass() { + $statusClasses = []; + self::populate($statusClasses, 'CRM_Event_DAO_ParticipantStatusType', TRUE, 'class'); return $statusClasses; } @@ -182,26 +108,14 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array|string * array reference of all participant roles if any */ - public static function &participantRole($id = NULL, $cond = NULL) { - $index = $cond ?: 'No Condition'; - if (empty(self::$participantRole[$index])) { - self::$participantRole[$index] = []; - - $condition = NULL; - - if ($cond) { - $condition = "AND $cond"; - } - - self::$participantRole[$index] = CRM_Core_OptionGroup::values('participant_role', FALSE, FALSE, - FALSE, $condition - ); - } + public static function participantRole($id = NULL, $cond = NULL) { + $condition = empty($cond) ? NULL : "AND $cond"; + $options = CRM_Core_OptionGroup::values('participant_role', FALSE, FALSE, FALSE, $condition); if ($id) { - return self::$participantRole[$index][$id]; + return $options[$id] ?? NULL; } - return self::$participantRole[$index]; + return $options; } /** @@ -212,18 +126,14 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array|string * array reference of all participant listings if any */ - public static function &participantListing($id = NULL) { + public static function participantListing($id = NULL) { CRM_Core_Error::deprecatedFunctionWarning('Function participantListing will be removed'); - if (!self::$participantListing) { - self::$participantListing = []; - self::$participantListing = CRM_Core_OptionGroup::values('participant_listing'); - } + $options = CRM_Core_OptionGroup::values('participant_listing'); if ($id) { - return self::$participantListing[$id]; + return $options[$id]; } - - return self::$participantListing; + return $options; } /** @@ -234,17 +144,13 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array|string * array reference of all event types. */ - public static function &eventType($id = NULL) { - if (!self::$eventType) { - self::$eventType = []; - self::$eventType = CRM_Core_OptionGroup::values('event_type'); - } + public static function eventType($id = NULL) { + $options = CRM_Core_OptionGroup::values('event_type'); if ($id) { - return self::$eventType[$id]; + return $options[$id] ?? NULL; } - - return self::$eventType; + return $options; } /** @@ -257,21 +163,20 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * * @deprecated Use the API instead */ - public static function &eventTemplates($id = NULL) { + public static function eventTemplates($id = NULL) { CRM_Core_Error::deprecatedFunctionWarning('Use the api'); - if (!self::$eventTemplates) { - CRM_Core_PseudoConstant::populate(self::$eventTemplates, - 'CRM_Event_DAO_Event', - FALSE, - 'template_title', - 'is_active', - 'is_template = 1' - ); - } + $options = []; + CRM_Core_PseudoConstant::populate($options, + 'CRM_Event_DAO_Event', + FALSE, + 'template_title', + 'is_active', + 'is_template = 1' + ); if ($id) { - return self::$eventTemplates[$id]; + return $options[$id]; } - return self::$eventTemplates; + return $options; } /** @@ -295,18 +200,17 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * @return array * array reference of all pcp if any */ - public static function &pcPage($id = NULL) { + public static function pcPage($id = NULL) { CRM_Core_Error::deprecatedFunctionWarning('Function pcPage will be removed'); - if (!self::$pcPage) { - CRM_Core_PseudoConstant::populate(self::$pcPage, - 'CRM_PCP_DAO_PCP', - FALSE, 'title' - ); - } + $options = []; + CRM_Core_PseudoConstant::populate($options, + 'CRM_PCP_DAO_PCP', + FALSE, 'title' + ); if ($id) { - return self::$pcPage[$id] ?? NULL; + return $options[$id] ?? NULL; } - return self::$pcPage; + return $options; } } diff --git a/civicrm/CRM/Event/Tokens.php b/civicrm/CRM/Event/Tokens.php index 2a51923ba0bc196575871773d60d8e29ea132d17..ed4f8066560628437b4c6298c6c911b25a029406 100644 --- a/civicrm/CRM/Event/Tokens.php +++ b/civicrm/CRM/Event/Tokens.php @@ -191,6 +191,9 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'loc_block_id.phone_2_id.phone_ext', 'loc_block_id.phone_2_id.phone_type_id:label', 'is_show_location:label', + 'allow_selfcancelxfer', + 'allow_selfcancelxfer:label', + 'selfcancelxfer_time', 'is_public:label', 'is_share', 'is_share:label', @@ -204,11 +207,7 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'custom.*', ], $this->getExposedFields())) ->execute()->first(); - $addressValues = [ - 'address_name' => $event['loc_block_id.address_id.name'], - 'state_province' => $event['loc_block_id.address_id.state_province_id:label'], - 'country' => $event['loc_block_id.address_id.country_id:label'], - ]; + $addressValues = ['address_name' => $event['loc_block_id.address_id.name']]; foreach ($event as $key => $value) { if (strpos($key, 'loc_block_id.address_id.') === 0) { $addressValues[str_replace('loc_block_id.address_id.', '', $key)] = $value; @@ -267,6 +266,8 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'description', 'is_show_location', 'is_public', + 'allow_selfcancelxfer', + 'selfcancelxfer_time', 'confirm_email_text', 'is_monetary', 'fee_label', @@ -289,6 +290,8 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'is_public' => ['audience' => 'sysadmin'], 'is_show_location' => ['audience' => 'sysadmin'], 'is_monetary' => ['audience' => 'sysadmin'], + 'allow_selfcancelxfer' => ['audience' => 'sysadmin'], + 'selfcancelxfer_time' => ['audience' => 'sysadmin'], ]; } diff --git a/civicrm/CRM/Event/WorkflowMessage/EventExamples.php b/civicrm/CRM/Event/WorkflowMessage/EventExamples.php index e78465af57d11a599584aba431860827bd6f2cbb..9de84306fcae9670aa1d06f460eefb467fc6d254 100644 --- a/civicrm/CRM/Event/WorkflowMessage/EventExamples.php +++ b/civicrm/CRM/Event/WorkflowMessage/EventExamples.php @@ -130,6 +130,10 @@ class CRM_Event_WorkflowMessage_EventExamples extends WorkflowMessageExample { $contribution['total_amount'] = $mockOrder->getTotalAmount(); $contribution['tax_amount'] = $mockOrder->getTotalTaxAmount() ? round($mockOrder->getTotalTaxAmount(), 2) : 0; $contribution['tax_exclusive_amount'] = $contribution['total_amount'] - $contribution['tax_amount']; + $contribution['address_id.name'] = 'Barbara Johnson'; + $contribution['address_id.display'] = '790L Lincoln St S +Baltimore, New York 10545 +United States'; $contribution['is_pay_later'] = $example['is_partially_paid'] && $this->lookup('event_' . $example['event_id'], 'is_pay_later'); $contribution['paid_amount'] = $example['is_partially_paid'] ? $contribution['total_amount'] / 2 : 0; $contribution['balance_amount'] = $contribution['total_amount'] - $contribution['paid_amount']; diff --git a/civicrm/CRM/Event/WorkflowMessage/EventOfflineReceipt.php b/civicrm/CRM/Event/WorkflowMessage/EventOfflineReceipt.php index 38ba48d1e457e157aa0541928d351dba349bc416..1fbec19de263b3561980458e55c895c18c782f69 100644 --- a/civicrm/CRM/Event/WorkflowMessage/EventOfflineReceipt.php +++ b/civicrm/CRM/Event/WorkflowMessage/EventOfflineReceipt.php @@ -10,6 +10,7 @@ */ use Civi\WorkflowMessage\GenericWorkflowMessage; +use Civi\WorkflowMessage\Traits\CustomFieldTrait; /** * Receipt sent when confirming a back office participation record. @@ -22,7 +23,72 @@ use Civi\WorkflowMessage\GenericWorkflowMessage; class CRM_Event_WorkflowMessage_EventOfflineReceipt extends GenericWorkflowMessage { use CRM_Event_WorkflowMessage_ParticipantTrait; use CRM_Contribute_WorkflowMessage_ContributionTrait; + use CustomFieldTrait; public const WORKFLOW = 'event_offline_receipt'; + /** + * Viewable custom fields for the primary participant. + * + * This array is in the format + * + * ['customGroupLabel' => [['customFieldLabel' => 'customFieldValue'], ['customFieldLabel' => 'customFieldValue']] + * + * It is only added for the primary participant (which reflects historical + * form behaviour) and only fields were the group has is_public = TRUE + * and the field has is_view = FALSE. Fields are restricted to + * those viewable by the logged in user (reflecting the fact this + * is historically triggered by a back office user form submission + * and also preventing using an email to see acl-blocked custom fields). + * + * @var array + * + * @scope tplParams as customGroup + */ + public $customFields; + + /** + * Get the custom fields for display for the participant, if not primary. + * + * @return array + * @throws \CRM_Core_Exception + */ + public function getCustomFields(): array { + // Non-primary custom field info can't be gathered on the back office + // form so historically it has not shown up. This keeps that behaviour + // (although a future person could probably change it if they wanted + // to think through any potential downsides. + if (!$this->getIsPrimary()) { + return []; + } + $participant = $this->getParticipant(); + // We re-filter the custom fields to eliminate any custom groups + // not associated with the role, event_id etc. Realistically participants + // should not have such data. But, out of caution we do this becasue + // historical code did. + $filters = [ + 'ParticipantRole' => $participant['role_id'], + 'ParticipantEventName' => $participant['event_id'], + 'ParticipantEventType' => $participant['event_id.event_type_id'], + ]; + return $this->getCustomFieldDisplay($participant, 'Participant', $filters); + } + + /** + * Get the participant fields we need to load. + * + * @throws \CRM_Core_Exception + */ + protected function getFieldsToLoadForParticipant(): array { + $fields = ['registered_by_id', 'role_id', 'event_id', 'event_id.event_type_id']; + // Request the relevant custom fields. This list is + // restricted by view-ability but we don't have the information + // at this point to filter by the finer tuned entity extends information + // which relies on us knowing role etc. + foreach ($this->getFilteredCustomFields('Participant') as $field) { + $fields[] = $field['custom_group_id.name'] . '.' . $field['name']; + } + return $fields; + } + } diff --git a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php index a25d5ac04521c4bb0517b7c847983f4f015b5300..22c02d19265f342c767c403dd444a0796540fec9 100644 --- a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php +++ b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php @@ -211,11 +211,18 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait { if (!$this->participant) { $this->participant = Participant::get(FALSE) ->addWhere('id', '=', $this->participantID) - ->addSelect('registered_by_id')->execute()->first(); + ->setSelect($this->getFieldsToLoadForParticipant())->execute()->first(); } return $this->participant; } + /** + * Get the participant fields we need to load. + */ + protected function getFieldsToLoadForParticipant(): array { + return ['registered_by_id']; + } + /** * Get the line items and tax information indexed by participant. * diff --git a/civicrm/CRM/Financial/BAO/FinancialType.php b/civicrm/CRM/Financial/BAO/FinancialType.php index a8a47383fe8fee868cce0b529e5dabdf524f0651..458114015022c097f40462f0a1ece7197f3d78f3 100644 --- a/civicrm/CRM/Financial/BAO/FinancialType.php +++ b/civicrm/CRM/Financial/BAO/FinancialType.php @@ -347,6 +347,8 @@ class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType im /** * Function to check if lineitems present in a contribution have permissioned FTs. * + * @deprecated since 5.68 not part of core - to be handled within financialacls extension + * * @param int $id * contribution id * @param string $op diff --git a/civicrm/CRM/Financial/BAO/Order.php b/civicrm/CRM/Financial/BAO/Order.php index ecc528c18fedb75268b7594bbe3f3548fd91d536..ca74b7d44c9405b197d9133ce1fb245c8303c7e0 100644 --- a/civicrm/CRM/Financial/BAO/Order.php +++ b/civicrm/CRM/Financial/BAO/Order.php @@ -78,6 +78,18 @@ class CRM_Financial_BAO_Order { */ protected $overridableFinancialTypeID; + private $isExcludeExpiredFields = FALSE; + + /** + * @param bool $isExcludeExpiredFields + * + * @return CRM_Financial_BAO_Order + */ + public function setIsExcludeExpiredFields(bool $isExcludeExpiredFields): CRM_Financial_BAO_Order { + $this->isExcludeExpiredFields = $isExcludeExpiredFields; + return $this; + } + /** * Get overridable financial type id. * @@ -658,8 +670,30 @@ class CRM_Financial_BAO_Order { * * @param array $metadata */ - protected function setPriceFieldMetadata($metadata) { + protected function setPriceFieldMetadata(array $metadata): void { + foreach ($metadata as $index => $priceField) { + if ($this->isExcludeExpiredFields && !empty($priceField['active_on']) && time() < strtotime($priceField['active_on'])) { + unset($metadata[$index]); + } + elseif ($this->isExcludeExpiredFields && !empty($priceField['expire_on']) && strtotime($priceField['expire_on']) < time()) { + unset($metadata[$index]); + } + elseif (!empty($priceField['options'])) { + foreach ($priceField['options'] as $optionID => $option) { + if (!empty($option['membership_type_id'])) { + $membershipType = CRM_Member_BAO_MembershipType::getMembershipType((int) $option['membership_type_id']); + $metadata[$index]['options'][$optionID]['auto_renew'] = (int) $membershipType['auto_renew']; + if ($membershipType['auto_renew'] && empty($this->priceSetMetadata['auto_renew_membership_field'])) { + // Quick form layer supports one auto-renew membership type per price set. If we + // want more for any reason we can add another array property. + $this->priceSetMetadata['auto_renew_membership_field'] = (int) $option['price_field_id']; + } + } + } + } + } $this->priceFieldMetadata = $metadata; + if ($this->getForm()) { CRM_Utils_Hook::buildAmount($this->form->getFormContext(), $this->form, $this->priceFieldMetadata); } @@ -668,18 +702,18 @@ class CRM_Financial_BAO_Order { /** * Get the metadata for the fields in the price set. * + * @return array + * @throws \CRM_Core_Exception * @internal use in tested core code only. * - * @return array */ public function getPriceSetMetadata(): array { if (empty($this->priceSetMetadata)) { - $priceSetMetadata = CRM_Price_BAO_PriceSet::getCachedPriceSetDetail($this->getPriceSetID()); - // @todo - make sure this is an array - commented out for now as this PR is against the rc. - // $priceSetMetadata['extends'] = explode(CRM_Core_DAO::VALUE_SEPARATOR, $priceSetMetadata['extends']); - $this->setPriceFieldMetadata($priceSetMetadata['fields']); - unset($priceSetMetadata['fields']); - $this->priceSetMetadata = $priceSetMetadata; + $this->priceSetMetadata = CRM_Price_BAO_PriceSet::getCachedPriceSetDetail($this->getPriceSetID()); + $this->priceSetMetadata['id'] = $this->getPriceSetID(); + $this->priceSetMetadata['auto_renew_membership_field'] = NULL; + $this->setPriceFieldMetadata($this->priceSetMetadata['fields']); + unset($this->priceSetMetadata['fields']); } return $this->priceSetMetadata; } @@ -688,8 +722,9 @@ class CRM_Financial_BAO_Order { if (!CRM_Core_Component::isEnabled('CiviMember')) { return FALSE; } - $extends = explode(CRM_Core_DAO::VALUE_SEPARATOR, $this->getPriceSetMetadata()['extends']); - return in_array(CRM_Core_Component::getComponentID('CiviMember'), $extends, FALSE); + // Access the property if set, to avoid a potential loop when the hook is called. + $priceSetMetadata = $this->priceSetMetadata ?: $this->getPriceSetMetadata(); + return in_array(CRM_Core_Component::getComponentID('CiviMember'), $priceSetMetadata['extends'], FALSE); } /** diff --git a/civicrm/CRM/Financial/BAO/Payment.php b/civicrm/CRM/Financial/BAO/Payment.php index 0f8cffbc5147a158f420abdaf5ed8d6c678a5cc5..82da1f25805b9403f923c723586c8610b5aa2b37 100644 --- a/civicrm/CRM/Financial/BAO/Payment.php +++ b/civicrm/CRM/Financial/BAO/Payment.php @@ -223,7 +223,7 @@ class CRM_Financial_BAO_Payment { // change status to refunded. self::updateContributionStatus($contribution['id'], 'Refunded'); } - CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], CRM_Utils_Array::value('participant_id', $params), $params['total_amount'], $trxn->currency, $trxn->trxn_date); + CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], $params['participant_id'] ?? NULL, $params['total_amount'], $trxn->currency, $trxn->trxn_date); return $trxn; } diff --git a/civicrm/CRM/Financial/Form/BatchTransaction.php b/civicrm/CRM/Financial/Form/BatchTransaction.php index dee4265809c09cd5bb91f8566bb8fc9aa6751b78..08870c4883e980226b9466c516e6d53b665d872f 100644 --- a/civicrm/CRM/Financial/Form/BatchTransaction.php +++ b/civicrm/CRM/Financial/Form/BatchTransaction.php @@ -38,7 +38,7 @@ class CRM_Financial_Form_BatchTransaction extends CRM_Contribute_Form_Search { public function preProcess() { // This reuses some styles from search forms CRM_Core_Resources::singleton()->addStyleFile('civicrm', 'css/searchForm.css', 1, 'html-header'); - self::$_entityID = CRM_Utils_Request::retrieve('bid', 'Positive') ? CRM_Utils_Request::retrieve('bid', 'Positive') : CRM_Utils_Array::value('batch_id', $_POST); + self::$_entityID = CRM_Utils_Request::retrieve('bid', 'Positive') ?: $_POST['batch_id'] ?? NULL; $this->assign('entityID', self::$_entityID); if (isset(self::$_entityID)) { $this->_batchStatusId = CRM_Core_DAO::getFieldValue('CRM_Batch_BAO_Batch', self::$_entityID, 'status_id'); diff --git a/civicrm/CRM/Financial/Form/FinancialAccount.php b/civicrm/CRM/Financial/Form/FinancialAccount.php index 7878fadb8e4b90deab9b982803e3dee631b06a51..727c2335e3451c2dee677a0b797b444cffebeae7 100644 --- a/civicrm/CRM/Financial/Form/FinancialAccount.php +++ b/civicrm/CRM/Financial/Form/FinancialAccount.php @@ -206,7 +206,7 @@ class CRM_Financial_Form_FinancialAccount extends CRM_Contribute_Form { 'is_tax', 'is_default', ] as $field) { - $params[$field] = CRM_Utils_Array::value($field, $params, FALSE); + $params[$field] = $params[$field] ?? FALSE; } $financialAccount = CRM_Financial_BAO_FinancialAccount::writeRecord($params); CRM_Core_Session::setStatus(ts('The Financial Account \'%1\' has been saved.', [1 => $financialAccount->name]), ts('Saved'), 'success'); diff --git a/civicrm/CRM/Financial/Form/FinancialType.php b/civicrm/CRM/Financial/Form/FinancialType.php index 2b6f1079dde33c392c54ca2ac0675c07730a1ae6..4521ca3afc41fb62ca76540a376457f326230ca8 100644 --- a/civicrm/CRM/Financial/Form/FinancialType.php +++ b/civicrm/CRM/Financial/Form/FinancialType.php @@ -122,7 +122,7 @@ class CRM_Financial_Form_FinancialType extends CRM_Core_Form { 'is_reserved', 'is_deductible', ] as $field) { - $params[$field] = CRM_Utils_Array::value($field, $params, FALSE); + $params[$field] = $params[$field] ?? FALSE; } $financialType = civicrm_api3('FinancialType', 'create', $params); if ($this->_action & CRM_Core_Action::UPDATE) { diff --git a/civicrm/CRM/Friend/BAO/Friend.php b/civicrm/CRM/Friend/BAO/Friend.php index 6e97730cce8118734d155e3577a7c80618e4070c..2a0945ea4d9af95f34d92c9966c1bd9099f64395 100644 --- a/civicrm/CRM/Friend/BAO/Friend.php +++ b/civicrm/CRM/Friend/BAO/Friend.php @@ -320,7 +320,7 @@ class CRM_Friend_BAO_Friend extends CRM_Friend_DAO_Friend { public static function addTellAFriend(&$params) { $friendDAO = new CRM_Friend_DAO_Friend(); $friendDAO->copyValues($params); - $friendDAO->is_active = CRM_Utils_Array::value('is_active', $params, FALSE); + $friendDAO->is_active = $params['is_active'] ?? FALSE; $friendDAO->save(); return $friendDAO; diff --git a/civicrm/CRM/Friend/Form/Contribute.php b/civicrm/CRM/Friend/Form/Contribute.php index 0a85b96a1adab7d164be8063bdde1aca5e988941..5aa5cbcdd7ba702a190b0d28a2860d990834a00c 100644 --- a/civicrm/CRM/Friend/Form/Contribute.php +++ b/civicrm/CRM/Friend/Form/Contribute.php @@ -95,7 +95,7 @@ class CRM_Friend_Form_Contribute extends CRM_Contribute_Form_ContributionPage { $formValues['entity_table'] = 'civicrm_contribution_page'; $formValues['entity_id'] = $this->_id; $formValues['title'] = $formValues['tf_title']; - $formValues['is_active'] = CRM_Utils_Array::value('tf_is_active', $formValues, FALSE); + $formValues['is_active'] = $formValues['tf_is_active'] ?? FALSE; $formValues['thankyou_title'] = $formValues['tf_thankyou_title'] ?? NULL; $formValues['thankyou_text'] = $formValues['tf_thankyou_text'] ?? NULL; diff --git a/civicrm/CRM/Friend/Form/Event.php b/civicrm/CRM/Friend/Form/Event.php index cad46dde25c1a11511e9fecc8a5beb7a2b197bbe..f87e0c68d54f73d3aed1c3f82b480a034ca45cf7 100644 --- a/civicrm/CRM/Friend/Form/Event.php +++ b/civicrm/CRM/Friend/Form/Event.php @@ -103,7 +103,7 @@ class CRM_Friend_Form_Event extends CRM_Event_Form_ManageEvent { $formValues['entity_table'] = 'civicrm_event'; $formValues['entity_id'] = $this->_id; $formValues['title'] = $formValues['tf_title']; - $formValues['is_active'] = CRM_Utils_Array::value('tf_is_active', $formValues, FALSE); + $formValues['is_active'] = $formValues['tf_is_active'] ?? FALSE; $formValues['thankyou_title'] = $formValues['tf_thankyou_title'] ?? NULL; $formValues['thankyou_text'] = $formValues['tf_thankyou_text'] ?? NULL; diff --git a/civicrm/CRM/Group/Form/Edit.php b/civicrm/CRM/Group/Form/Edit.php index 22e419ea1468eaf348b02ce0123bae00cb0d8262..a850add6ead39ad10b2e3c4a46298202202c3b56 100644 --- a/civicrm/CRM/Group/Form/Edit.php +++ b/civicrm/CRM/Group/Form/Edit.php @@ -331,8 +331,8 @@ WHERE title = %1 $params['group_type'] = []; } - $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + $params['is_reserved'] = $params['is_reserved'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; $params['custom'] = CRM_Core_BAO_CustomField::postProcess($params, $this->_id, 'Group' diff --git a/civicrm/CRM/Import/Form/MapField.php b/civicrm/CRM/Import/Form/MapField.php index cf150e0f23de167302acbf57fe6c8efdbe7e0792..2c8785d424461672142083ee4dca747f57fd05b7 100644 --- a/civicrm/CRM/Import/Form/MapField.php +++ b/civicrm/CRM/Import/Form/MapField.php @@ -31,6 +31,11 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms { */ protected $_mapperFields; + /** + * @var bool + */ + protected $shouldSortMapperFields = TRUE; + /** * Column headers, if we have them * @@ -72,7 +77,9 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms { if (empty($_POST) && count($fieldMappings) > 0 && count($this->getColumnHeaders()) !== count($fieldMappings)) { CRM_Core_Session::singleton()->setStatus(ts('The data columns in this import file appear to be different from the saved mapping. Please verify that you have selected the correct saved mapping before continuing.')); } - asort($this->_mapperFields); + if ($this->shouldSortMapperFields) { + asort($this->_mapperFields); + } parent::preProcess(); } diff --git a/civicrm/CRM/Import/Forms.php b/civicrm/CRM/Import/Forms.php index f1b84b984e85a589c3fa76c175e78bf4bf2c8345..4535fd2121a02b62635f3ffe48791f775cad9ca6 100644 --- a/civicrm/CRM/Import/Forms.php +++ b/civicrm/CRM/Import/Forms.php @@ -638,6 +638,7 @@ class CRM_Import_Forms extends CRM_Core_Form { /** * Outputs and downloads the csv of outcomes from an import job. + * Function is accessed from civicrm/import/outcome path. * * This gets the rows from the temp table that match the relevant status * and output them as a csv. diff --git a/civicrm/CRM/Mailing/BAO/Mailing.php b/civicrm/CRM/Mailing/BAO/Mailing.php index ff358c350921fe8f4ba0024dabd194345ec98b6f..ae2037a0b698efe369242d86a39b94566b8e2d87 100644 --- a/civicrm/CRM/Mailing/BAO/Mailing.php +++ b/civicrm/CRM/Mailing/BAO/Mailing.php @@ -1019,12 +1019,14 @@ ORDER BY civicrm_email.is_bulkmail DESC $verp['reply'] = "\"{$this->from_name}\" <{$this->from_email}>"; } + // Generating URLs is expensive, so we only call it once for each of these 5 URLs. + $genericURL = CRM_Utils_System::url('civicrm/mailing/genericUrlPath', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE); $urls = [ - 'forward' => CRM_Utils_System::url('civicrm/mailing/forward', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'unsubscribeUrl' => CRM_Utils_System::url('civicrm/mailing/unsubscribe', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'resubscribeUrl' => CRM_Utils_System::url('civicrm/mailing/resubscribe', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'optOutUrl' => CRM_Utils_System::url('civicrm/mailing/optout', "reset=1&jid={$job_id}&qid={$event_queue_id}&h={$hash}", TRUE, NULL, TRUE, TRUE), - 'subscribeUrl' => CRM_Utils_System::url('civicrm/mailing/subscribe', 'reset=1', TRUE, NULL, TRUE, TRUE), + 'forward' => str_replace('genericUrlPath', 'forward', $genericURL), + 'unsubscribeUrl' => str_replace('genericUrlPath', 'unsubscribe', $genericURL), + 'resubscribeUrl' => str_replace('genericUrlPath', 'resubscribe', $genericURL), + 'optOutUrl' => str_replace('genericUrlPath', 'optout', $genericURL), + 'subscribeUrl' => str_replace('genericUrlPath', 'subscribe', $genericURL), ]; $headers = [ @@ -2861,7 +2863,7 @@ ORDER BY civicrm_mailing.id DESC"; $mailing['openstats'] = "Opens: " . CRM_Utils_Array::value($values['mailing_id'], $openCounts, 0) . "<br />Clicks: " . - CRM_Utils_Array::value($values['mailing_id'], $clickCounts, 0); + $clickCounts[$values['mailing_id']] ?? 0; $actionLinks = [ CRM_Core_Action::VIEW => [ diff --git a/civicrm/CRM/Mailing/BAO/MailingJob.php b/civicrm/CRM/Mailing/BAO/MailingJob.php index ed18b5ca3710b5e5b77f5785320384b8044e84f5..3d7598007937f2b45c7c4d0fc5d550fde5ce54e2 100644 --- a/civicrm/CRM/Mailing/BAO/MailingJob.php +++ b/civicrm/CRM/Mailing/BAO/MailingJob.php @@ -45,7 +45,7 @@ class CRM_Mailing_BAO_MailingJob extends CRM_Mailing_DAO_MailingJob { throw new CRM_Core_Exception("Failed to create job: Unknown mailing ID"); } $op = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($op, 'MailingJob', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($op, 'MailingJob', $params['id'] ?? NULL, $params); $jobDAO = new CRM_Mailing_BAO_MailingJob(); $jobDAO->copyValues($params); diff --git a/civicrm/CRM/Mailing/DAO/Mailing.php b/civicrm/CRM/Mailing/DAO/Mailing.php index 53d6268386aac2109a006baa6790c956a3736b0b..2bb67e0253ba964c540482738d44a07d1283a60d 100644 --- a/civicrm/CRM/Mailing/DAO/Mailing.php +++ b/civicrm/CRM/Mailing/DAO/Mailing.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Mailing/Mailing.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:813f125fcf0c0253d96f6a0cf158bc15) + * (GenCodeChecksum:62a218e043b9abab2e816bf69272cca1) */ /** @@ -51,8 +51,9 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO { * @var string[] */ protected static $_paths = [ - 'add' => 'civicrm/a/#/mailing/new', - 'update' => 'civicrm/a/#/mailing/[id]', + 'add' => 'civicrm/mailing/send', + 'update' => 'civicrm/mailing/send?mid=[id]&continue=true', + 'copy' => 'civicrm/mailing/send?mid=[id]', 'view' => 'civicrm/mailing/report?mid=[id]&reset=1', 'preview' => 'civicrm/mailing/view?id=[id]&reset=1', ]; diff --git a/civicrm/CRM/Mailing/DAO/MailingTrackableURL.php b/civicrm/CRM/Mailing/DAO/MailingTrackableURL.php index 599cda1ef707c1b6bf6227c83cb571f9aaf55fc1..985b1cac7da59da40ef889634a5fbd6955c4c180 100644 --- a/civicrm/CRM/Mailing/DAO/MailingTrackableURL.php +++ b/civicrm/CRM/Mailing/DAO/MailingTrackableURL.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Mailing/MailingTrackableURL.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:5da2465e098de06d8a90975560c1cd91) + * (GenCodeChecksum:f446966734b2d351d7a1f8e7557dc08c) */ /** @@ -136,6 +136,9 @@ class CRM_Mailing_DAO_MailingTrackableURL extends CRM_Core_DAO { 'entity' => 'MailingTrackableURL', 'bao' => 'CRM_Mailing_BAO_MailingTrackableURL', 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], 'add' => NULL, ], 'mailing_id' => [ diff --git a/civicrm/CRM/Mailing/Event/BAO/MailingEventQueue.php b/civicrm/CRM/Mailing/Event/BAO/MailingEventQueue.php index 6a5c62402434e0234985ed1875571cc78463384b..d3f27f5aad48b25e0e3eeea2f941fab38027bd42 100644 --- a/civicrm/CRM/Mailing/Event/BAO/MailingEventQueue.php +++ b/civicrm/CRM/Mailing/Event/BAO/MailingEventQueue.php @@ -94,33 +94,6 @@ class CRM_Mailing_Event_BAO_MailingEventQueue extends CRM_Mailing_Event_DAO_Mail return $success; } - /** - * Given a queue event ID, find the corresponding email address. - * - * @param int $queue_id - * The queue event ID. - * - * @return string - * The email address - */ - public static function getEmailAddress($queue_id) { - $email = CRM_Core_BAO_Email::getTableName(); - $eq = self::getTableName(); - $query = " SELECT $email.email as email - FROM $email - INNER JOIN $eq - ON $eq.email_id = $email.id - WHERE $eq.id = " . CRM_Utils_Type::rule($queue_id, 'Integer'); - - $q = new CRM_Mailing_Event_BAO_MailingEventQueue(); - $q->query($query); - if (!$q->fetch()) { - return NULL; - } - - return $q->email; - } - /** * Count up events given a mailing id and optional job id. * diff --git a/civicrm/CRM/Mailing/Info.php b/civicrm/CRM/Mailing/Info.php index bffbd7ca798ef4b1dbb25b0dd92b8ffeb615c621..2eec29a4382ec93af4c858eccfb99df4a00b4963 100644 --- a/civicrm/CRM/Mailing/Info.php +++ b/civicrm/CRM/Mailing/Info.php @@ -137,14 +137,6 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info { * @see CRM_Utils_Hook::angularModules */ public function getAngularModules() { - // load angular files only if valid permissions are granted to the user - if (!CRM_Core_Permission::check('access CiviMail') - && !CRM_Core_Permission::check('create mailings') - && !CRM_Core_Permission::check('schedule mailings') - && !CRM_Core_Permission::check('approve mailings') - ) { - return []; - } global $civicrm_root; $result = []; diff --git a/civicrm/CRM/Member/Form/MembershipBlock.php b/civicrm/CRM/Member/Form/MembershipBlock.php index 7910ad9d46958466b8900678b104cbd9ef85bf9e..72dd3f22c1ad341dc987f6c5b389e847a4ffe554 100644 --- a/civicrm/CRM/Member/Form/MembershipBlock.php +++ b/civicrm/CRM/Member/Form/MembershipBlock.php @@ -127,6 +127,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa } $membership = $membershipDefault = $params = []; + $renewOption = []; foreach ($membershipTypes as $k => $v) { $membership[] = $this->createElement('advcheckbox', $k, NULL, $v); $membershipDefault[$k] = NULL; @@ -143,7 +144,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa $this->freeze("auto_renew_$k"); $params['id'] = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipBlock', $this->_id, 'id', 'entity_id'); } - $this->_renewOption[$k] = $autoRenew; + $renewOption[$k] = $autoRenew; } } } @@ -155,9 +156,7 @@ class CRM_Member_Form_MembershipBlock extends CRM_Contribute_Form_ContributionPa } $this->add('hidden', "mem_price_field_id", '', ['id' => "mem_price_field_id"]); $this->assign('is_recur', $isRecur); - if (isset($this->_renewOption)) { - $this->assign('auto_renew', $this->_renewOption); - } + $this->assign('auto_renew', $renewOption); $this->addGroup($membership, 'membership_type', ts('Membership Types')); $this->addRadio('membership_type_default', ts('Membership Types Default'), $membershipDefault, ['allowClear' => TRUE]); diff --git a/civicrm/CRM/PCP/BAO/PCP.php b/civicrm/CRM/PCP/BAO/PCP.php index 5c504f844184555f56dd9e36330cc96cc99adbed..3540790485e53644ae89eb0b56aa5cb468f5e998 100644 --- a/civicrm/CRM/PCP/BAO/PCP.php +++ b/civicrm/CRM/PCP/BAO/PCP.php @@ -392,7 +392,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; $form->assign('profile', $profile); } - $form->add('select', 'supporter_profile_id', ts('Supporter Profile'), ['' => ts('- select -')] + $profile, TRUE, ['class' => 'crm-select2']); + $form->add('select', 'supporter_profile_id', ts('Supporter Profile'), ['' => ts('- select -')] + $profile, FALSE, ['class' => 'crm-select2']); //CRM-15821 - To add new option for PCP "Owner" notification $ownerNotifications = CRM_Core_OptionGroup::values('pcp_owner_notify'); diff --git a/civicrm/CRM/PCP/Form/Contribute.php b/civicrm/CRM/PCP/Form/Contribute.php index 890ffeb13e1137e50a80448cb8cc2ddd2b5a25f2..86bc12ba7944ace8c7f2dd276d1cb1ff65698f9a 100644 --- a/civicrm/CRM/PCP/Form/Contribute.php +++ b/civicrm/CRM/PCP/Form/Contribute.php @@ -92,7 +92,7 @@ class CRM_PCP_Form_Contribute extends CRM_Contribute_Form_ContributionPage { */ public static function formRule($params, $files, $self) { $errors = []; - if (!empty($params['is_active'])) { + if (!empty($params['pcp_active'])) { if (!empty($params['is_tellfriend_enabled']) && (CRM_Utils_Array::value('tellfriend_limit', $params) <= 0) @@ -144,9 +144,9 @@ class CRM_PCP_Form_Contribute extends CRM_Contribute_Form_ContributionPage { $dao->entity_id = $this->_id; $dao->find(TRUE); $params['id'] = $dao->id; - $params['is_active'] = CRM_Utils_Array::value('pcp_active', $params, FALSE); - $params['is_approval_needed'] = CRM_Utils_Array::value('is_approval_needed', $params, FALSE); - $params['is_tellfriend_enabled'] = CRM_Utils_Array::value('is_tellfriend_enabled', $params, FALSE); + $params['is_active'] = $params['pcp_active'] ?? FALSE; + $params['is_approval_needed'] = $params['is_approval_needed'] ?? FALSE; + $params['is_tellfriend_enabled'] = $params['is_tellfriend_enabled'] ?? FALSE; CRM_PCP_BAO_PCPBlock::writeRecord($params); diff --git a/civicrm/CRM/PCP/Form/Event.php b/civicrm/CRM/PCP/Form/Event.php index 636968f8a05d9c5866356d62838c17c072e9a868..5448225acc030bd27ab893a2a2eddd2484c72689 100644 --- a/civicrm/CRM/PCP/Form/Event.php +++ b/civicrm/CRM/PCP/Form/Event.php @@ -125,13 +125,19 @@ class CRM_PCP_Form_Event extends CRM_Event_Form_ManageEvent { */ public static function formRule($params, $files, $self) { $errors = []; - if (!empty($params['is_active'])) { + if (!empty($params['pcp_active'])) { - if (!empty($params['is_tellfriend_enabled']) && - (CRM_Utils_Array::value('tellfriend_limit', $params) <= 0) - ) { - $errors['tellfriend_limit'] = ts('if Tell Friend is enable, Maximum recipients limit should be greater than zero.'); + if (!empty($params['is_tellfriend_enabled']) && ($params['is_tellfriend_enabled'] <= 0)) { + $errors['tellfriend_limit'] = ts('If Tell a Friend is enabled, maximum recipients limit should be greater than zero.'); + } + + if (empty($params['target_entity_type'])) { + $errors['target_entity_type'] = ts('Campaign Type is a required field.'); } + elseif (($params['target_entity_type'] === 'contribute') && (empty($params['target_entity_id']))) { + $errors['target_entity_id'] = ts('Online Contribution Page is a required field.'); + } + if (empty($params['supporter_profile_id'])) { $errors['supporter_profile_id'] = ts('Supporter profile is a required field.'); } @@ -181,9 +187,9 @@ class CRM_PCP_Form_Event extends CRM_Event_Form_ManageEvent { $dao->entity_id = $this->_id; $dao->find(TRUE); $params['id'] = $dao->id; - $params['is_active'] = CRM_Utils_Array::value('pcp_active', $params, FALSE); - $params['is_approval_needed'] = CRM_Utils_Array::value('is_approval_needed', $params, FALSE); - $params['is_tellfriend_enabled'] = CRM_Utils_Array::value('is_tellfriend_enabled', $params, FALSE); + $params['is_active'] = $params['pcp_active'] ?? FALSE; + $params['is_approval_needed'] = $params['is_approval_needed'] ?? FALSE; + $params['is_tellfriend_enabled'] = $params['is_tellfriend_enabled'] ?? FALSE; CRM_PCP_BAO_PCPBlock::writeRecord($params); diff --git a/civicrm/CRM/Pledge/BAO/PledgeBlock.php b/civicrm/CRM/Pledge/BAO/PledgeBlock.php index 052a23fbbda6f8d8832f11f0ce98db4a2b792a5a..e6e867dfbadd54c86661b8a174fb108f137dcd30 100644 --- a/civicrm/CRM/Pledge/BAO/PledgeBlock.php +++ b/civicrm/CRM/Pledge/BAO/PledgeBlock.php @@ -118,8 +118,11 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock { * @param CRM_Core_Form $form * * @throws \CRM_Core_Exception + * + * @deprecated since 5.68 will be removed around 5.74 */ public static function buildPledgeBlock($form) { + CRM_Core_Error::deprecatedFunctionWarning('no alternative'); //build pledge payment fields. if (!empty($form->_values['pledge_id'])) { //get all payments required details. diff --git a/civicrm/CRM/Pledge/Form/Pledge.php b/civicrm/CRM/Pledge/Form/Pledge.php index 471faa805de5e2018514a860d3962a7eaa360f80..ab873baa75fada82114ce861f68a8cc3f0b5d5f5 100644 --- a/civicrm/CRM/Pledge/Form/Pledge.php +++ b/civicrm/CRM/Pledge/Form/Pledge.php @@ -195,33 +195,28 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { $contactField->freeze(); } - $showAdditionalInfo = FALSE; - $formType = CRM_Utils_Request::retrieveValue('form_type', 'String'); - $defaults = []; + $formType = CRM_Utils_Request::retrieveValue('formType', 'String'); - $paneNames = [ - ts('Payment Reminders') => 'PaymentReminders', + $allPanes[ts('Payment Reminders')] = [ + 'open' => 'false', + 'id' => 'PaymentReminders', ]; - foreach ($paneNames as $name => $type) { - $urlParams = "snippet=4&formType={$type}"; - $allPanes[$name] = [ - 'url' => CRM_Utils_System::url('civicrm/contact/view/pledge', $urlParams), - 'open' => 'false', - 'id' => $type, - ]; - // see if we need to include this paneName in the current form - if ($formType == $type || !empty($_POST["hidden_{$type}"]) || - !empty($defaults["hidden_{$type}"]) - ) { - $showAdditionalInfo = TRUE; - $allPanes[$name]['open'] = 'true'; - } - $fnName = "build{$type}"; - CRM_Contribute_Form_AdditionalInfo::$fnName($this); + // see if we need to include this paneName in the current form + if ($formType === 'PaymentReminders' || !empty($_POST['hidden_PaymentReminders']) + ) { + $allPanes[ts('Payment Reminders')]['open'] = 'true'; } + $this->add('hidden', 'hidden_PaymentReminders', 1); + $this->add('text', 'initial_reminder_day', ts('Send Initial Reminder'), ['size' => 3]); + $this->addRule('initial_reminder_day', ts('Please enter a valid reminder day.'), 'positiveInteger'); + $this->add('text', 'max_reminders', ts('Send up to'), ['size' => 3]); + $this->addRule('max_reminders', ts('Please enter a valid No. of reminders.'), 'positiveInteger'); + $this->add('text', 'additional_reminder_day', ts('Send additional reminders'), ['size' => 3]); + $this->addRule('additional_reminder_day', ts('Please enter a valid additional reminder day.'), 'positiveInteger'); + $this->assign('allPanes', $allPanes); - $this->assign('showAdditionalInfo', $showAdditionalInfo); + $this->assign('showAdditionalInfo', TRUE); $this->assign('formType', $formType); if ($formType) { @@ -297,8 +292,8 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { $frequencyUnit->freeze(); $frequencyDay->freeze(); $eachPaymentAmount = $this->_values['original_installment_amount']; - $this->assign('eachPaymentAmount', $eachPaymentAmount); } + $this->assign('eachPaymentAmount', $eachPaymentAmount ?? NULL); if (($this->_values['status_id'] ?? NULL) != CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_Pledge', 'status_id', 'Cancelled') diff --git a/civicrm/CRM/Pledge/Selector/Search.php b/civicrm/CRM/Pledge/Selector/Search.php index 49b5c25c2b6d3b696f12be09b0a28e864ec5ccc7..8dba0e80336e84d8c62251c4fb7132e090f5cc0a 100644 --- a/civicrm/CRM/Pledge/Selector/Search.php +++ b/civicrm/CRM/Pledge/Selector/Search.php @@ -262,8 +262,8 @@ class CRM_Pledge_Selector_Search extends CRM_Core_Selector_Base { * @param string $output * What should the result set include (web/email/csv). * - * @return int - * the total number of rows for this action + * @return array + * Rows number of rows for this action */ public function &getRows($action, $offset, $rowCount, $sort, $output = NULL) { $result = $this->_query->searchQuery($offset, $rowCount, $sort, @@ -276,9 +276,6 @@ class CRM_Pledge_Selector_Search extends CRM_Core_Selector_Base { // process the result of the query $rows = []; - // get all pledge status - $pledgeStatuses = CRM_Pledge_BAO_Pledge::buildOptions('status_id'); - // get all campaigns. $allCampaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE); @@ -302,29 +299,30 @@ class CRM_Pledge_Selector_Search extends CRM_Core_Selector_Base { // the columns we are interested in foreach (self::$_properties as $property) { - if (isset($result->$property)) { - $row[$property] = $result->$property; + if (in_array($property, ['pledge_amount', 'pledge_total_paid', 'pledge_next_pay_amount', 'pledge_outstanding_amount'])) { + $row[$property] = $result->$property ? (float) $result->$property : 0; + } + else { + $row[$property] = $result->$property ?? NULL; } } // carry campaign on selectors. $row['campaign'] = $allCampaigns[$result->pledge_campaign_id] ?? NULL; $row['campaign_id'] = $result->pledge_campaign_id; - - // add pledge status name - if (!empty($row['pledge_status_id'])) { - $row['pledge_status_name'] = CRM_Utils_Array::value($row['pledge_status_id'], - $pledgeStatuses - ); + if (isset($row['pledge_total_paid'])) { + $row['pledge_balance_amount'] = $row['pledge_amount'] - $row['pledge_total_paid']; } + // add pledge status name + $statusID = $row['pledge_status_id'] ?? NULL; + $row['pledge_status_name'] = CRM_Core_PseudoConstant::getLabel('CRM_Pledge_BAO_Pledge', 'status_id', $statusID); + // append (test) to status label if (!empty($row['pledge_is_test'])) { $row['pledge_status'] = CRM_Core_TestEntity::appendTestText($row['pledge_status']); } $hideOption = []; - if (CRM_Utils_Array::key('Cancelled', $row) || - CRM_Utils_Array::key('Completed', $row) - ) { + if (in_array(CRM_Core_PseudoConstant::getName('CRM_Pledge_BAO_Pledge', 'status_id', $statusID), ['Completed', 'Cancelled'])) { $hideOption[] = 'Cancel'; } diff --git a/civicrm/CRM/Price/BAO/LineItem.php b/civicrm/CRM/Price/BAO/LineItem.php index 4d4069054a5e7cf66bd3392a76cc5c33a8ca7e87..4a1a81c85abece7e84b98d4547dea455cfd51444 100644 --- a/civicrm/CRM/Price/BAO/LineItem.php +++ b/civicrm/CRM/Price/BAO/LineItem.php @@ -311,7 +311,7 @@ WHERE li.contribution_id = %1"; $qty = (float) $qty; $price = (float) ($amount_override === NULL ? $options[$oid]['amount'] : $amount_override); - $participantsPerField = (int) CRM_Utils_Array::value('count', $options[$oid], 0); + $participantsPerField = (int) ($options[$oid]['count'] ?? 0); $values[$oid] = [ 'price_field_id' => $fid, @@ -329,7 +329,7 @@ WHERE li.contribution_id = %1"; 'auto_renew' => $options[$oid]['auto_renew'] ?? NULL, 'html_type' => $fields['html_type'], 'financial_type_id' => $options[$oid]['financial_type_id'] ?? NULL, - 'tax_amount' => CRM_Utils_Array::value('tax_amount', $options[$oid], 0), + 'tax_amount' => $options[$oid]['tax_amount'] ?? 0, 'non_deductible_amount' => $options[$oid]['non_deductible_amount'] ?? NULL, ]; diff --git a/civicrm/CRM/Price/BAO/PriceField.php b/civicrm/CRM/Price/BAO/PriceField.php index 0fb1c2e609072b24205a93814868ef05b7ea1b3a..39803c6d4f6a63bd97e942268a6e54346446bcbd 100644 --- a/civicrm/CRM/Price/BAO/PriceField.php +++ b/civicrm/CRM/Price/BAO/PriceField.php @@ -236,6 +236,8 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { * * @param null $fieldOptions * @param array $freezeOptions + * @param array $extra + * Passed through to the add element function, use to add js. * * @return null */ @@ -247,18 +249,20 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { $useRequired = TRUE, $label = NULL, $fieldOptions = NULL, - $freezeOptions = [] + $freezeOptions = [], + array $extra = [] ) { - + $incomingExtra = $extra; $field = new CRM_Price_DAO_PriceField(); $field->id = $fieldId; if (!$field->find(TRUE)) { /* FIXME: failure! */ return NULL; } - + $label = $label ?: $field->label; $is_pay_later = 0; $isQuickConfig = CRM_Price_BAO_PriceSet::isQuickConfig($field->price_set_id); + // @todo - pass is_pay_later in rather than checking form properties if (isset($qf->_mode) && empty($qf->_mode)) { $is_pay_later = 1; } @@ -274,10 +278,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { // get currency name for price field and option attributes $currencyName = $config->defaultCurrency; - if (!isset($label)) { - $label = (!empty($qf->_membershipBlock) && $field->name === 'contribution_amount') ? ts('Additional Contribution') : $field->label; - } - + // @todo - pass useRequired in rather than checking form properties if (isset($qf->_online) && $qf->_online) { $useRequired = FALSE; } @@ -310,21 +311,16 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { $max_value, ]); - $extra = []; if (!empty($fieldOptions[$optionKey]['label'])) { //check for label. - $label = $fieldOptions[$optionKey]['label']; + $label = CRM_Utils_String::purifyHTML($fieldOptions[$optionKey]['label']); } + // @todo - move this back to the only calling function on Contribution_Form_Main.php if ($isQuickConfig && $field->name === 'other_amount') { if (!empty($qf->_membershipBlock)) { $useRequired = 0; } $label .= ' ' . $currencySymbol; - $qf->assign('priceset', $elementName); - $extra = [ - 'onclick' => 'useAmountOther();', - 'autocomplete' => 'off', - ]; } $element = &$qf->add('text', $elementName, $label, @@ -353,7 +349,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { $type = 'money'; } else { - $message = ts('%1 must be a number (with or without decimal point).', [1 => $label]); + $message = ts('%1 must be a number (with or without decimals).', [1 => $label]); $type = 'numeric'; } // integers will have numeric rule applied to them. @@ -363,10 +359,6 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { case 'Radio': $choice = []; - if ($isQuickConfig && $field->name === 'contribution_amount') { - $qf->assign('contriPriceset', $elementName); - } - foreach ($customOption as $opId => $opt) { $priceOptionText = self::buildPriceOptionText($opt, $field->is_display_amounts, $valueFieldName); if (isset($opt['visibility_id'])) { @@ -381,10 +373,8 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { 'data-currency' => $currencyName, 'data-price-field-values' => json_encode($customOption), 'visibility' => $visibility_id, - ]; - if ($isQuickConfig && $field->name == 'contribution_amount') { - $extra += ['onclick' => 'clearAmountOther();']; - } + ] + $incomingExtra; + // @todo - move this back to the only calling function on Contribution_Form_Main.php if ($field->name == 'membership_amount') { $extra += [ 'onclick' => "return showHideAutoRenew({$opt['membership_type_id']});", @@ -393,12 +383,13 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { $qf->assign('membershipFieldID', $field->id); } - $choice[$opt['id']] = $priceOptionText['label']; + $choice[$opt['id']] = CRM_Utils_String::purifyHTML($priceOptionText['label']); $choiceAttrs[$opt['id']] = $extra; if ($is_pay_later) { $qf->add('text', 'txt-' . $elementName, $label, ['size' => '4']); } } + // @todo - move this back to the only calling function on Contribution_Form_Main.php if (!empty($qf->_membershipBlock) && $field->name == 'contribution_amount') { $choice['-1'] = ts('No thank you'); $choiceAttrs['-1'] = [ @@ -435,6 +426,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { } // make contribution field required for quick config when membership block is enabled + // @todo - move this back to the only calling function on Contribution_Form_Main.php if (($field->name == 'membership_amount' || $field->name == 'contribution_amount') && !empty($qf->_membershipBlock) && !$field->is_required ) { @@ -528,6 +520,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { } break; } + // @todo - move this action back to the calling function if (isset($qf->_online) && $qf->_online) { $element->freeze(); } @@ -737,11 +730,11 @@ WHERE id IN (" . implode(',', array_keys($priceFields)) . ')'; } } - list($componentName) = explode(':', $fields['_qf_default']); + [$componentName] = explode(':', $fields['_qf_default']); // now we have all selected amount in hand. $totalAmount = array_sum($selectedAmounts); // The form offers a field to enter the amount paid. This may differ from the amount that is due to complete the purchase - $totalPaymentAmountEnteredOnForm = CRM_Utils_Array::value('total_amount', $fields); + $totalPaymentAmountEnteredOnForm = $fields['total_amount'] ?? NULL; if ($totalAmount < 0) { $error['_qf_default'] = ts('%1 amount can not be less than zero. Please select the options accordingly.', [1 => $componentName]); } @@ -778,12 +771,12 @@ WHERE id IN (" . implode(',', array_keys($priceFields)) . ')'; */ public static function buildPriceOptionText($opt, $isDisplayAmounts, $valueFieldName) { $preHelpText = $postHelpText = ''; - $optionLabel = !empty($opt['label']) ? '<span class="crm-price-amount-label">' . $opt['label'] . '</span>' : ''; - if (!empty($opt['help_pre'])) { - $preHelpText = '<span class="crm-price-amount-help-pre description">' . $opt['help_pre'] . '</span><span class="crm-price-amount-help-pre-separator">: </span>'; + $optionLabel = !empty($opt['label']) ? '<span class="crm-price-amount-label">' . CRM_Utils_String::purifyHTML($opt['label']) . '</span>' : ''; + if (CRM_Utils_String::purifyHTML($opt['help_pre'] ?? '')) { + $preHelpText = '<span class="crm-price-amount-help-pre description">' . CRM_Utils_String::purifyHTML($opt['help_pre']) . '</span><span class="crm-price-amount-help-pre-separator">: </span>'; } - if (!empty($opt['help_post'])) { - $postHelpText = '<span class="crm-price-amount-help-post-separator">: </span><span class="crm-price-amount-help-post description">' . $opt['help_post'] . '</span>'; + if (CRM_Utils_String::purifyHTML($opt['help_post'] ?? '')) { + $postHelpText = '<span class="crm-price-amount-help-post-separator">: </span><span class="crm-price-amount-help-post description">' . CRM_Utils_String::purifyHTML($opt['help_post']) . '</span>'; } $invoicing = Civi::settings()->get('invoicing'); diff --git a/civicrm/CRM/Price/BAO/PriceSet.php b/civicrm/CRM/Price/BAO/PriceSet.php index 874fcd208547351c79f571fa97f20217e8291fcf..566ef3287a51da5bb93f2c9a18fd5a6c8754dca3 100644 --- a/civicrm/CRM/Price/BAO/PriceSet.php +++ b/civicrm/CRM/Price/BAO/PriceSet.php @@ -15,6 +15,10 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\Api4\PriceField; +use Civi\Api4\PriceFieldValue; +use Civi\Api4\PriceSet; + /** * Business object for managing price sets. * @@ -449,7 +453,7 @@ AND ( expire_on IS NULL OR expire_on >= {$currentTime} ) $visibility = CRM_Core_PseudoConstant::visibility('name'); while ($dao->fetch()) { - $fieldID = $dao->id; + $fieldID = (int) $dao->id; $setTree[$setID]['fields'][$fieldID] = []; $setTree[$setID]['fields'][$fieldID]['id'] = $fieldID; @@ -459,7 +463,7 @@ AND ( expire_on IS NULL OR expire_on >= {$currentTime} ) continue; } - if ($field == 'visibility_id') { + if ($field === 'visibility_id') { $setTree[$setID]['fields'][$fieldID]['visibility'] = $visibility[$dao->$field]; } $setTree[$setID]['fields'][$fieldID][$field] = $dao->$field; @@ -475,11 +479,11 @@ WHERE id = %1"; $dao = CRM_Core_DAO::executeQuery($sql, $params); if ($dao->fetch()) { $setTree[$setID]['extends'] = $dao->extends; - $setTree[$setID]['financial_type_id'] = $dao->financial_type_id; + $setTree[$setID]['financial_type_id'] = (int) $dao->financial_type_id; $setTree[$setID]['help_pre'] = $dao->help_pre; $setTree[$setID]['help_post'] = $dao->help_post; - $setTree[$setID]['is_quick_config'] = $dao->is_quick_config; - $setTree[$setID]['min_amount'] = $dao->min_amount; + $setTree[$setID]['is_quick_config'] = (bool) $dao->is_quick_config; + $setTree[$setID]['min_amount'] = (float) $dao->min_amount; } return $setTree; } @@ -595,7 +599,7 @@ WHERE id = %1"; if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $count = CRM_Utils_Array::value('count', $option, 0); + $count = $option['count'] ?? 0; $optionsCountDetails['fields'][$field['id']]['options'][$option['id']] = $count; } } @@ -610,7 +614,7 @@ WHERE id = %1"; if (!empty($form->_priceSet['fields'])) { foreach ($form->_priceSet['fields'] as $field) { foreach ($field['options'] as $option) { - $maxVal = CRM_Utils_Array::value('max_value', $option, 0); + $maxVal = $option['max_value'] ?? 0; $optionsMaxValueDetails['fields'][$field['id']]['options'][$option['id']] = $maxVal; $optionsMaxValueTotal += $maxVal; } @@ -757,30 +761,57 @@ WHERE id = %1"; } /** - * Wrapper for getSetDetail with caching. + * Get PriceSet + Fields + FieldValues nested, with caching. + * + * This gets the same values as getSet but uses apiv4 for more + * predictability & better variable typing. * * We seem to be passing this array around in a painful way - presumably to avoid the hit * of loading it - so lets make it callable with caching. * - * Why not just add caching to the other function? We could do - it just seemed a bit unclear the best caching pattern - * & the function was already pretty fugly. Also, I feel like we need to migrate the interaction with price-sets into - * a more granular interaction - ie. retrieve specific data using specific functions on this class & have the form - * think less about the price sets. - * * @param int $priceSetID * * @return array + * + * @noinspection PhpUnhandledExceptionInspection */ - public static function getCachedPriceSetDetail($priceSetID) { + public static function getCachedPriceSetDetail(int $priceSetID): array { $cacheKey = __CLASS__ . __FUNCTION__ . '_' . $priceSetID; $cache = CRM_Utils_Cache::singleton(); - $values = $cache->get($cacheKey); - if (empty($values)) { - $data = self::getSetDetail($priceSetID); - $values = $data[$priceSetID]; - $cache->set($cacheKey, $values); + $data = $cache->get($cacheKey); + if (empty($data)) { + $data = PriceSet::get(FALSE) + ->addWhere('id', '=', $priceSetID) + ->addSelect('*', 'visibility_id:name', 'extends:name') + ->execute()->first(); + $data['fields'] = (array) PriceField::get(FALSE) + ->addWhere('price_set_id', '=', $priceSetID) + ->addSelect('*', 'visibility_id:name') + ->execute()->indexBy('id'); + foreach ($data['fields'] as &$field) { + $field['options'] = []; + // Add in visibility because Smarty templates expect it and it is hard to adjust them to colon format. + $field['visibility'] = $field['visibility_id:name']; + } + $select = ['*', 'visibility_id:name']; + if (CRM_Core_Component::isEnabled('CiviMember')) { + $select[] = 'membership_type_id.name'; + } + $options = PriceFieldValue::get(FALSE) + ->addWhere('price_field_id', 'IN', array_keys($data['fields'])) + ->setSelect($select) + ->execute(); + $taxRates = CRM_Core_PseudoConstant::getTaxRates(); + foreach ($options as $option) { + // Add in visibility because Smarty templates expect it and it is hard to adjust them to colon format. + $option['visibility'] = $option['visibility_id:name']; + $option['tax_rate'] = (float) ($taxRates[$option['financial_type_id']] ?? 0); + $option['tax_amount'] = (float) ($option['tax_rate'] ? CRM_Contribute_BAO_Contribution_Utils::calculateTaxAmount($option['amount'], $option['tax_rate'])['tax_amount'] : 0); + $data['fields'][$option['price_field_id']]['options'][$option['id']] = $option; + } + $cache->set($cacheKey, $data); } - return $values; + return $data; } /** @@ -791,7 +822,8 @@ WHERE id = %1"; * @param bool $validFieldsOnly * * @return void - * @throws \CRM_Core_Exception + * + * @deprecated since 5.68. Will be removed around 5.80. */ public static function buildPriceSet(&$form, $component = NULL, $validFieldsOnly = TRUE) { $priceSetId = $form->get('priceSetId'); @@ -840,22 +872,53 @@ WHERE id = %1"; // Call the buildAmount hook. CRM_Utils_Hook::buildAmount($component ?? 'contribution', $form, $feeBlock); - self::addPriceFieldsToForm($form, $feeBlock, $validFieldsOnly, $className, $validPriceFieldIds); - } + $hideAdminValues = !CRM_Core_Permission::check('edit contributions'); + // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions + $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); + $checklifetime = FALSE; + foreach ($feeBlock as $id => $field) { + if (($field['visibility'] ?? NULL) == 'public' || + (($field['visibility'] ?? NULL) == 'admin' && $adminFieldVisible == TRUE) || + !$validFieldsOnly + ) { + $options = $field['options'] ?? NULL; + if ($className == 'CRM_Contribute_Form_Contribution_Main' && $component = 'membership') { + $contactId = $form->getVar('_membershipContactID'); + if ($contactId && $options) { + $contactsLifetimeMemberships = CRM_Member_BAO_Membership::getAllContactMembership($contactId, FALSE, TRUE); + $contactsLifetimeMembershipTypes = array_column($contactsLifetimeMemberships, 'membership_type_id'); + $memTypeIdsInPriceField = array_column($options, 'membership_type_id'); + $isCurrentMember = (bool) array_intersect($memTypeIdsInPriceField, $contactsLifetimeMembershipTypes); + $checklifetime = $checklifetime ?: $isCurrentMember; + } + } + + $formClasses = ['CRM_Contribute_Form_Contribution', 'CRM_Member_Form_Membership']; + + if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { + continue; + } + elseif ($hideAdminValues && !in_array($className, $formClasses)) { + foreach ($options as $key => $currentOption) { + if ($currentOption['visibility_id'] == CRM_Price_BAO_PriceField::getVisibilityOptionID('admin')) { + unset($options[$key]); + } + } + } + if (!empty($options)) { + CRM_Price_BAO_PriceField::addQuickFormElement($form, + 'price_' . $field['id'], + $field['id'], + FALSE, + $field['is_required'] ?? FALSE, + NULL, + $options + ); + } + } + } + $form->assign('ispricelifetime', $checklifetime); - /** - * Check for lifetime membership types this contact has that are in this price field. - * - * @param array $options - * @param int $contactId - * - * @return bool - */ - private static function checkCurrentMembership(array $options, int $contactId) : bool { - $contactsLifetimeMemberships = CRM_Member_BAO_Membership::getAllContactMembership($contactId, FALSE, TRUE); - $contactsLifetimeMembershipTypes = array_column($contactsLifetimeMemberships, 'membership_type_id'); - $memTypeIdsInPriceField = array_column($options, 'membership_type_id'); - return (bool) array_intersect($memTypeIdsInPriceField, $contactsLifetimeMembershipTypes); } /** @@ -1579,7 +1642,7 @@ WHERE ct.id = cp.financial_type_id AND $amount_override = NULL; if ($priceSetID && count(self::filterPriceFieldsFromParams($priceSetID, $params)) === 1) { - $amount_override = CRM_Utils_Array::value('total_amount', $params); + $amount_override = $params['total_amount'] ?? NULL; } CRM_Price_BAO_LineItem::format($id, $params, $field, $lineItem, $amount_override); if (!empty($field['options'][$optionValueId]['tax_rate'])) { @@ -1613,60 +1676,6 @@ WHERE ct.id = cp.financial_type_id AND return [$params, $lineItem]; } - /** - * Add the relevant price fields to the form. - * - * @param \CRM_Core_Form $form - * @param array $feeBlock - * @param bool $validFieldsOnly - * @param string $className - * @param array $validPriceFieldIds - */ - protected static function addPriceFieldsToForm(CRM_Core_Form $form, $feeBlock, bool $validFieldsOnly, string $className, array $validPriceFieldIds) { - $hideAdminValues = !CRM_Core_Permission::check('edit contributions'); - // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions - $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); - $checklifetime = FALSE; - foreach ($feeBlock as $id => $field) { - if (($field['visibility'] ?? NULL) == 'public' || - (($field['visibility'] ?? NULL) == 'admin' && $adminFieldVisible == TRUE) || - !$validFieldsOnly - ) { - $options = $field['options'] ?? NULL; - if ($className == 'CRM_Contribute_Form_Contribution_Main' && $component = 'membership') { - $contactId = $form->getVar('_membershipContactID'); - if ($contactId && $options) { - $checklifetime = $checklifetime ?: self::checkCurrentMembership($options, $contactId); - } - } - - $formClasses = ['CRM_Contribute_Form_Contribution', 'CRM_Member_Form_Membership']; - - if (!is_array($options) || !in_array($id, $validPriceFieldIds)) { - continue; - } - elseif ($hideAdminValues && !in_array($className, $formClasses)) { - foreach ($options as $key => $currentOption) { - if ($currentOption['visibility_id'] == CRM_Price_BAO_PriceField::getVisibilityOptionID('admin')) { - unset($options[$key]); - } - } - } - if (!empty($options)) { - CRM_Price_BAO_PriceField::addQuickFormElement($form, - 'price_' . $field['id'], - $field['id'], - FALSE, - CRM_Utils_Array::value('is_required', $field, FALSE), - NULL, - $options - ); - } - } - } - $form->assign('ispricelifetime', $checklifetime); - } - /** * Pseudoconstant options for the `extends` field * diff --git a/civicrm/CRM/Price/Form/Field.php b/civicrm/CRM/Price/Form/Field.php index 3f2b2bd6a7474ffc4fc94d5846b9c7435e986faf..5496fdabd089e17281e8b2a09b38590a61dbcafb 100644 --- a/civicrm/CRM/Price/Form/Field.php +++ b/civicrm/CRM/Price/Form/Field.php @@ -666,12 +666,12 @@ class CRM_Price_Form_Field extends CRM_Core_Form { $params['option_amount'][$key] = CRM_Utils_Rule::cleanMoney($amount); } - $params['is_display_amounts'] = CRM_Utils_Array::value('is_display_amounts', $params, FALSE); - $params['is_required'] = CRM_Utils_Array::value('is_required', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['financial_type_id'] = CRM_Utils_Array::value('financial_type_id', $params, FALSE); - $params['visibility_id'] = CRM_Utils_Array::value('visibility_id', $params, FALSE); - $params['count'] = CRM_Utils_Array::value('count', $params, FALSE); + $params['is_display_amounts'] = $params['is_display_amounts'] ?? FALSE; + $params['is_required'] = $params['is_required'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['financial_type_id'] = $params['financial_type_id'] ?? FALSE; + $params['visibility_id'] = $params['visibility_id'] ?? FALSE; + $params['count'] = $params['count'] ?? FALSE; // need the FKEY - price set id $params['price_set_id'] = $this->_sid; @@ -689,7 +689,7 @@ class CRM_Price_Form_Field extends CRM_Core_Form { if (isset($params['option_name'])) { $params['option_value'] = $params['option_name']; } - $params['is_enter_qty'] = CRM_Utils_Array::value('is_enter_qty', $params, FALSE); + $params['is_enter_qty'] = $params['is_enter_qty'] ?? FALSE; if ($params['html_type'] === 'Text') { // if html type is Text, force is_enter_qty on diff --git a/civicrm/CRM/Price/Form/Option.php b/civicrm/CRM/Price/Form/Option.php index 94e4f0d9a8f5fb8d3a8d776109056960a0177148..3aeecdc00f4c267937560c787b254c7b1ffb3f60 100644 --- a/civicrm/CRM/Price/Form/Option.php +++ b/civicrm/CRM/Price/Form/Option.php @@ -328,9 +328,9 @@ class CRM_Price_Form_Option extends CRM_Core_Form { $params[$field] = CRM_Utils_Rule::cleanMoney(trim($params[$field])); } $params['price_field_id'] = $this->_fid; - $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['visibility_id'] = CRM_Utils_Array::value('visibility_id', $params, FALSE); + $params['is_default'] = $params['is_default'] ?? FALSE; + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['visibility_id'] = $params['visibility_id'] ?? FALSE; $ids = []; if ($this->_oid) { $params['id'] = $this->_oid; diff --git a/civicrm/CRM/Price/Form/Set.php b/civicrm/CRM/Price/Form/Set.php index 5abbc00ca0277938e6842c32043bc194c0a97b95..c9e630058ac469cd0231282dcc8c5fb5ae875b72 100644 --- a/civicrm/CRM/Price/Form/Set.php +++ b/civicrm/CRM/Price/Form/Set.php @@ -243,8 +243,8 @@ class CRM_Price_Form_Set extends CRM_Core_Form { // get the submitted form values. $params = $this->controller->exportValues('Set'); $nameLength = CRM_Core_DAO::getAttribute('CRM_Price_DAO_PriceSet', 'name'); - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['financial_type_id'] = CRM_Utils_Array::value('financial_type_id', $params, FALSE); + $params['is_active'] = $params['is_active'] ?? FALSE; + $params['financial_type_id'] = $params['financial_type_id'] ?? FALSE; $compIds = []; $extends = $params['extends'] ?? NULL; diff --git a/civicrm/CRM/Price/Page/Option.php b/civicrm/CRM/Price/Page/Option.php index c2a6ad776374624030ad9e515b660e9452fb12e7..b07bf8ccb876d3fc6df558c7a359b56a9e5c0391 100644 --- a/civicrm/CRM/Price/Page/Option.php +++ b/civicrm/CRM/Price/Page/Option.php @@ -110,6 +110,7 @@ class CRM_Price_Page_Option extends CRM_Core_Page { * @return void */ public function browse(): void { + $this->assign('usedBy', NULL); $priceOptions = civicrm_api3('PriceFieldValue', 'get', [ 'price_field_id' => $this->_fid, // Explicitly do not check permissions so we are not @@ -162,6 +163,8 @@ class CRM_Price_Page_Option extends CRM_Core_Page { } } $customOption[$id]['order'] = $customOption[$id]['weight']; + $customOption[$id]['help_pre'] = $customOption[$id]['help_pre'] ?? NULL; + $customOption[$id]['help_post'] = $customOption[$id]['help_post'] ?? NULL; $customOption[$id]['action'] = CRM_Core_Action::formLink(self::actionLinks(), $action, [ 'oid' => $id, @@ -210,6 +213,7 @@ class CRM_Price_Page_Option extends CRM_Core_Page { $usedBy = CRM_Price_BAO_PriceSet::getUsedBy($sid); } + $this->assign('usedBy', $usedBy ?? NULL); // set the userContext stack $session = CRM_Core_Session::singleton(); @@ -229,7 +233,6 @@ class CRM_Price_Page_Option extends CRM_Core_Page { $url ); $this->assign('usedPriceSetTitle', CRM_Price_BAO_PriceFieldValue::getOptionLabel($oid)); - $this->assign('usedBy', $usedBy); $comps = [ 'Event' => 'civicrm_event', 'Contribution' => 'civicrm_contribution_page', diff --git a/civicrm/CRM/Profile/Form.php b/civicrm/CRM/Profile/Form.php index 80605866ecbc072de78080edf25f1a66c51df704..e20bd8d40b92fa9176b165637f42cc94730c70ea 100644 --- a/civicrm/CRM/Profile/Form.php +++ b/civicrm/CRM/Profile/Form.php @@ -889,13 +889,10 @@ class CRM_Profile_Form extends CRM_Core_Form { $this->setDefaultsValues(); $action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, NULL); - if ($this->_mode == self::MODE_CREATE || $this->_mode == self::MODE_EDIT) { CRM_Core_BAO_CMSUser::buildForm($this, $this->_gid, $emailPresent, $action); } - else { - $this->assign('showCMS', FALSE); - } + $this->assign('showCMS', FALSE); $this->assign('groupId', $this->_gid); diff --git a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php index 00e507f139cd5e7a880c449462d717071944ede0..0a2454c1c66df1684241ccb8cb09c4a2e4b4b0d9 100644 --- a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php +++ b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php @@ -228,7 +228,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { if ($returnValues['data_type'] == 'Date') { $dateFields[$fieldIDs[$key]] = 1; $actualPHPFormats = CRM_Utils_Date::datePluginToPHPFormats(); - $dateFormat = (array) CRM_Utils_Array::value($returnValues['date_format'], $actualPHPFormats); + $dateFormat = (array) ($actualPHPFormats[$returnValues['date_format']] ?? []); $timeFormat = $returnValues['time_format'] ?? NULL; } diff --git a/civicrm/CRM/Queue/Runner.php b/civicrm/CRM/Queue/Runner.php index f89e319127774cdd9a42c54b3e0ce328aafbf827..2be2ceed648f9aa4625406511acf2ed1f10a5e96 100644 --- a/civicrm/CRM/Queue/Runner.php +++ b/civicrm/CRM/Queue/Runner.php @@ -119,7 +119,7 @@ class CRM_Queue_Runner { $this->title = CRM_Utils_Array::value('title', $runnerSpec, ts('Queue Runner')); $this->queue = $runnerSpec['queue']; $this->errorMode = CRM_Utils_Array::value('errorMode', $runnerSpec, $this->pickErrorMode($this->queue)); - $this->isMinimal = CRM_Utils_Array::value('isMinimal', $runnerSpec, FALSE); + $this->isMinimal = $runnerSpec['isMinimal'] ?? FALSE; $this->onEnd = $runnerSpec['onEnd'] ?? NULL; $this->onEndUrl = $runnerSpec['onEndUrl'] ?? NULL; $this->pathPrefix = CRM_Utils_Array::value('pathPrefix', $runnerSpec, 'civicrm/queue'); diff --git a/civicrm/CRM/Report/BAO/ReportInstance.php b/civicrm/CRM/Report/BAO/ReportInstance.php index eb7ff8fd6fb0702511eff4561c1686318a9a3ba5..5024788f40ccfd31e18ca163e826cd0ad2d1332a 100644 --- a/civicrm/CRM/Report/BAO/ReportInstance.php +++ b/civicrm/CRM/Report/BAO/ReportInstance.php @@ -47,7 +47,7 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance implem } if (!$instanceID || !isset($params['id'])) { - $params['is_reserved'] = CRM_Utils_Array::value('is_reserved', $params, FALSE); + $params['is_reserved'] = $params['is_reserved'] ?? FALSE; $params['domain_id'] = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()); // CRM-17256 set created_id on report creation. $params['created_id'] = $params['created_id'] ?? CRM_Core_Session::getLoggedInContactID(); @@ -240,7 +240,7 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance implem // When deleting a report, also delete from navigation menu $navId = CRM_Core_DAO::getFieldValue('CRM_Report_DAO_ReportInstance', $event->id, 'navigation_id'); if ($navId) { - CRM_Core_BAO_Navigation::processDelete($navId); + CRM_Core_BAO_Navigation::deleteRecord(['id' => $navId]); CRM_Core_BAO_Navigation::resetNavigation(); } } diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php index 29f0a4dad8972f178f98c4c2cb0998fe0da5d76c..2c2605ce4f4d7741ebe2cbde5db3981ff67d194c 100644 --- a/civicrm/CRM/Report/Form.php +++ b/civicrm/CRM/Report/Form.php @@ -1084,7 +1084,7 @@ class CRM_Report_Form extends CRM_Core_Form { $order_by = [ 'column' => $fieldName, 'order' => CRM_Utils_Array::value('default_order', $field, 'ASC'), - 'section' => CRM_Utils_Array::value('default_is_section', $field, 0), + 'section' => $field['default_is_section'] ?? 0, ]; if (!empty($field['default_weight'])) { @@ -3531,8 +3531,9 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND $val[$key] = $options[$valIds]; } } - $pair[$op] = (count($val) == 1) ? (($op == 'notin' || $op == - 'mnot') ? ts('Is Not') : ts('Is')) : CRM_Utils_Array::value($op, $pair); + $pair[$op] = (count($val) == 1) ? + (($op == 'notin' || $op == 'mnot') ? ts('Is Not') : ts('Is')) : + ($pair[$op] ?? ''); $val = implode(', ', $val); $value = "{$pair[$op]} " . $val; } @@ -3540,8 +3541,7 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND isset($field['options']) && is_array($field['options']) && !empty($field['options']) ) { - $value = ($pair[$op] ?? '') . " " . - CRM_Utils_Array::value($val, $field['options'], $val); + $value = ($pair[$op] ?? '') . ' ' . ($field['options'][$val] ?? $val); } elseif ($val || $val == '0') { $value = ($pair[$op] ?? '') . " " . $val; @@ -3649,8 +3649,8 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND public function compileContent() { $templateFile = $this->getHookedTemplateFileName(); return ($this->_formValues['report_header'] ?? '') . - CRM_Core_Form::$_template->fetch($templateFile) . - CRM_Utils_Array::value('report_footer', $this->_formValues); + CRM_Core_Form::$_template->fetch($templateFile) . + ($this->_formValues['report_footer'] ?? ''); } /** @@ -5038,7 +5038,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'is_deceased' => [ 'title' => ts('Deceased'), 'type' => CRM_Utils_Type::T_BOOLEAN, - 'default' => CRM_Utils_Array::value('deceased', $defaults, 0), + 'default' => $defaults['deceased'] ?? 0, ], 'do_not_email' => [ 'title' => ts('Do not email'), diff --git a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php index 0f8cc4fc343f81284e016966f0fc2e3aa2b29050..fe56fbdc8053c3b4fe486c30fba59663bf426e74 100644 --- a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php @@ -318,9 +318,9 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } @@ -357,11 +357,11 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { public function compileContent() { $coverSheet = $this->_surveyCoverSheet() . - "<div style=\"page-break-after: always\"></div>"; + "<div style=\"page-break-after: always\"></div>"; $templateFile = $this->getHookedTemplateFileName(); return $coverSheet . CRM_Core_Form::$_template->fetch($templateFile) . - CRM_Utils_Array::value('report_footer', $this->_formValues); + ($this->_formValues['report_footer'] ?? ''); } /** diff --git a/civicrm/CRM/Report/Form/Case/Demographics.php b/civicrm/CRM/Report/Form/Case/Demographics.php index bba34f581024f23e494ae0e374ee6f1584914c9e..0ef45be865c3283da03059d5bc1d5d0bf24b864b 100644 --- a/civicrm/CRM/Report/Form/Case/Demographics.php +++ b/civicrm/CRM/Report/Form/Case/Demographics.php @@ -329,9 +329,9 @@ where (cg.extends='Contact' OR cg.extends='Individual' OR cg.extends_entity_colu else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Case/Detail.php b/civicrm/CRM/Report/Form/Case/Detail.php index f6307b1656094b14c23dcec4aa4fb3663cce7892..bc90feede728912de0798247e18b2be2c72c163a 100644 --- a/civicrm/CRM/Report/Form/Case/Detail.php +++ b/civicrm/CRM/Report/Form/Case/Detail.php @@ -449,8 +449,8 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, CRM_Utils_Array::value("{$fieldName}_max", $this->_params) ); } diff --git a/civicrm/CRM/Report/Form/Case/TimeSpent.php b/civicrm/CRM/Report/Form/Case/TimeSpent.php index 432bf8d7061b22ce96c965feebddd7196d2f4c99..fb929b7a04dae4e0c751da0cd29f6fb5e49e7935 100644 --- a/civicrm/CRM/Report/Form/Case/TimeSpent.php +++ b/civicrm/CRM/Report/Form/Case/TimeSpent.php @@ -262,9 +262,9 @@ class CRM_Report_Form_Case_TimeSpent extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php index be2d0ef48cb25612217eab553a375fd4fd58602d..d04f9b9a0887a02ee4dbe2c4e32564e689284aff 100644 --- a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php +++ b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php @@ -249,9 +249,9 @@ FROM civicrm_contact {$this->_aliases['civicrm_contact']} if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contact/Detail.php b/civicrm/CRM/Report/Form/Contact/Detail.php index ac71cce24596df9b0d59b689efd24053e652c86f..e1348f6c31ec7447a2864c49f8dcc79a6efb6502 100644 --- a/civicrm/CRM/Report/Form/Contact/Detail.php +++ b/civicrm/CRM/Report/Form/Contact/Detail.php @@ -606,9 +606,9 @@ HERESQL; $op = $this->_params["{$fieldName}_op"] ?? NULL; $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } if (!empty($clause)) { diff --git a/civicrm/CRM/Report/Form/Contact/Log.php b/civicrm/CRM/Report/Form/Contact/Log.php index 65589629d73f35b2b3fd88f731a59634ae52fc3e..652b3ad6a066c0b08731d3c853c11045d4479e9d 100644 --- a/civicrm/CRM/Report/Form/Contact/Log.php +++ b/civicrm/CRM/Report/Form/Contact/Log.php @@ -194,9 +194,9 @@ class CRM_Report_Form_Contact_Log extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contact/Relationship.php b/civicrm/CRM/Report/Form/Contact/Relationship.php index 4cc4512c716d8adc22535ca8d4d9343e7ce2de9e..62240a6010d2b8bec89e48508705408c1f0718f5 100644 --- a/civicrm/CRM/Report/Form/Contact/Relationship.php +++ b/civicrm/CRM/Report/Form/Contact/Relationship.php @@ -485,8 +485,8 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $clause = $this->whereClause($field, $op, $contactTypes, - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } @@ -496,8 +496,8 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $subTypeClause = $this->whereClause($field, $op, $contactSubTypes, - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); if ($clause) { $clause = '(' . $clause . ' OR ' . $subTypeClause . ')'; @@ -514,9 +514,9 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contribute/History.php b/civicrm/CRM/Report/Form/Contribute/History.php index fb2141aa221f8660acf2e5d85f78f3f0d427c1e9..658db8e0ffeb9cb4463173a2daaa4c325c46cba4 100644 --- a/civicrm/CRM/Report/Form/Contribute/History.php +++ b/civicrm/CRM/Report/Form/Contribute/History.php @@ -424,9 +424,9 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } @@ -661,7 +661,7 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { $total = []; $total['civicrm_contact_sort_name'] = ts('Total'); foreach ($summaryYears as $year) { - $total[$year] = CRM_Utils_Array::value($year, $primaryRow, 0); + $total[$year] = $primaryRow[$year] ?? 0; } $relatedContact = FALSE; @@ -673,7 +673,7 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { $relatedContact = TRUE; $relatedRow = $relatedContributions[$relcid]; foreach ($summaryYears as $year) { - $total[$year] += CRM_Utils_Array::value($year, $relatedRow, 0); + $total[$year] += $relatedRow[$year] ?? 0; } foreach (array_keys($this->_relationshipColumns) as $col) { diff --git a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php index 474ce68efcfb36d2f0b822967398b5aea003e316..4003b58cee10960cf0ffe74b01949a1ac8fb3d8d 100644 --- a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php +++ b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php @@ -273,9 +273,9 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contribute/Lybunt.php b/civicrm/CRM/Report/Form/Contribute/Lybunt.php index a8ec85026199c97c276b2ffb8284b20364160572..ee3c8d808ea9d82b05ed74154ea6f0a8104b5d6c 100644 --- a/civicrm/CRM/Report/Form/Contribute/Lybunt.php +++ b/civicrm/CRM/Report/Form/Contribute/Lybunt.php @@ -644,9 +644,9 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form { foreach ($rows as $key => $row) { // The final row contains the totals so we don't need to include it here. if (!empty($row['civicrm_contribution_contact_id'])) { - $display['life_time'] = CRM_Utils_Array::value('life_time', $display) + + $display['life_time'] = ($display['life_time'] ?? 0) + $row['civicrm_contribution_civicrm_life_time_total']; - $display[$previous_year] = CRM_Utils_Array::value($previous_year, $display) + $row['civicrm_contribution_last_year_total_amount']; + $display[$previous_year] = ($display[$previous_year] ?? 0) + $row['civicrm_contribution_last_year_total_amount']; } } diff --git a/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php b/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php index 109eb68841b20438a33f97d03b7c9615dad923c0..ad54d42e08cac6330998666f12a19d62d9dc533b 100644 --- a/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php +++ b/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php @@ -291,9 +291,9 @@ class CRM_Report_Form_Contribute_OrganizationSummary extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contribute/PCP.php b/civicrm/CRM/Report/Form/Contribute/PCP.php index f3effc38a379bc56b45413d059424cb31d354ea0..ba48655fa0fbe2fe207c9fd3dddfa2f023bc8afa 100644 --- a/civicrm/CRM/Report/Form/Contribute/PCP.php +++ b/civicrm/CRM/Report/Form/Contribute/PCP.php @@ -259,9 +259,9 @@ LEFT JOIN civicrm_event {$this->_aliases['civicrm_event']} if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Contribute/Repeat.php b/civicrm/CRM/Report/Form/Contribute/Repeat.php index f5e33a14ef45a01c27fcc487eb40e42ecc6c3d84..ea83b16e7da62f5ff925e3b1e04c90927554885d 100644 --- a/civicrm/CRM/Report/Form/Contribute/Repeat.php +++ b/civicrm/CRM/Report/Form/Contribute/Repeat.php @@ -407,9 +407,9 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } @@ -464,9 +464,9 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } if (!empty($clause)) { @@ -877,15 +877,15 @@ GROUP BY currency // hack to fix title list($from1, $to1) = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), - CRM_Utils_Array::value("receive_date1_from", $this->_params), - CRM_Utils_Array::value("receive_date1_to", $this->_params) + $this->_params["receive_date1_from"] ?? NULL, + $this->_params["receive_date1_to"] ?? NULL ); $from1 = CRM_Utils_Date::customFormat($from1, NULL, ['d']); $to1 = CRM_Utils_Date::customFormat($to1, NULL, ['d']); list($from2, $to2) = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), - CRM_Utils_Array::value("receive_date2_from", $this->_params), - CRM_Utils_Array::value("receive_date2_to", $this->_params) + $this->_params["receive_date2_from"] ?? NULL, + $this->_params["receive_date2_to"] ?? NULL ); $from2 = CRM_Utils_Date::customFormat($from2, NULL, ['d']); $to2 = CRM_Utils_Date::customFormat($to2, NULL, ['d']); @@ -914,13 +914,13 @@ GROUP BY currency * Rows generated by SQL, with an array for each row. */ public function alterDisplay(&$rows) { - list($from1, $to1) = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), - CRM_Utils_Array::value("receive_date1_from", $this->_params), - CRM_Utils_Array::value("receive_date1_to", $this->_params) + [$from1, $to1] = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), + $this->_params["receive_date1_from"] ?? NULL, + $this->_params["receive_date1_to"] ?? NULL ); - list($from2, $to2) = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), - CRM_Utils_Array::value("receive_date2_from", $this->_params), - CRM_Utils_Array::value("receive_date2_to", $this->_params) + [$from2, $to2] = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), + $this->_params["receive_date2_from"] ?? NULL, + $this->_params["receive_date2_to"] ?? NULL ); $dateUrl = ""; diff --git a/civicrm/CRM/Report/Form/Contribute/SoftCredit.php b/civicrm/CRM/Report/Form/Contribute/SoftCredit.php index 3def8e31888ed08f9ef95563cce7f4d5d7b8e543..7fa7cee8574d8d4e82054de9402600a4aa1aff54 100644 --- a/civicrm/CRM/Report/Form/Contribute/SoftCredit.php +++ b/civicrm/CRM/Report/Form/Contribute/SoftCredit.php @@ -308,11 +308,7 @@ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { parent::__construct(); } - public function preProcess() { - parent::preProcess(); - } - - public function select() { + public function select(): void { $select = []; $this->_columnHeaders = []; foreach ($this->_columns as $tableName => $table) { @@ -376,24 +372,12 @@ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { } } } - $this->selectClause = $select; + $this->_selectClauses = $select; $this->_select = 'SELECT ' . implode(', ', $select) . ' '; } - /** - * @param array $fields - * @param array $files - * @param CRM_Core_Form $self - * - * @return array - */ - public static function formRule($fields, $files, $self) { - $errors = $grouping = []; - return $errors; - } - - public function from() { + public function from(): void { $alias_constituent = 'constituentname'; $alias_creditor = 'contact_civireport'; $this->_from = " @@ -457,7 +441,7 @@ class CRM_Report_Form_Contribute_SoftCredit extends CRM_Report_Form { public function groupBy() { $this->_rollup = 'WITH ROLLUP'; - $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($this->selectClause, ["{$this->_aliases['civicrm_contribution_soft']}.contact_id", "constituentname.id"]); + $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($this->_selectClauses, ["{$this->_aliases['civicrm_contribution_soft']}.contact_id", "constituentname.id"]); $this->_groupBy = " GROUP BY {$this->_aliases['civicrm_contribution_soft']}.contact_id, constituentname.id {$this->_rollup}"; } diff --git a/civicrm/CRM/Report/Form/Contribute/Summary.php b/civicrm/CRM/Report/Form/Contribute/Summary.php index 474c4e21da34f4001032c7875b62be3d0dd76d43..32b51586568df681d3bd23b4c47fd09360c1e149 100644 --- a/civicrm/CRM/Report/Form/Contribute/Summary.php +++ b/civicrm/CRM/Report/Form/Contribute/Summary.php @@ -58,6 +58,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { * Class constructor. */ public function __construct() { + $batches = CRM_Batch_BAO_Batch::getBatches(); $this->_columns = [ 'civicrm_contact' => [ 'dao' => 'CRM_Contact_DAO_Contact', @@ -155,12 +156,6 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { 'default' => [1], 'type' => CRM_Utils_Type::T_INT, ], - 'contribution_page_id' => [ - 'title' => ts('Contribution Page'), - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Contribute_PseudoConstant::contributionPage(), - 'type' => CRM_Utils_Type::T_INT, - ], 'currency' => [ 'title' => ts('Currency'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, @@ -276,7 +271,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { 'batch_id' => [ 'title' => ts('Batch Title'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Batch_BAO_Batch::getBatches(), + 'options' => $batches, 'type' => CRM_Utils_Type::T_INT, ], ], @@ -342,6 +337,9 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { $this->addCampaignFields('civicrm_contribution', TRUE); + if (!$batches) { + unset($this->_columns['civicrm_batch']); + } // Add charts support $this->_charts = [ '' => ts('Tabular'), @@ -383,7 +381,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { case 'FISCALYEAR': $config = CRM_Core_Config::singleton(); $fy = $config->fiscalYearStart; - $fiscal = self::fiscalYearOffset($field['dbAlias']); + $fiscal = $this->fiscalYearOffset($field['dbAlias']); $select[] = "DATE_ADD(MAKEDATE({$fiscal}, 1), INTERVAL ({$fy['M']})-1 MONTH) AS {$tableName}_{$fieldName}_start"; $select[] = "{$fiscal} AS {$tableName}_{$fieldName}_subtotal"; @@ -750,7 +748,7 @@ class CRM_Report_Form_Contribute_Summary extends CRM_Report_Form { foreach ($currencies as $currency) { $softTotalAmount[] = CRM_Utils_Money::format($currSoftAmount[$currency], $currency) . - " (" . $currSoftCount[$currency] . ")"; + ' (' . $currSoftCount[$currency] . ')'; $softAverage[] = CRM_Utils_Money::format(($currSoftAverage[$currency] / $averageSoftCount[$currency]), $currency); } } diff --git a/civicrm/CRM/Report/Form/Contribute/Sybunt.php b/civicrm/CRM/Report/Form/Contribute/Sybunt.php index ed9a2080a1c3d93e1ca2e3aa9118cef6fe2b0a45..318e007cacc38821a3686293297e403b470576c3 100644 --- a/civicrm/CRM/Report/Form/Contribute/Sybunt.php +++ b/civicrm/CRM/Report/Form/Contribute/Sybunt.php @@ -370,9 +370,9 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); if (($fieldName == 'contribution_status_id' || $fieldName == 'financial_type_id') && !empty($clause) @@ -526,13 +526,13 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { foreach ($rows as $key => $row) { $display["upto_{$upto}"] - = CRM_Utils_Array::value("upto_{$upto}", $display) + CRM_Utils_Array::value("civicrm_upto_{$upto}", $row); + = ($display["upto_{$upto}"] ?? 0) + ($row["civicrm_upto_{$upto}"] ?? 0); $display[$previous_year] - = CRM_Utils_Array::value($previous_year, $display) + CRM_Utils_Array::value($previous_year, $row); + = ($display[$previous_year] ?? 0) + ($row[$previous_year] ?? 0); $display[$previous_two_year] - = CRM_Utils_Array::value($previous_two_year, $display) + CRM_Utils_Array::value($previous_two_year, $row); + = ($display[$previous_two_year] ?? 0) + ($row[$previous_two_year] ?? 0); $display[$previous_three_year] - = CRM_Utils_Array::value($previous_three_year, $display) + CRM_Utils_Array::value($previous_three_year, $row); + = ($display[$previous_three_year] ?? 0) + ($row[$previous_three_year] ?? 0); } $graphRows['value'] = $display; diff --git a/civicrm/CRM/Report/Form/Contribute/TopDonor.php b/civicrm/CRM/Report/Form/Contribute/TopDonor.php index 0dcff4a211c291636d66cd1ed755a46879099d58..6d2f7beb754a2cd5661c4f6aef77421246b195db 100644 --- a/civicrm/CRM/Report/Form/Contribute/TopDonor.php +++ b/civicrm/CRM/Report/Form/Contribute/TopDonor.php @@ -266,9 +266,9 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php b/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php index e42e0036fa1cbacf144d79d7dd45ff8e57cba87f..d0865aa4eae13a6611efe84ada33317534add137 100644 --- a/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php +++ b/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php @@ -218,9 +218,9 @@ class CRM_Report_Form_Event_IncomeCountSummary extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Event/Summary.php b/civicrm/CRM/Report/Form/Event/Summary.php index ca86340dcd82577f4dc0d66927b69962dfe162e2..c11d4935864f65cc6653180de516f77b17c5bdcc 100644 --- a/civicrm/CRM/Report/Form/Event/Summary.php +++ b/civicrm/CRM/Report/Form/Event/Summary.php @@ -132,50 +132,48 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form { $this->_select = 'SELECT ' . implode(', ', $select); } - public function from() { + public function from(): void { $this->_from = " FROM civicrm_event {$this->_aliases['civicrm_event']} "; } - public function where() { + public function where(): void { $clauses = []; - $this->_participantWhere = ""; - foreach ($this->_columns as $tableName => $table) { + foreach ($this->_columns as $table) { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { - $clause = NULL; if (($field['type'] ?? 0) & CRM_Utils_Type::T_DATE) { $relative = $this->_params["{$fieldName}_relative"] ?? NULL; $from = $this->_params["{$fieldName}_from"] ?? NULL; $to = $this->_params["{$fieldName}_to"] ?? NULL; if ($relative || $from || $to) { - $clause = $this->dateClause($field['name'], $relative, $from, $to, $field['type']); + $clauses[] = $this->dateClause($field['name'], $relative, $from, $to, $field['type']); } } else { $op = $this->_params["{$fieldName}_op"] ?? NULL; if ($op) { - $clause = $this->whereClause($field, + $clauses[] = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL, ); } } - if (!empty($this->_params['id_value'])) { - $idValue = is_array($this->_params['id_value']) ? implode(',', $this->_params['id_value']) : $this->_params['id_value']; - $this->_participantWhere = " AND civicrm_participant.event_id IN ( $idValue ) "; - } - - if (!empty($clause)) { - $clauses[] = $clause; - } } } } $clauses[] = "{$this->_aliases['civicrm_event']}.is_template = 0"; - $this->_where = 'WHERE ' . implode(' AND ', $clauses); + $this->_where = 'WHERE ' . implode(' AND ', array_filter($clauses)); + } + + public function getEventFilter(): string { + $eventID = array_filter((array) $this->_params['id_value']); + if (empty($eventID)) { + return ''; + } + return ' AND civicrm_participant.event_id IN ( ' . implode(',', $eventID) . ') '; } public function groupBy() { @@ -192,7 +190,7 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form { $statusType1 = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1'); $statusType2 = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 0'); - $sql = " + $sql = ' SELECT civicrm_participant.event_id AS event_id, civicrm_participant.status_id AS statusId, COUNT( civicrm_participant.id ) AS participant, @@ -202,11 +200,11 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form { FROM civicrm_participant WHERE civicrm_participant.is_test = 0 - $this->_participantWhere + ' . $this->getEventFilter() . ' GROUP BY civicrm_participant.event_id, civicrm_participant.status_id, - civicrm_participant.fee_currency"; + civicrm_participant.fee_currency'; $info = CRM_Core_DAO::executeQuery($sql); $participant_data = $participant_info = $currency = []; @@ -306,8 +304,8 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form { while ($dao->fetch()) { $row = []; foreach ($this->_columnHeaders as $key => $value) { - if (($key == 'civicrm_event_start_date') || - ($key == 'civicrm_event_end_date') + if (($key === 'civicrm_event_start_date') || + ($key === 'civicrm_event_end_date') ) { //get event start date and end date in custom datetime format $row[$key] = CRM_Utils_Date::customFormat($dao->$key); diff --git a/civicrm/CRM/Report/Form/Instance.php b/civicrm/CRM/Report/Form/Instance.php index ecd39427156b44c8c8cff1e6bcbfc89005f11ae8..fe77273cfcaec7065931086df4a87d880e13141c 100644 --- a/civicrm/CRM/Report/Form/Instance.php +++ b/civicrm/CRM/Report/Form/Instance.php @@ -318,7 +318,7 @@ class CRM_Report_Form_Instance { // Delete navigation if exists. $navId = CRM_Core_DAO::getFieldValue('CRM_Report_DAO_ReportInstance', $instanceID, 'navigation_id', 'id'); if ($navId) { - CRM_Core_BAO_Navigation::processDelete($navId); + CRM_Core_BAO_Navigation::deleteRecord(['id' => $navId]); CRM_Core_BAO_Navigation::resetNavigation(); } } diff --git a/civicrm/CRM/Report/Form/Mailing/Bounce.php b/civicrm/CRM/Report/Form/Mailing/Bounce.php index ebe9d1a846446d65e049596d47d6bebcba85113c..67bd05b1adc98a9288ac3050625db793eb141514 100644 --- a/civicrm/CRM/Report/Form/Mailing/Bounce.php +++ b/civicrm/CRM/Report/Form/Mailing/Bounce.php @@ -349,9 +349,9 @@ class CRM_Report_Form_Mailing_Bounce extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } diff --git a/civicrm/CRM/Report/Form/Mailing/Summary.php b/civicrm/CRM/Report/Form/Mailing/Summary.php index d2e4e61942a3366d63e572231aa87738a48411b5..7125920631a5ad9728175397c5c0db8cb2b77ebc 100644 --- a/civicrm/CRM/Report/Form/Mailing/Summary.php +++ b/civicrm/CRM/Report/Form/Mailing/Summary.php @@ -436,9 +436,9 @@ class CRM_Report_Form_Mailing_Summary extends CRM_Report_Form { else { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Member/Lapse.php b/civicrm/CRM/Report/Form/Member/Lapse.php index 236c4cd30987d0b2f45cc5b246bad08d375f48e9..d2443dd7e3b6f0298a73922beb55df43cc789534 100644 --- a/civicrm/CRM/Report/Form/Member/Lapse.php +++ b/civicrm/CRM/Report/Form/Member/Lapse.php @@ -232,9 +232,9 @@ class CRM_Report_Form_Member_Lapse extends CRM_Report_Form { if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Membership/Summary.php b/civicrm/CRM/Report/Form/Membership/Summary.php index 4ba26fb9d8ef54b2ca77be637ca2f55e2a30b4c1..68fc16695cf57f866d5578c00bd42f0350278192 100644 --- a/civicrm/CRM/Report/Form/Membership/Summary.php +++ b/civicrm/CRM/Report/Form/Membership/Summary.php @@ -197,9 +197,9 @@ LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/Report/Form/Walklist/Walklist.php b/civicrm/CRM/Report/Form/Walklist/Walklist.php index 14b40773b37ac299d2e9255a2952dab446189a07..de15f85827c2b894517e2cb85d090b6edba12aa9 100644 --- a/civicrm/CRM/Report/Form/Walklist/Walklist.php +++ b/civicrm/CRM/Report/Form/Walklist/Walklist.php @@ -130,9 +130,9 @@ FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom if ($op) { $clause = $this->whereClause($field, $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + $this->_params["{$fieldName}_value"] ?? NULL, + $this->_params["{$fieldName}_min"] ?? NULL, + $this->_params["{$fieldName}_max"] ?? NULL ); } } diff --git a/civicrm/CRM/SMS/Form/Provider.php b/civicrm/CRM/SMS/Form/Provider.php index 1f5e2313e1258c2527c2b47d4631020a4ff943ea..602f0e68475dfdec6e5f9553a8e6912e57406c48 100644 --- a/civicrm/CRM/SMS/Form/Provider.php +++ b/civicrm/CRM/SMS/Form/Provider.php @@ -157,8 +157,8 @@ class CRM_SMS_Form_Provider extends CRM_Core_Form { } $recData = $values = $this->controller->exportValues($this->_name); - $recData['is_active'] = CRM_Utils_Array::value('is_active', $recData, 0); - $recData['is_default'] = CRM_Utils_Array::value('is_default', $recData, 0); + $recData['is_active'] = $recData['is_active'] ?? 0; + $recData['is_default'] = $recData['is_default'] ?? 0; if ($this->_action && (CRM_Core_Action::UPDATE || CRM_Core_Action::ADD)) { if ($this->_id) { diff --git a/civicrm/CRM/Tag/Form/Edit.php b/civicrm/CRM/Tag/Form/Edit.php index 09d38c00f06f1f80a3ccaf1204742d25b3dbc186..6fa36b90f284706572ca72789ad87f855e6e0910 100644 --- a/civicrm/CRM/Tag/Form/Edit.php +++ b/civicrm/CRM/Tag/Form/Edit.php @@ -102,13 +102,9 @@ class CRM_Tag_Form_Edit extends CRM_Admin_Form { $this->applyFilter('__ALL__', 'trim'); - $this->add('text', 'name', ts('Name'), - CRM_Core_DAO::getAttribute('CRM_Core_DAO_Tag', 'name'), TRUE + $this->add('text', 'label', ts('Label'), + CRM_Core_DAO::getAttribute('CRM_Core_DAO_Tag', 'label'), TRUE ); - $this->addRule('name', ts('Name already exists in Database.'), 'objectExists', [ - 'CRM_Core_DAO_Tag', - $this->_id, - ]); $this->add('text', 'description', ts('Description'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_Tag', 'description') @@ -142,7 +138,7 @@ class CRM_Tag_Form_Edit extends CRM_Admin_Form { if (empty($this->_id) && $cloneFrom) { $params = ['id' => $cloneFrom]; CRM_Core_BAO_Tag::retrieve($params, $this->_values); - $this->_values['name'] .= ' (' . ts('copy') . ')'; + $this->_values['label'] .= ' (' . ts('copy') . ')'; if (!empty($this->_values['is_reserved']) && !CRM_Core_Permission::check('administer reserved tags')) { $this->_values['is_reserved'] = 0; } @@ -171,10 +167,10 @@ class CRM_Tag_Form_Edit extends CRM_Admin_Form { } if (count($this->_id) == 1 && $deleted == 1) { if ($tag['is_tagset']) { - CRM_Core_Session::setStatus(ts("The tag set '%1' has been deleted.", [1 => $tag['name']]), ts('Deleted'), 'success'); + CRM_Core_Session::setStatus(ts("The tag set '%1' has been deleted.", [1 => $tag['label']]), ts('Deleted'), 'success'); } else { - CRM_Core_Session::setStatus(ts("The tag '%1' has been deleted.", [1 => $tag['name']]), ts('Deleted'), 'success'); + CRM_Core_Session::setStatus(ts("The tag '%1' has been deleted.", [1 => $tag['label']]), ts('Deleted'), 'success'); } } else { @@ -211,7 +207,7 @@ class CRM_Tag_Form_Edit extends CRM_Admin_Form { $params['is_selectable'] = 0; } $tag = CRM_Core_BAO_Tag::add($params); - CRM_Core_Session::setStatus(ts("The tag '%1' has been saved.", [1 => $tag->name]), ts('Saved'), 'success'); + CRM_Core_Session::setStatus(ts("The tag '%1' has been saved.", [1 => $tag->label]), ts('Saved'), 'success'); $this->ajaxResponse['tag'] = $tag->toArray(); } CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm/tag')); diff --git a/civicrm/CRM/Tag/Page/Tag.php b/civicrm/CRM/Tag/Page/Tag.php index 772439b7c4e12a90315a35586db89d86df0a836e..6d4a26c69431feb864149d282a3eccdee64098ce 100644 --- a/civicrm/CRM/Tag/Page/Tag.php +++ b/civicrm/CRM/Tag/Page/Tag.php @@ -40,7 +40,7 @@ class CRM_Tag_Page_Tag extends CRM_Core_Page { } $result = civicrm_api3('Tag', 'get', [ - 'return' => ["name", "used_for", "description", "created_id.display_name", "created_date", "is_reserved"], + 'return' => ["name", "label", "used_for", "description", "created_id.display_name", "created_date", "is_reserved"], 'is_tagset' => 1, 'options' => ['limit' => 0], ]); diff --git a/civicrm/CRM/UF/Form/Field.php b/civicrm/CRM/UF/Form/Field.php index 5e9e87a22987eac049da19865636666531c79e3c..053e61c13a26e70b620293d71cda15fe6c8e1429 100644 --- a/civicrm/CRM/UF/Form/Field.php +++ b/civicrm/CRM/UF/Form/Field.php @@ -725,11 +725,11 @@ class CRM_UF_Form_Field extends CRM_Core_Form { * list of errors to be posted back to the form */ public static function formRule($fields, $files, $self) { - $is_required = CRM_Utils_Array::value('is_required', $fields, FALSE); - $is_registration = CRM_Utils_Array::value('is_registration', $fields, FALSE); - $is_view = CRM_Utils_Array::value('is_view', $fields, FALSE); - $in_selector = CRM_Utils_Array::value('in_selector', $fields, FALSE); - $is_active = CRM_Utils_Array::value('is_active', $fields, FALSE); + $is_required = $fields['is_required'] ?? FALSE; + $is_registration = $fields['is_registration'] ?? FALSE; + $is_view = $fields['is_view'] ?? FALSE; + $in_selector = $fields['in_selector'] ?? FALSE; + $is_active = $fields['is_active'] ?? FALSE; $errors = []; if ($is_view && $is_registration) { diff --git a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php index 58e605a1e9dd1315b3f275a55614fd1985586719..22ae1f1098a7e11c4d0468b9b116f3380325ae90 100644 --- a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php +++ b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php @@ -359,6 +359,15 @@ class CRM_Upgrade_Incremental_MessageTemplates { ['name' => 'petition_sign', 'type' => 'subject'], ], ], + [ + 'version' => '5.68.alpha1', + 'upgrade_descriptor' => ts('Significant changes to the template and available variables. Text version is discontinued'), + 'templates' => [ + ['name' => 'event_offline_receipt', 'type' => 'text'], + ['name' => 'event_offline_receipt', 'type' => 'html'], + ['name' => 'event_offline_receipt', 'type' => 'subject'], + ], + ], ]; } @@ -572,7 +581,7 @@ class CRM_Upgrade_Incremental_MessageTemplates { continue; } $content = file_get_contents($filePath); - if ($content) { + if ($content !== FALSE) { CRM_Core_DAO::executeQuery( "UPDATE civicrm_msg_template SET msg_{$type} = %1 WHERE id = %2", [ 1 => [$content, 'String'], diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php index b327366a14ec8f1d2d39a6776dfad1a8942806af..07ce677392de6a3cf6f1f441b88a580787d75dc7 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php @@ -69,7 +69,7 @@ class CRM_Upgrade_Incremental_php_FiveFour extends CRM_Upgrade_Incremental_Base 'option_group_id' => 'activity_default_assignee', 'name' => $option['name'], 'label' => $option['label'], - 'is_default' => CRM_Utils_Array::value('is_default', $option, 0), + 'is_default' => $option['is_default'] ?? 0, 'is_active' => TRUE, ]); } diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyEight.php b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyEight.php new file mode 100644 index 0000000000000000000000000000000000000000..c1bedfa946adab800eb9b95d43f4aeffb8e0d640 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyEight.php @@ -0,0 +1,44 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * Upgrade logic for the 5.68.x series. + * + * Each minor version in the series is handled by either a `5.68.x.mysql.tpl` file, + * or a function in this class named `upgrade_5_68_x`. + * If only a .tpl file exists for a version, it will be run automatically. + * If the function exists, it must explicitly add the 'runSql' task if there is a corresponding .mysql.tpl. + * + * This class may also implement `setPreUpgradeMessage()` and `setPostUpgradeMessage()` functions. + */ +class CRM_Upgrade_Incremental_php_FiveSixtyEight extends CRM_Upgrade_Incremental_Base { + + /** + * Upgrade step; adds tasks including 'runSql'. + * + * @param string $rev + * The version number matching this function name + */ + public function upgrade_5_68_alpha1($rev): void { + // Add column prior to updating it via runSql + $this->addTask('Add Tag.label field', 'addColumn', 'civicrm_tag', 'label', "varchar(64) NOT NULL COMMENT 'User-facing tag name' AFTER `name`"); + $this->addTask('Update Tag.name field', 'alterColumn', 'civicrm_tag', 'name', "varchar(64) NOT NULL COMMENT 'Unique machine name'"); + $this->addTask('Update Tag.created_date field', 'alterColumn', 'civicrm_tag', 'created_date', "datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time that tag was created.'"); + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $this->addTask('Update civicrm_managed.entity_id', 'alterColumn', 'civicrm_managed', 'entity_id', "int unsigned COMMENT 'Soft foreign key to the referenced item.'"); + $this->addTask('Update civicrm_managed.module', 'alterColumn', 'civicrm_managed', 'module', "varchar(255) NOT NULL COMMENT 'Name of the module which declared this object (soft FK to civicrm_extension.full_name)'"); + $this->addTask('Update civicrm_managed.name', 'alterColumn', 'civicrm_managed', 'name', "varchar(255) NOT NULL COMMENT 'Symbolic name used by the module to identify the object'"); + $this->addTask('Update civicrm_managed.cleanup', 'alterColumn', 'civicrm_managed', 'cleanup', "varchar(16) NOT NULL DEFAULT 'always' COMMENT 'Policy on when to cleanup entity (always, never, unused)'"); + $this->addTask('Update civicrm_acl.is_active', 'alterColumn', 'civicrm_acl', 'is_active', "tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?'"); + $this->addTask('Update civicrm_dashboard_contact.is_active', 'alterColumn', 'civicrm_dashboard_contact', 'is_active', "tinyint NOT NULL DEFAULT 0 COMMENT 'Is this widget active?'"); + } + +} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..ddfb5373fbe9106f653eb32d57682e5a5a33676b --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.68.alpha1.mysql.tpl @@ -0,0 +1,11 @@ +{* file to handle db changes in 5.68.alpha1 during upgrade *} + +UPDATE `civicrm_acl` SET `is_active` = 0 WHERE `is_active` IS NULL; +UPDATE `civicrm_dashboard_contact` SET `is_active` = 0 WHERE `is_active` IS NULL; + +UPDATE `civicrm_tag` SET `label` = `name` WHERE `label` = ''; + +{* This column is now required. Delete any null values; a managed entity without a name is useless *} +DELETE FROM civicrm_managed WHERE name IS NULL; +{* This column is now required. Set to default value if null or invalid *} +UPDATE civicrm_managed SET cleanup = 'always' WHERE cleanup IS NULL OR cleanup NOT IN ('always', 'never', 'unused'); diff --git a/civicrm/CRM/Utils/Address.php b/civicrm/CRM/Utils/Address.php index 3e9b4fe0deb51fd5de1095439e1f610b00f1eab0..aa0703e518be23373d03daef1459ad3fab4510a4 100644 --- a/civicrm/CRM/Utils/Address.php +++ b/civicrm/CRM/Utils/Address.php @@ -90,11 +90,11 @@ class CRM_Utils_Address { 'contact.supplemental_address_2' => $fields['supplemental_address_2'] ?? NULL, 'contact.supplemental_address_3' => $fields['supplemental_address_3'] ?? NULL, 'contact.city' => $fields['city'] ?? NULL, - 'contact.state_province_name' => $fields['state_province_name'] ?? NULL, - 'contact.county' => $fields['county'] ?? NULL, - 'contact.state_province' => $fields['state_province'] ?? NULL, + 'contact.state_province_name' => $fields['state_province_id:label'] ?? ($fields['state_province_name'] ?? NULL), + 'contact.county' => $fields['county_id:label'] ?? ($fields['county'] ?? NULL), + 'contact.state_province' => $fields['state_province_id:label'] ?? ($fields['state_province'] ?? NULL), 'contact.postal_code' => $fullPostalCode, - 'contact.country' => $fields['country'] ?? NULL, + 'contact.country' => $fields['country_id:label'] ?? ($fields['country'] ?? NULL), 'contact.world_region' => $fields['world_region'] ?? NULL, 'contact.geo_code_1' => $fields['geo_code_1'] ?? NULL, 'contact.geo_code_2' => $fields['geo_code_2'] ?? NULL, diff --git a/civicrm/CRM/Utils/Address/BatchUpdate.php b/civicrm/CRM/Utils/Address/BatchUpdate.php index e00460b9900f3aa882f2caf5b06f79f3168abea3..044c44ceb66c0331e18563ca9f51bc64ed4f60e1 100644 --- a/civicrm/CRM/Utils/Address/BatchUpdate.php +++ b/civicrm/CRM/Utils/Address/BatchUpdate.php @@ -131,6 +131,8 @@ class CRM_Utils_Address_BatchUpdate { if ($processGeocode) { $clause[] = '( a.geo_code_1 is null OR a.geo_code_1 = 0 )'; $clause[] = '( a.geo_code_2 is null OR a.geo_code_2 = 0 )'; + // the scheduled job is ignoring trying to geocode addresses where manual_geocode is 1 + $clause[] = '( a.manual_geo_code = 0 )'; $clause[] = '( a.country_id is not null )'; } @@ -211,6 +213,11 @@ class CRM_Utils_Address_BatchUpdate { $totalGeocoded++; $addressParams = $params; } + else { + // If an address has failed in the geocoding scheduled job i.e. no lat/long is fetched, we will update the manual_geocode field to 1. + $addressParams['manual_geo_code'] = TRUE; + $addressParams['geo_code_1'] = $addressParams['geo_code_2'] = 0; + } } // parse street address diff --git a/civicrm/CRM/Utils/Array.php b/civicrm/CRM/Utils/Array.php index f1e2fd0adaed02094300e2b3eb68f8174661f717..b4aad583b6c9b158f2e23ac1b69fbf33d90c1975 100644 --- a/civicrm/CRM/Utils/Array.php +++ b/civicrm/CRM/Utils/Array.php @@ -43,18 +43,23 @@ class CRM_Utils_Array { } /** - * Returns $list[$key] if such element exists, or a default value otherwise. + * Returns $list[$key] if such element exists, or $default otherwise. * - * If $list is not actually an array at all, then the default value is - * returned. We hope to deprecate this behaviour. + * If $list is not an array or ArrayAccess object, $default is returned. * + * @deprecated + * In most cases this can be replaced with + * $list[$key] ?? $default + * with the minor difference that when $list[$key] exists and is NULL, this function will always + * return NULL. * * @param string $key * Key value to look up in the array. * @param array|ArrayAccess $list * Array from which to look up a value. * @param mixed $default - * (optional) Value to return $list[$key] does not exist. + * (optional) Value to return when $list[$key] does not exist. If $default + * is not specified, NULL is used. * * @return mixed * Can return any type, since $list might contain anything. @@ -64,11 +69,8 @@ class CRM_Utils_Array { return array_key_exists($key, $list) ? $list[$key] : $default; } if ($list instanceof ArrayAccess) { - // ArrayAccess requires offsetExists is implemented for the equivalent to array_key_exists. return $list->offsetExists($key) ? $list[$key] : $default; } - // @todo - eliminate these from core & uncomment this line. - // CRM_Core_Error::deprecatedFunctionWarning('You have passed an invalid parameter for the "list"'); return $default; } diff --git a/civicrm/CRM/Utils/Date.php b/civicrm/CRM/Utils/Date.php index dfcff429c3193ddf135128fcc9394d4fa874e725..4501e3d0e171f2ca6ca6cb3f9c35897195305572 100644 --- a/civicrm/CRM/Utils/Date.php +++ b/civicrm/CRM/Utils/Date.php @@ -280,16 +280,16 @@ class CRM_Utils_Date { * @return int */ public static function unixTime($string) { - if (empty($string)) { + if (!$string) { return 0; } $parsedDate = date_parse($string); - return mktime(CRM_Utils_Array::value('hour', $parsedDate), - CRM_Utils_Array::value('minute', $parsedDate), + return mktime($parsedDate['hour'], + $parsedDate['minute'], 59, - CRM_Utils_Array::value('month', $parsedDate), - CRM_Utils_Array::value('day', $parsedDate), - CRM_Utils_Array::value('year', $parsedDate) + $parsedDate['month'], + $parsedDate['day'], + $parsedDate['year'] ); } diff --git a/civicrm/CRM/Utils/File.php b/civicrm/CRM/Utils/File.php index 833204adbf58f0393213586c793faf63b5635213..e9d97505306ad5f482e982f6f9d176167019141b 100644 --- a/civicrm/CRM/Utils/File.php +++ b/civicrm/CRM/Utils/File.php @@ -418,22 +418,29 @@ class CRM_Utils_File { * Make a valid file name. * * @param string $name + * @param bool $unicode * * @return string */ - public static function makeFileName($name) { + public static function makeFileName($name, bool $unicode = FALSE) { $uniqID = md5(uniqid(rand(), TRUE)); $info = pathinfo($name); $basename = substr($info['basename'], 0, -(strlen($info['extension'] ?? '') + (($info['extension'] ?? '') == '' ? 0 : 1)) ); if (!self::isExtensionSafe($info['extension'] ?? '')) { + if ($unicode) { + return self::makeFilenameWithUnicode("{$basename}_" . ($info['extension'] ?? '') . "_{$uniqID}", '_', 240) . ".unknown"; + } // munge extension so it cannot have an embbeded dot in it // The maximum length of a filename for most filesystems is 255 chars. // We'll truncate at 240 to give some room for the extension. return CRM_Utils_String::munge("{$basename}_" . ($info['extension'] ?? '') . "_{$uniqID}", '_', 240) . ".unknown"; } else { + if ($unicode) { + return self::makeFilenameWithUnicode("{$basename}_{$uniqID}", '_', 240) . "." . ($info['extension'] ?? ''); + } return CRM_Utils_String::munge("{$basename}_{$uniqID}", '_', 240) . "." . ($info['extension'] ?? ''); } } diff --git a/civicrm/CRM/Utils/Hook.php b/civicrm/CRM/Utils/Hook.php index 91587f9e3a3c210cfb75898871bf6afc7e4d517c..c15b8715196af5b8afc152ff0a21fccd5baf6b40 100644 --- a/civicrm/CRM/Utils/Hook.php +++ b/civicrm/CRM/Utils/Hook.php @@ -677,7 +677,7 @@ abstract class CRM_Utils_Hook { } /** - * (Experimental) This hook is called when build the menu table. + * This hook is called when building the menu table. * * @param array $items * List of records to include in menu table. @@ -1145,6 +1145,9 @@ abstract class CRM_Utils_Hook { * - title: string * - callback: string|array, the function which starts the setup process. * The function is expected to return a 'url' for the config screen. + * - url: string (optional), a URL which starts the setup process. + * If omitted, then a default URL is generated. The effect of opening the URL is + * to invoke the `callback`. * @return mixed */ public static function mailSetupActions(&$setupActions) { @@ -1176,7 +1179,7 @@ abstract class CRM_Utils_Hook { } /** - * (Experimental) Modify the list of template-types used for CiviMail composition. + * Modify the list of template-types used for CiviMail composition. * * @param array $types * Sequentially indexed list of template types. Each type specifies: @@ -1864,10 +1867,9 @@ abstract class CRM_Utils_Hook { } /** - * (EXPERIMENTAL) Scan extensions for a list of auto-registered interfaces. + * Scan extensions for a list of auto-registered interfaces. * - * This hook is currently experimental. It is a means to implementing `mixin/scan-classes@1`. - * If there are no major difficulties circa 5.55, then it can be marked stable. + * @see mixin/scan-classes@1 * * @param string[] $classes * List of classes which may be of interest to the class-scanner. @@ -2670,7 +2672,7 @@ abstract class CRM_Utils_Hook { } /** - * EXPERIMENTAL: This hook allows one to register additional Angular modules + * Register Angular modules * * @param array $angularModules * List of modules. Each module defines: @@ -3114,7 +3116,7 @@ abstract class CRM_Utils_Hook { */ public static function queueTaskError(CRM_Queue_Queue $queue, $item, &$outcome, ?Throwable $exception) { $null = NULL; - return self::singleton()->invoke(['job', 'params'], $queue, $item, + return self::singleton()->invoke(['queue', 'item', 'outcome', 'exception'], $queue, $item, $outcome, $exception, $null, $null, 'civicrm_queueTaskError' ); diff --git a/civicrm/CRM/Utils/ICalendar.php b/civicrm/CRM/Utils/ICalendar.php index 40707d98c0e3ed6e315193df87604138f2a2215a..fddefbfec849864ad79d16806cc5ca4f27ce63d1 100644 --- a/civicrm/CRM/Utils/ICalendar.php +++ b/civicrm/CRM/Utils/ICalendar.php @@ -215,4 +215,59 @@ class CRM_Utils_ICalendar { return sprintf('%+03d%02d', $hours, $minutes); } + /** + * @param array|NULL $info + * Information of the events to create an iCal file for, as returned by + * CRM_Event_BAO_Event::getCompleteInfo(). + * + * @return string + * The rendered contents of the iCal file. + */ + public static function createCalendarFile($info) { + $template = \CRM_Core_Smarty::singleton(); + + // Decode HTML entities in relevant fields. + foreach (['title', 'description', 'event_type', 'location', 'contact_email'] as $field) { + if (isset($info[0][$field])) { + $info[0][$field] = html_entity_decode($info[0][$field], ENT_QUOTES | ENT_HTML401, 'UTF-8'); + } + } + + // Calculate timezones. + if (count($info) > 0) { + $date_min = min( + array_map(function ($event) { + return strtotime($event['start_date']); + }, $info) + ); + $date_max = max( + array_map(function ($event) { + return strtotime($event['end_date'] ?? $event['start_date']); + }, $info) + ); + $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($timezones, $date_min, $date_max)); + } + else { + $template->assign('timezones', NULL); + } + $template->assign('timezone', @date_default_timezone_get()); + + $template->assign('events', $info); + $ical_data = $template->fetch('CRM/Core/Calendar/ICal.tpl'); + $ical_data = preg_replace('/(?<!\r)\n/', "\r\n", $ical_data); + + return $ical_data; + } + + /** + * @param int|NULL $event_id + * The CiviCRM Event ID of the event to render an iCal file for. + * + * @return string + */ + public static function createCalendarFileForEvent($event_id) { + $info = \CRM_Event_BAO_Event::getCompleteInfo(NULL, NULL, $event_id, NULL, FALSE); + return self::createCalendarFile($info); + } + } diff --git a/civicrm/CRM/Utils/Mail.php b/civicrm/CRM/Utils/Mail.php index 63e14b70009e715d4b2620b1f686b821f07bd920..e58a79af8f0f92c49f4b6f85424dbe7d81be13bc 100644 --- a/civicrm/CRM/Utils/Mail.php +++ b/civicrm/CRM/Utils/Mail.php @@ -190,7 +190,7 @@ class CRM_Utils_Mail { $htmlMessage = FALSE; } $attachments = $params['attachments'] ?? NULL; - if (!empty($params['text'])) { + if (!empty($params['text']) && trim($params['text'])) { $textMessage = $params['text']; } else { @@ -276,7 +276,13 @@ class CRM_Utils_Mail { TRUE, 'base64', 'attachment', - (isset($attach['charset']) ? $attach['charset'] : '') + (isset($attach['charset']) ? $attach['charset'] : ''), + '', + '', + NULL, + NULL, + '', + 'utf-8' ); } } diff --git a/civicrm/CRM/Utils/String.php b/civicrm/CRM/Utils/String.php index a00905b2388c3496f72dd64c51a5259f958b202d..bb83724dc29441fa860701338eefe6cab75bf1d8 100644 --- a/civicrm/CRM/Utils/String.php +++ b/civicrm/CRM/Utils/String.php @@ -445,8 +445,7 @@ class CRM_Utils_String { */ public static function htmlToText($html) { $token_html = preg_replace('!\{([a-z_.]+)\}!i', 'token:{$1}', $html); - $converter = new \Html2Text\Html2Text($token_html, ['do_links' => 'table', 'width' => 75]); - $token_text = $converter->getText(); + $token_text = \Soundasleep\Html2Text::convert($token_html, ['ignore_errors' => TRUE]); $text = preg_replace('!token\:\{([a-z_.]+)\}!i', '{$1}', $token_text); return $text; } diff --git a/civicrm/CRM/Utils/System.php b/civicrm/CRM/Utils/System.php index 03c260f8cce2fe1ac96ce5fc39ddf71a98cae00a..f3359d58a0b28568095dcf308357b9590e3016c4 100644 --- a/civicrm/CRM/Utils/System.php +++ b/civicrm/CRM/Utils/System.php @@ -452,12 +452,12 @@ class CRM_Utils_System { return self::url( $p, - CRM_Utils_Array::value('q', $params), - CRM_Utils_Array::value('a', $params, FALSE), - CRM_Utils_Array::value('f', $params), - CRM_Utils_Array::value('h', $params, TRUE), - CRM_Utils_Array::value('fe', $params, FALSE), - CRM_Utils_Array::value('fb', $params, FALSE) + $params['q'] ?? NULL, + $params['a'] ?? FALSE, + $params['f'] ?? NULL, + $params['h'] ?? TRUE, + $params['fe'] ?? FALSE, + $params['fb'] ?? FALSE ); } diff --git a/civicrm/CRM/Utils/System/Joomla.php b/civicrm/CRM/Utils/System/Joomla.php index b7f92257fc680445a3b65313bfe67c66257d39fe..d61d3f4a325862544cd51bb4946ddfa5e84c3d4e 100644 --- a/civicrm/CRM/Utils/System/Joomla.php +++ b/civicrm/CRM/Utils/System/Joomla.php @@ -136,8 +136,8 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base { public function checkUserNameEmailExists(&$params, &$errors, $emailName = 'email') { $config = CRM_Core_Config::singleton(); - $name = CRM_Utils_Array::value('name', $params); - $email = CRM_Utils_Array::value('mail', $params); + $name = $params['name'] ?? NULL; + $email = $params['mail'] ?? NULL; //don't allow the special characters and min. username length is two //regex \\ to match a single backslash would become '/\\\\/' $isNotValid = (bool) preg_match('/[\<|\>|\"|\'|\%|\;|\(|\)|\&|\\\\|\/]/im', $name); diff --git a/civicrm/CRM/Utils/System/Standalone.php b/civicrm/CRM/Utils/System/Standalone.php index 92f5404f6410804a1e834f432864507695074035..1a5c7902e7464f908376acc165c3be27e3281f96 100644 --- a/civicrm/CRM/Utils/System/Standalone.php +++ b/civicrm/CRM/Utils/System/Standalone.php @@ -285,7 +285,7 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { // Q. what does this do? Why do we only include this for maintenance? if ($maintenance) { $smarty = CRM_Core_Smarty::singleton(); - echo implode('', $smarty->_tpl_vars['pageHTMLHead']); + echo implode('', $smarty->getTemplateVars('pageHTMLHead')); } // @todo Add variables from the body tag? (for Shoreditch) diff --git a/civicrm/CRM/Utils/Token.php b/civicrm/CRM/Utils/Token.php index 898f0aae13ccb93ef81d2542850088e1dc8dc8b3..b7373b897a2214099c4fc714cc5055fcdf27e2d9 100644 --- a/civicrm/CRM/Utils/Token.php +++ b/civicrm/CRM/Utils/Token.php @@ -1764,7 +1764,7 @@ class CRM_Utils_Token { '$display_name' => 'contact.display_name', ], 'contribution_online_receipt' => [ - '$contributeMode' => 'no longer available / relevant', + '$contributeMode' => ts('no longer available / relevant'), '$first_name' => 'contact.first_name', '$last_name' => 'contact.last_name', '$displayName' => 'contact.display_name', @@ -1772,19 +1772,42 @@ class CRM_Utils_Token { 'membership_offline_receipt' => [ // receipt_text_renewal appears to be long gone. 'receipt_text_renewal' => 'receipt_text', - '$isAmountZero' => 'no longer available / relevant', + '$isAmountZero' => ts('no longer available / relevant'), ], 'event_offline_receipt' => [ - '$contributeMode' => 'no longer available / relevant', - '$isAmountZero' => 'no longer available / relevant', + '$contributeMode' => ts('no longer available / relevant'), + '$isAmountZero' => ts('no longer available / relevant'), + '$dataArray' => ts('found within $participants'), + '$paidBy' => 'contribution.payment_instrument_id:label', + '$totalTaxAmount' => 'contribution.tax_amount', + '$amount' => ts('found within $participants'), + '$checkNumber' => 'contribution.check_number', + '$module' => ts('no longer available / relevant'), + '$register_date' => 'participant.register_date', + '$receive_date' => 'contribution.receive_date', + '$is_pay_later' => 'contribution.is_pay_later', + '$totalAmount' => 'contribution.total_amount', + '$location' => 'event.location', + '$isShowLocation' => 'event.is_show_location|boolean', + '$event.participant_role' => 'participant.role_id:label', + '$amount_level' => ts('found within $participants'), + 'balanceAmount' => 'contribution.balance_amount', + '$financialTypeName' => 'contribution.financial_type_id:label', + '$contributionTypeName' => 'contribution.financial_type_id:label', + '$trxn_id' => 'contribution.trxn_id', + '$participant_status_id' => 'participant.status_id', + + ], + 'event_online_receipt' => [ + '`$participant.id`' => 'participant.id', ], 'pledge_acknowledgement' => [ - '$domain' => 'no longer available / relevant', - '$contact' => 'no longer available / relevant', + '$domain' => ts('no longer available / relevant'), + '$contact' => ts('no longer available / relevant'), ], 'pledge_reminder' => [ - '$domain' => 'no longer available / relevant', - '$contact' => 'no longer available / relevant', + '$domain' => ts('no longer available / relevant'), + '$contact' => ts('no longer available / relevant'), ], ], ]; diff --git a/civicrm/CRM/Utils/Wrapper.php b/civicrm/CRM/Utils/Wrapper.php index 5efe9a89b66bff148c9c7345d620305bdb76dcf3..3638f75533c61254a7893d3d9efbb98aec702f5f 100644 --- a/civicrm/CRM/Utils/Wrapper.php +++ b/civicrm/CRM/Utils/Wrapper.php @@ -75,7 +75,7 @@ class CRM_Utils_Wrapper { $sessionVar = $params['sessionVar'] ?? NULL; $type = $params['type'] ?? NULL; $default = $params['default'] ?? NULL; - $abort = CRM_Utils_Array::value('abort', $params, FALSE); + $abort = $params['abort'] ?? FALSE; $value = NULL; $value = CRM_Utils_Request::retrieve( diff --git a/civicrm/Civi/API/Api3SelectQuery.php b/civicrm/Civi/API/Api3SelectQuery.php index 366223290e7f3c5e778a681e28d2cc150538ffd3..66c5a3fa6787ccc31f398c304ac79632c4b7cfd3 100644 --- a/civicrm/Civi/API/Api3SelectQuery.php +++ b/civicrm/Civi/API/Api3SelectQuery.php @@ -157,8 +157,8 @@ class Api3SelectQuery extends SelectQuery { } foreach ($this->apiFieldSpec as $field) { if ( - $fieldName == \CRM_Utils_Array::value('uniqueName', $field) || - array_search($fieldName, \CRM_Utils_Array::value('api.aliases', $field, [])) !== FALSE + $fieldName == ($field['uniqueName'] ?? NULL) || + array_search($fieldName, $field['api.aliases'] ?? []) !== FALSE ) { return $field; } diff --git a/civicrm/Civi/API/SelectQuery.php b/civicrm/Civi/API/SelectQuery.php index f22742e844e8c638a8dc6c837ff109a684a5c282..b384a0e625a51486afb766cfc5115df33aa9a445 100644 --- a/civicrm/Civi/API/SelectQuery.php +++ b/civicrm/Civi/API/SelectQuery.php @@ -217,7 +217,7 @@ abstract class SelectQuery { } $fieldInfo = $fkField['FKApiSpec'][$fieldName] ?? NULL; - $keyColumn = \CRM_Utils_Array::value('FKKeyColumn', $fkField, 'id'); + $keyColumn = $fkField['FKKeyColumn'] ?? 'id'; if (!$fieldInfo || !isset($fkField['FKApiSpec'][$keyColumn])) { // Join doesn't exist - might be another param with a dot in it for some reason, we'll just ignore it. return NULL; @@ -404,7 +404,7 @@ abstract class SelectQuery { $words = preg_split("/[\s]+/", $item); if ($words) { // Direction defaults to ASC unless DESC is specified - $direction = strtoupper(\CRM_Utils_Array::value(1, $words, '')) == 'DESC' ? ' DESC' : ''; + $direction = strtoupper($words[1] ?? '') === 'DESC' ? ' DESC' : ''; $field = $this->getField($words[0]); if ($field) { $this->query->orderBy(self::MAIN_TABLE_ALIAS . '.' . $field['name'] . $direction, NULL, $index); diff --git a/civicrm/Civi/API/Subscriber/ChainSubscriber.php b/civicrm/Civi/API/Subscriber/ChainSubscriber.php index 84b011eed431c3d91c6a91e06704303f300dfb13..c258c56eefdcf0347e17a988aeb34c0174af6ede 100644 --- a/civicrm/Civi/API/Subscriber/ChainSubscriber.php +++ b/civicrm/Civi/API/Subscriber/ChainSubscriber.php @@ -162,17 +162,16 @@ class ChainSubscriber implements EventSubscriberInterface { $defaultSubParams[$lowercase_entity . "_id"] = $parentAPIValues['id']; } } - // @todo remove strtolower: $subEntity is already lower case - if ($entity != 'Contact' && \CRM_Utils_Array::value(strtolower($subEntity . "_id"), $parentAPIValues)) { + if ($entity !== 'Contact' && !empty($parentAPIValues[$subEntity . '_id'])) { //e.g. if event_id is in the values returned & subentity is event //then pass in event_id as 'id' don't do this for contact as it //does some weird things like returning primary email & //thus limiting the ability to chain email //TODO - this might need the camel treatment - $defaultSubParams['id'] = $parentAPIValues[$subEntity . "_id"]; + $defaultSubParams['id'] = $parentAPIValues[$subEntity . '_id']; } - if (\CRM_Utils_Array::value('entity_table', $result['values'][$idIndex]) == $subEntity) { + if (($result['values'][$idIndex]['entity_table'] ?? NULL) == $subEntity) { $defaultSubParams['id'] = $result['values'][$idIndex]['entity_id']; } // if we are dealing with the same entity pass 'id' through diff --git a/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php b/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php index e84bbb901de6be61cee03bfc093f89ff3a4368bc..1a6a684f5654f6c4becfcfa513301bd699450700 100644 --- a/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php +++ b/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php @@ -177,7 +177,7 @@ class DynamicFKAuthorization implements EventSubscriberInterface { $this->authorizeDelegate( $apiRequest['action'], $apiRequest['params']['entity_table'], - \CRM_Utils_Array::value('entity_id', $apiRequest['params'], NULL), + $apiRequest['params']['entity_id'] ?? NULL, $apiRequest ); return; diff --git a/civicrm/Civi/API/WhitelistRule.php b/civicrm/Civi/API/WhitelistRule.php index 25d5e4f3c35882dc5b491386399f7879911cbd0d..e23ee655ce506f5e461c64b07b7fa7bf5a95c21d 100644 --- a/civicrm/Civi/API/WhitelistRule.php +++ b/civicrm/Civi/API/WhitelistRule.php @@ -181,7 +181,7 @@ class WhitelistRule { // Kind'a silly we need to (re(re))parse here for each rule; would be more // performant if pre-parsed by Request::create(). $options = _civicrm_api3_get_options_from_params($apiRequest['params'], TRUE, $apiRequest['entity'], 'get'); - $return = \CRM_Utils_Array::value('return', $options, []); + $return = $options['return'] ?? []; $activatedFields = array_merge($activatedFields, array_keys($return)); } diff --git a/civicrm/Civi/Angular/Manager.php b/civicrm/Civi/Angular/Manager.php index 1dd345782447aa2801090d6bafeb6ce4a26f9112..0478345fd90a1d7087137933ad99c197be092ba7 100644 --- a/civicrm/Civi/Angular/Manager.php +++ b/civicrm/Civi/Angular/Manager.php @@ -355,7 +355,14 @@ class Manager { } /** - * Get resources for one or more modules. + * Get resources for one or more modules, applying any changesets. + * + * NOTE: The output of this function is a little quirky; depending on the type of resource requested, + * the results will either be a non-associative array (for path and url-type resources) + * or an array indexed by moduleName (for pass-thru resources like settingsFactory, requires, permissions, bundles). + * + * Note: ChangeSets will be applied + * @see \CRM_Utils_Hook::alterAngular() * * @param string|array $moduleNames * List of module names. @@ -364,15 +371,20 @@ class Manager { * @param string $refType * Type of reference to the resource ('cacheUrl', 'rawUrl', 'path', 'settings'). * @return array - * List of URLs or paths. + * Indexed or non-associative array, depending on resource requested (see note) * @throws \CRM_Core_Exception */ public function getResources($moduleNames, $resType, $refType) { $result = []; - $moduleNames = (array) $moduleNames; - foreach ($moduleNames as $moduleName) { + // Properties that do not require interpolation - they are added to the output keyed by moduleName + $passThru = ['settings', 'settingsFactory', 'requires', 'permissions', 'bundles']; + + foreach ((array) $moduleNames as $moduleName) { $module = $this->getModule($moduleName); - if (isset($module[$resType])) { + if (isset($module[$resType]) && in_array($resType, $passThru, TRUE)) { + $result[$moduleName] = $module[$resType]; + } + elseif (isset($module[$resType])) { foreach ($module[$resType] as $file) { $refTypeSuffix = ''; if (is_string($file) && preg_match(';^(assetBuilder|ext)://;', $file)) { @@ -419,16 +431,6 @@ class Manager { $result[] = $this->res->getUrl(parse_url($file, PHP_URL_HOST), ltrim(parse_url($file, PHP_URL_PATH), '/'), TRUE); break; - case 'settings': - case 'settingsFactory': - case 'requires': - case 'permissions': - case 'bundles': - if (!empty($module[$resType])) { - $result[$moduleName] = $module[$resType]; - } - break; - default: throw new \CRM_Core_Exception("Unrecognized resource format"); } diff --git a/civicrm/Civi/Angular/Page/Modules.php b/civicrm/Civi/Angular/Page/Modules.php index 39a2e1ccfa8aba54ed83dbff832c593aa3dd970d..b26c2d54f6ffb382cb10d8f5e34766708b190520 100644 --- a/civicrm/Civi/Angular/Page/Modules.php +++ b/civicrm/Civi/Angular/Page/Modules.php @@ -2,6 +2,8 @@ namespace Civi\Angular\Page; +use Civi\Angular\Manager; + /** * This page aggregates data from Angular modules. * @@ -148,18 +150,17 @@ class Modules extends \CRM_Core_Page { * @param \Civi\Angular\Manager $angular * @return array */ - public function getMetadata($moduleNames, $angular) { - $modules = $angular->getModules(); + public function getMetadata(array $moduleNames, Manager $angular): array { $result = []; foreach ($moduleNames as $moduleName) { - if (isset($modules[$moduleName])) { - $result[$moduleName] = []; - $result[$moduleName]['domain'] = $modules[$moduleName]['ext']; - $result[$moduleName]['js'] = $angular->getResources($moduleName, 'js', 'rawUrl'); - $result[$moduleName]['css'] = $angular->getResources($moduleName, 'css', 'rawUrl'); - $result[$moduleName]['partials'] = $angular->getPartials($moduleName); - $result[$moduleName]['strings'] = $angular->getTranslatedStrings($moduleName); - } + $module = $angular->getModule($moduleName); + $result[$moduleName] = [ + 'domain' => $module['ext'], + 'js' => $angular->getResources($moduleName, 'js', 'rawUrl'), + 'css' => $angular->getResources($moduleName, 'css', 'rawUrl'), + 'partials' => $angular->getPartials($moduleName), + 'strings' => $angular->getTranslatedStrings($moduleName), + ]; } return $result; } diff --git a/civicrm/Civi/Api4/Entity.php b/civicrm/Civi/Api4/Entity.php index 0ceac96d6bb70c23d5b25da671209dce7dcabf58..a595df8575dd429d0b9a61d3ae5627e751905261 100644 --- a/civicrm/Civi/Api4/Entity.php +++ b/civicrm/Civi/Api4/Entity.php @@ -133,6 +133,11 @@ class Entity extends Generic\AbstractEntity { 'data_type' => 'Array', 'description' => 'When joining entities in the UI, which fields should be presented by default in the ON clause', ], + [ + 'name' => 'match_fields', + 'data_type' => 'Array', + 'description' => 'Combination of fields used for unique matching', + ], [ 'name' => 'group_weights_by', 'data_type' => 'Array', diff --git a/civicrm/Civi/Api4/Generic/AbstractEntity.php b/civicrm/Civi/Api4/Generic/AbstractEntity.php index b1373bd813fea9e866cbd01f130708b9fddcec13..432ab7b8d434cc27ad245f06b0ffbed0c3fec482 100644 --- a/civicrm/Civi/Api4/Generic/AbstractEntity.php +++ b/civicrm/Civi/Api4/Generic/AbstractEntity.php @@ -154,6 +154,15 @@ abstract class AbstractEntity { $info['dao'] = $dao; $info['table_name'] = $dao::$_tableName; $info['icon_field'] = (array) ($dao::fields()['icon']['name'] ?? NULL); + if (method_exists($dao, 'indices')) { + foreach (\CRM_Utils_Array::findAll($dao::indices(FALSE), ['unique' => TRUE, 'localizable' => FALSE]) as $index) { + foreach ($index['field'] as $field) { + // Trim `field(length)` to just `field` + [$field] = explode('(', $field); + $info['match_fields'][] = $field; + } + } + } } foreach (ReflectionUtils::getTraits(static::class) as $trait) { $info['type'][] = CoreUtil::stripNamespace($trait); diff --git a/civicrm/Civi/Api4/Generic/AutocompleteAction.php b/civicrm/Civi/Api4/Generic/AutocompleteAction.php index d50c62f9f363b48b87e7e5d88d56efcb4ef0d77a..183043e3a851a063f218e0f6bc2f6d627c8896fd 100644 --- a/civicrm/Civi/Api4/Generic/AutocompleteAction.php +++ b/civicrm/Civi/Api4/Generic/AutocompleteAction.php @@ -285,20 +285,8 @@ class AutocompleteAction extends AbstractAction { */ private function getKeyField() { $entityName = $this->savedSearch['api_entity']; - // Temp hack for 5.67. Fixed in 5.68. See https://github.com/civicrm/civicrm-core/pull/28283 - if ($entityName === 'OptionValue' && $this->key === 'value') { - return 'value'; - } - if ($this->key) { - /** @var \CRM_Core_DAO $dao */ - $dao = CoreUtil::getInfoItem($entityName, 'dao'); - if ($dao && method_exists($dao, 'indices')) { - foreach ($dao::indices(FALSE) as $index) { - if (!empty($index['unique']) && in_array($this->key, $index['field'], TRUE)) { - return $this->key; - } - } - } + if ($this->key && in_array($this->key, CoreUtil::getInfoItem($entityName, 'match_fields') ?? [], TRUE)) { + return $this->key; } return $this->display['settings']['keyField'] ?? CoreUtil::getIdFieldName($entityName); } diff --git a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php index 895701f2adb7017c427028e91eaebecf13db361a..07ba072000fb13ce67b624b3e79b56bb55178db1 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php @@ -138,7 +138,7 @@ class BasicGetFieldsAction extends BasicGetAction { if (array_key_exists('label', $fieldDefaults)) { $field['label'] = $field['label'] ?? $field['title'] ?? $field['name']; } - if (!empty($field['options']) && is_array($field['options']) && empty($field['suffixes']) && array_key_exists('suffixes', $field)) { + if (isset($field['options']) && is_array($field['options']) && empty($field['suffixes']) && array_key_exists('suffixes', $field)) { $this->setFieldSuffixes($field); } if (isset($defaults['options'])) { @@ -156,13 +156,14 @@ class BasicGetFieldsAction extends BasicGetAction { * @param array $field */ private function formatOptionList(&$field) { - if (empty($field['options'])) { + $optionsExist = isset($field['options']) && is_array($field['options']); + if (!isset($field['options'])) { $field['options'] = !empty($field['pseudoconstant']); } if (!empty($field['pseudoconstant']['optionGroupName'])) { $field['suffixes'] = CoreUtil::getOptionValueFields($field['pseudoconstant']['optionGroupName']); } - if (!$this->loadOptions || !$field['options']) { + if (!$this->loadOptions || (!$optionsExist && empty($field['pseudoconstant']))) { $field['options'] = (bool) $field['options']; return; } @@ -324,6 +325,7 @@ class BasicGetFieldsAction extends BasicGetAction { 'Email' => ts('Email'), 'EntityRef' => ts('Autocomplete Entity'), 'File' => ts('File'), + 'Hidden' => ts('Hidden'), 'Location' => ts('Address Location'), 'Number' => ts('Number'), 'Radio' => ts('Radio Buttons'), diff --git a/civicrm/Civi/Api4/Generic/ExportAction.php b/civicrm/Civi/Api4/Generic/ExportAction.php index 13b660ec7792991ac03fb6f27f54f5dc54206eae..4561afa8607682a6bae5dd9298deff832dad7608 100644 --- a/civicrm/Civi/Api4/Generic/ExportAction.php +++ b/civicrm/Civi/Api4/Generic/ExportAction.php @@ -24,7 +24,7 @@ use Civi\Api4\Utils\CoreUtil; * @method $this setId(int $id) * @method int getId() * @method $this setMatch(array $match) Specify fields to match for update. - * @method bool getMatch() + * @method array getMatch() * @method $this setCleanup(string $cleanup) * @method string getCleanup() * @method $this setUpdate(string $update) @@ -40,17 +40,14 @@ class ExportAction extends AbstractAction { protected $id; /** - * Specify fields to match when managed records are being reconciled. + * Fields to match when managed records are being reconciled. * - * To prevent "DB Error: Already Exists" errors, it's generally a good idea to set this - * value to whatever unique fields this entity has (for most entities it's "name"). - * The managed system will then check if a record with that name already exists before - * trying to create a new one. + * By default this will be set automatically based on the entity's unique fields. * * @var array * @optionsCallback getMatchFields */ - protected $match = ['name']; + protected $match; /** * Specify rule for auto-updating managed entity @@ -76,18 +73,17 @@ class ExportAction extends AbstractAction { * @param \Civi\Api4\Generic\Result $result */ public function _run(Result $result) { - $this->exportRecord($this->getEntityName(), $this->id, $result, $this->match); + $this->exportRecord($this->getEntityName(), $this->id, $result); } /** * @param string $entityType * @param int $entityId * @param \Civi\Api4\Generic\Result $result - * @param array $matchFields * @param string $parentName * @param array $excludeFields */ - private function exportRecord(string $entityType, int $entityId, Result $result, array $matchFields, $parentName = NULL, $excludeFields = []) { + private function exportRecord(string $entityType, int $entityId, Result $result, $parentName = NULL, $excludeFields = []) { if (isset($this->exportedEntities[$entityType][$entityId])) { throw new \CRM_Core_Exception("Circular reference detected: attempted to export $entityType id $entityId multiple times."); } @@ -121,27 +117,12 @@ class ExportAction extends AbstractAction { } // The get api always returns ID, but it should not be included in an export unset($record['id']); - // Should references be limited to the current domain? - $limitRefsByDomain = $entityType === 'OptionGroup' && \CRM_Core_OptionGroup::isDomainOptionGroup($record['name']) ? \CRM_Core_BAO_Domain::getDomain()->id : FALSE; - foreach ($allFields as $fieldName => $field) { - if (($field['fk_entity'] ?? NULL) === 'Domain') { - $alias = $fieldName . '.name'; - if (isset($record[$alias])) { - // If this entity is for a specific domain, limit references to that same domain - if ($fieldName === 'domain_id') { - $limitRefsByDomain = \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Domain', $record[$alias], 'id', 'name'); - } - // Swap current domain for special API keyword - if ($record[$alias] === \CRM_Core_BAO_Domain::getDomain()->name) { - unset($record[$alias]); - $record[$fieldName] = 'current_domain'; - } - } - } - } $name = ($parentName ?? '') . $entityType . '_' . ($record['name'] ?? count($this->exportedEntities[$entityType])); - // Ensure safe characters, max length - $name = \CRM_Utils_String::munge($name, '_', 127); + // Ensure safe characters, max length. + // This is used for the value of `civicrm_managed.name` which has a maxlength of 255, but is also used + // to generate a file by civix, and many filesystems have a maxlength of 255 including the suffix, so + // 255 - strlen('.mgd.php') = 247 + $name = \CRM_Utils_String::munge($name, '_', 247); // Include option group with custom field if ($entityType === 'CustomField') { if ( @@ -149,7 +130,7 @@ class ExportAction extends AbstractAction { // Sometimes fields share an option group; only export it once. empty($this->exportedEntities['OptionGroup'][$record['option_group_id']]) ) { - $this->exportRecord('OptionGroup', $record['option_group_id'], $result, $matchFields); + $this->exportRecord('OptionGroup', $record['option_group_id'], $result); } } // Don't use joins/pseudoconstants if null or if it has the same value as the original @@ -177,8 +158,13 @@ class ExportAction extends AbstractAction { 'values' => $record, ], ]; - foreach (array_unique(array_intersect($matchFields, array_keys($allFields))) as $match) { - $export['params']['match'][] = $match; + $matchFields = $this->match; + // Calculate $match param if not passed explicitly + if (!isset($matchFields)) { + $matchFields = (array) CoreUtil::getInfoItem($entityType, 'match_fields'); + } + if ($matchFields) { + $export['params']['match'] = $matchFields; } $result[] = $export; // Export entities that reference this one @@ -194,15 +180,6 @@ class ExportAction extends AbstractAction { if ($refEntity === 'CustomField' && $entityType === 'OptionGroup') { continue; } - // Limit references by domain - if (property_exists($reference, 'domain_id')) { - if (!isset($reference->domain_id)) { - $reference->find(TRUE); - } - if (isset($reference->domain_id) && $reference->domain_id != $limitRefsByDomain) { - continue; - } - } $references[$refEntity][] = $reference; } foreach ($references as $refEntity => $records) { @@ -225,18 +202,8 @@ class ExportAction extends AbstractAction { return $a->$weightCol < $b->$weightCol ? -1 : 1; }); } - $referenceMatchFields = $matchFields; - // Add back-reference to "match" fields to enforce uniqueness - // See https://lab.civicrm.org/dev/core/-/issues/4286 - if ($referenceMatchFields) { - foreach ($reference::fields() as $field) { - if (($field['FKClassName'] ?? '') === $daoName) { - $referenceMatchFields[] = $field['name']; - } - } - } foreach ($records as $record) { - $this->exportRecord($refEntity, $record->id, $result, $referenceMatchFields, $name . '_', $exclude); + $this->exportRecord($refEntity, $record->id, $result, $name . '_', $exclude); } } } @@ -281,6 +248,8 @@ class ExportAction extends AbstractAction { ['type', 'IN', ['Field', 'Custom']], ['readonly', '!=', TRUE], ]; + // Domains are handled automatically + $excludeFields[] = 'domain_id'; if ($excludeFields) { $conditions[] = ['name', 'NOT IN', $excludeFields]; } diff --git a/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php index d0e943a9751b850b46759b34dea9990d49ccdb1a..eee54e51992f3a937a5f99b55937a8b84609d17a 100644 --- a/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php @@ -166,8 +166,12 @@ trait ArrayQueryActionTrait { case 'REGEXP': case 'NOT REGEXP': - $pattern = '/' . str_replace('/', '\\/', $expected) . '/'; - return !preg_match($pattern, $value) == ($operator != 'REGEXP'); + case 'REGEXP BINARY': + case 'NOT REGEXP BINARY': + // Perform case-sensitive matching for BINARY operator, otherwise insensitive + $i = str_ends_with($operator, 'BINARY') ? '' : 'i'; + $pattern = '/' . str_replace('/', '\\/', $expected) . "/$i"; + return !preg_match($pattern, $value) == str_starts_with($operator, 'NOT'); case 'IN': return in_array($value, $expected); diff --git a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php index feabd9bc4914a349f272136e39ebfae00e3a2f87..3a7d72c4e891d4c6ca0019ef569f525470a865dd 100644 --- a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php @@ -102,7 +102,7 @@ trait DAOActionTrait { protected function writeObjects($items) { $updateWeights = FALSE; // Adjust weights for sortable entities - if (in_array('SortableEntity', CoreUtil::getInfoItem($this->getEntityName(), 'type'))) { + if (CoreUtil::isType($this->getEntityName(), 'SortableEntity')) { $weightField = CoreUtil::getInfoItem($this->getEntityName(), 'order_by'); // Only take action if updating a single record, or if no weights are specified in any record // This avoids messing up a bulk update with multiple recalculations diff --git a/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php index 92487d91ba5b33af4a6db62c7ae438514fa88619..f10c09e818ee9f672c41dc62afe9fb16f1d32a31 100644 --- a/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php @@ -148,7 +148,7 @@ trait SavedSearchInspectorTrait { */ private function getQuery() { if (!isset($this->_selectQuery) && !empty($this->savedSearch['api_entity'])) { - if (!in_array('DAOEntity', CoreUtil::getInfoItem($this->savedSearch['api_entity'], 'type'), TRUE)) { + if (!CoreUtil::isType($this->savedSearch['api_entity'], 'DAOEntity')) { return $this->_selectQuery = FALSE; } $api = Request::create($this->savedSearch['api_entity'], 'get', $this->savedSearch['api_params']); diff --git a/civicrm/Civi/Api4/Navigation.php b/civicrm/Civi/Api4/Navigation.php index fc1d08e56d5e7530cda9a9b784c53183d70c96c7..5483dcb55fcef15f1a2b3f7e6162e2435e5e3ac8 100644 --- a/civicrm/Civi/Api4/Navigation.php +++ b/civicrm/Civi/Api4/Navigation.php @@ -16,6 +16,7 @@ namespace Civi\Api4; * @searchable none * @orderBy weight * @groupWeightsBy domain_id,parent_id + * @matchFields name,domain_id * @since 5.19 * @package Civi\Api4 */ diff --git a/civicrm/Civi/Api4/OptionValue.php b/civicrm/Civi/Api4/OptionValue.php index a3486c3e7c766bcd44a79a36e5c19b14db5864a8..210aa2219ee876d6c62828ddb17b23222f093a64 100644 --- a/civicrm/Civi/Api4/OptionValue.php +++ b/civicrm/Civi/Api4/OptionValue.php @@ -17,6 +17,7 @@ namespace Civi\Api4; * @searchable secondary * @orderBy weight * @groupWeightsBy option_group_id + * @matchFields option_group_id,name,value * @since 5.19 * @package Civi\Api4 */ diff --git a/civicrm/Civi/Api4/Query/Api4Query.php b/civicrm/Civi/Api4/Query/Api4Query.php index a40cfd4a67e790417bf76ca599c75b33f4812a9d..73f0e9eb665441ace98194346008c7deb0dca174 100644 --- a/civicrm/Civi/Api4/Query/Api4Query.php +++ b/civicrm/Civi/Api4/Query/Api4Query.php @@ -27,7 +27,8 @@ use Civi\Api4\Utils\FormattingUtil; * * '=', '<=', '>=', '>', '<', 'LIKE', "<>", "!=", * * 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', * * 'IS NOT NULL', 'IS NULL', 'CONTAINS', 'NOT CONTAINS', - * * 'IS EMPTY', 'IS NOT EMPTY', 'REGEXP', 'NOT REGEXP'. + * * 'IS EMPTY', 'IS NOT EMPTY', 'REGEXP', 'NOT REGEXP' + * * 'REGEXP BINARY', 'NOT REGEXP BINARY' */ abstract class Api4Query { @@ -402,8 +403,8 @@ abstract class Api4Query { } } - if ($operator == 'REGEXP' || $operator == 'NOT REGEXP') { - return sprintf('%s %s "%s"', $fieldAlias, $operator, \CRM_Core_DAO::escapeString($value)); + if ($operator == 'REGEXP' || $operator == 'NOT REGEXP' || $operator == 'REGEXP BINARY' || $operator == 'NOT REGEXP BINARY') { + return sprintf('%s %s "%s"', (str_ends_with($operator, 'BINARY') ? 'CAST(' . $fieldAlias . ' AS BINARY)' : $fieldAlias), $operator, \CRM_Core_DAO::escapeString($value)); } if (!$value && ($operator === 'IN' || $operator === 'NOT IN')) { diff --git a/civicrm/Civi/Api4/Query/SqlExpression.php b/civicrm/Civi/Api4/Query/SqlExpression.php index de05876e4894c3767b5cd745d8ca572981f27ba0..a58a580a73f9d2a31d999dca3a2fb58f8fe09e5a 100644 --- a/civicrm/Civi/Api4/Query/SqlExpression.php +++ b/civicrm/Civi/Api4/Query/SqlExpression.php @@ -68,6 +68,26 @@ abstract class SqlExpression { abstract protected function initialize(); + private static function munge($name, $char = '_', $len = 63) { + // Replace all white space and non-alpha numeric with $char + // we only use the ascii character set since mysql does not create table names / field names otherwise + // CRM-11744 + $name = preg_replace('/[^a-zA-Z0-9_]+/', $char, trim($name)); + + // If there are no ascii characters present. + if (!strlen(trim($name, $char))) { + $name = \CRM_Utils_String::createRandom($len, \CRM_Utils_String::ALPHANUMERIC); + } + + if ($len) { + // lets keep variable names short + return substr($name, 0, $len); + } + else { + return $name; + } + } + /** * Converts a string to a SqlExpression object. * @@ -82,7 +102,7 @@ abstract class SqlExpression { public static function convert(string $expression, $parseAlias = FALSE, $mustBe = []) { $as = $parseAlias ? strrpos($expression, ' AS ') : FALSE; $expr = $as ? substr($expression, 0, $as) : $expression; - $alias = $as ? \CRM_Utils_String::munge(substr($expression, $as + 4), '_', 256) : NULL; + $alias = $as ? self::munge(substr($expression, $as + 4), '_', 256) : NULL; $bracketPos = strpos($expr, '('); $firstChar = substr($expr, 0, 1); $lastChar = substr($expr, -1); diff --git a/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php index 08e327c3bff937a353667ae742601e7d1c9ec48f..1e9ca36f38c46bbe316b10da22749ad5b19d37db 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php @@ -47,6 +47,8 @@ class OptionValueAutocompleteProvider extends \Civi\Core\Service\AutoService imp [ 'type' => 'field', 'key' => 'description', + 'rewrite' => '#[value] [description]', + 'empty_value' => '#[value]', ], ], ]; diff --git a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php index 576b96ec6e05736de16cef5b23482d130c5301a6..beb5862c6b6ac42fd45b48375c2ecdce17d74f08 100644 --- a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php +++ b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php @@ -41,13 +41,13 @@ class SchemaMapBuilder extends AutoService { */ public function __construct(CiviEventDispatcherInterface $dispatcher) { $this->dispatcher = $dispatcher; - $this->apiEntities = array_keys((array) Entity::get(FALSE)->addSelect('name')->execute()->indexBy('name')); + $this->apiEntities = Entity::get(FALSE)->addSelect('name')->execute()->column('name'); } /** * @return SchemaMap */ - public function build() { + public function build(): SchemaMap { $map = new SchemaMap(); $this->loadTables($map); diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..beb34532fd74888fedc4660fd861845d6d654fc1 --- /dev/null +++ b/civicrm/Civi/Api4/Service/Spec/Provider/DashboardCreationSpecProvider.php @@ -0,0 +1,38 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +/** + * @service + * @internal + */ +class DashboardCreationSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { + + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + // Arguably this is a bad default in the schema + $spec->getFieldByName('is_active')->setRequired(FALSE)->setDefaultValue(TRUE); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return in_array($entity, ['Dashboard', 'DashboardContact'], TRUE) && $action === 'create'; + } + +} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php index 1479819acfd5dc9e7c5ea32e238895e17cc1f0c4..6e733d36c50ade2a95ea0164691fad09710be19f 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/EntityTagFilterSpecProvider.php @@ -77,7 +77,7 @@ class EntityTagFilterSpecProvider extends \Civi\Core\Service\AutoService impleme $value = array_unique(array_merge($value, $tagTree[$tagID])); } } - $tags = \CRM_Utils_Type::validate(implode(',', $value), 'CommaSeparatedIntegers'); + $tags = $value ? \CRM_Utils_Type::validate(implode(',', $value), 'CommaSeparatedIntegers') : '0'; return "$fieldAlias $operator (SELECT entity_id FROM `civicrm_entity_tag` WHERE entity_table = '$tableName' AND tag_id IN ($tags))"; } diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php index dcfaeaff75ee1290cdf11e03e292d701e6bc819a..dce76d87fcd28d74539792030f0c1b1301abfe67 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php @@ -25,6 +25,8 @@ class TagCreationSpecProvider extends \Civi\Core\Service\AutoService implements */ public function modifySpec(RequestSpec $spec) { $spec->getFieldByName('used_for')->setDefaultValue('civicrm_contact'); + $spec->getFieldByName('name')->setRequired(FALSE)->setRequiredIf('empty($values.label)'); + $spec->getFieldByName('label')->setRequired(FALSE)->setRequiredIf('empty($values.name)'); } /** diff --git a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php index 622a11178bbae6aa610ea76807c6019aeaa708e5..73bcd7a6cf56959fd880d63fff40aefa68057122 100644 --- a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php +++ b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php @@ -164,12 +164,12 @@ class SpecFormatter { $bao = CoreUtil::getBAOFromApiName($spec->getEntity()); $optionLabels = $bao::buildOptions($fieldName, NULL, $values); - if (!is_array($optionLabels) || !$optionLabels) { + if (!is_array($optionLabels)) { $options = FALSE; } else { $options = \CRM_Utils_Array::makeNonAssociative($optionLabels, 'id', 'label'); - if (is_array($returnFormat)) { + if (is_array($returnFormat) && $options) { self::addOptionProps($options, $spec, $bao, $fieldName, $values, $returnFormat); } } diff --git a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php index 0e5225723dfe1dcf9b345156d48f0abb60db1565..d77e3a8bc49b226c77432a9c91da0697b1492901 100644 --- a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php +++ b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php @@ -97,9 +97,6 @@ class SpecGatherer extends AutoService { if (!empty($DAOField['component']) && !\CRM_Core_Component::isEnabled($DAOField['component'])) { continue; } - if ($DAOField['name'] == 'is_active' && empty($DAOField['default'])) { - $DAOField['default'] = '1'; - } $this->setDynamicFk($DAOField, $values); $field = SpecFormatter::arrayToField($DAOField, $entityName); $spec->addFieldSpec($field); diff --git a/civicrm/Civi/Api4/Tag.php b/civicrm/Civi/Api4/Tag.php index 67e54a9fcf935fc36314e6ea6fe450b13e8bc325..d8dae1953f1bfd8c57b58358ddabd7ac9e7963d6 100644 --- a/civicrm/Civi/Api4/Tag.php +++ b/civicrm/Civi/Api4/Tag.php @@ -22,5 +22,6 @@ namespace Civi\Api4; * @package Civi\Api4 */ class Tag extends Generic\DAOEntity { + use Generic\Traits\ManagedEntity; } diff --git a/civicrm/Civi/Api4/Utils/CoreUtil.php b/civicrm/Civi/Api4/Utils/CoreUtil.php index ccc3ed45572c47ec3432966073b5aa0f243c7f7c..ad7415ee2e656557273c32ee5884ae7fe5e1a932 100644 --- a/civicrm/Civi/Api4/Utils/CoreUtil.php +++ b/civicrm/Civi/Api4/Utils/CoreUtil.php @@ -16,6 +16,7 @@ use Civi\API\Exception\NotImplementedException; use Civi\API\Exception\UnauthorizedException; use Civi\API\Request; use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Service\Schema\SchemaMap; use CRM_Core_DAO_AllCoreTables as AllCoreTables; class CoreUtil { @@ -31,7 +32,7 @@ class CoreUtil { * The BAO name for use in static calls. Return doc block is hacked to allow * auto-completion of static methods */ - public static function getBAOFromApiName($entityName) { + public static function getBAOFromApiName($entityName): ?string { // TODO: It would be nice to just call self::getInfoItem($entityName, 'dao') // but that currently causes test failures, probably due to early-bootstrap issues. if ($entityName === 'CustomValue' || strpos($entityName, 'Custom_') === 0) { @@ -54,16 +55,16 @@ class CoreUtil { * @param $baoClassName * @return string|null */ - public static function getApiNameFromBAO($baoClassName) { + public static function getApiNameFromBAO($baoClassName): ?string { $briefName = AllCoreTables::getBriefName($baoClassName); return $briefName && self::getApiClass($briefName) ? $briefName : NULL; } /** * @param string $entityName - * @return string|\Civi\Api4\Generic\AbstractEntity + * @return string|\Civi\Api4\Generic\AbstractEntity|null */ - public static function getApiClass($entityName) { + public static function getApiClass(string $entityName): ?string { $className = 'Civi\Api4\\' . $entityName; if (class_exists($className)) { return $className; @@ -91,6 +92,20 @@ class CoreUtil { return $entities[$entityName][$keyToReturn] ?? NULL; } + /** + * Check if entity is of given type. + * + * @param string $entityName + * e.g. 'Contact' + * @param string $entityType + * e.g. 'SortableEntity' + * @return bool + */ + public static function isType(string $entityName, string $entityType): bool { + $entityTypes = (array) self::getInfoItem($entityName, 'type'); + return in_array($entityType, $entityTypes, TRUE); + } + /** * Get name of unique identifier, typically "id" * @param string $entityName @@ -114,19 +129,19 @@ class CoreUtil { * * @param string $entityName * - * @return string + * @return string|null */ - public static function getTableName(string $entityName) { + public static function getTableName(string $entityName): ?string { return self::getInfoItem($entityName, 'table_name'); } /** * Given a sql table name, return the name of the api entity. * - * @param $tableName + * @param string $tableName * @return string|NULL */ - public static function getApiNameFromTableName($tableName) { + public static function getApiNameFromTableName($tableName): ?string { $provider = \Civi::service('action_object_provider'); foreach ($provider->getEntities() as $entityName => $info) { if (($info['table_name'] ?? NULL) === $tableName) { @@ -143,7 +158,7 @@ class CoreUtil { /** * @return string[] */ - public static function getOperators() { + public static function getOperators(): array { $operators = \CRM_Core_DAO::acceptedSQLOperators(); $operators[] = 'CONTAINS'; $operators[] = 'NOT CONTAINS'; @@ -151,6 +166,8 @@ class CoreUtil { $operators[] = 'IS NOT EMPTY'; $operators[] = 'REGEXP'; $operators[] = 'NOT REGEXP'; + $operators[] = 'REGEXP BINARY'; + $operators[] = 'NOT REGEXP BINARY'; return $operators; } @@ -163,7 +180,7 @@ class CoreUtil { * @param string $entityName * @return array{extends: array, column: string, grouping: mixed}|null */ - public static function getCustomGroupExtends(string $entityName) { + public static function getCustomGroupExtends(string $entityName): ?array { $contactTypes = \CRM_Contact_BAO_ContactType::basicTypes(); // Custom_group.extends pretty much maps 1-1 with entity names, except for Contact. if (in_array($entityName, $contactTypes, TRUE)) { @@ -207,7 +224,7 @@ class CoreUtil { * @return bool * @throws \CRM_Core_Exception */ - public static function isCustomEntity($customGroupName) { + public static function isCustomEntity($customGroupName): bool { return $customGroupName && \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $customGroupName, 'is_multiple', 'name'); } @@ -218,10 +235,10 @@ class CoreUtil { * @param array $record * @param int|null $userID * Contact ID of the user we are testing, 0 for the anonymous user. - * @return bool + * @return bool|null * @throws \CRM_Core_Exception */ - public static function checkAccessRecord(AbstractAction $apiRequest, array $record, int $userID = NULL) { + public static function checkAccessRecord(AbstractAction $apiRequest, array $record, int $userID = NULL): ?bool { $userID = $userID ?? \CRM_Core_Session::getLoggedInContactID() ?? 0; // Super-admins always have access to everything @@ -284,7 +301,7 @@ class CoreUtil { /** * @return \Civi\Api4\Service\Schema\SchemaMap */ - public static function getSchemaMap() { + public static function getSchemaMap(): SchemaMap { $cache = \Civi::cache('metadata'); $schemaMap = $cache->get('api4.schema.map'); if (!$schemaMap) { @@ -303,7 +320,7 @@ class CoreUtil { * @return array{name: string, type: string, count: int, table: string|null, key: string|null}[] * @throws NotImplementedException */ - public static function getRefCount(string $entityName, $entityId) { + public static function getRefCount(string $entityName, $entityId): array { $daoName = self::getInfoItem($entityName, 'dao'); if (!$daoName) { throw new NotImplementedException("Cannot getRefCount for $entityName - dao not found."); diff --git a/civicrm/Civi/Core/Format.php b/civicrm/Civi/Core/Format.php index d7041e00ef97fe948d2c0ab7af58cf9aa3197492..6531868871450157ff0019cff7ecca61d5a9877b 100644 --- a/civicrm/Civi/Core/Format.php +++ b/civicrm/Civi/Core/Format.php @@ -44,10 +44,6 @@ class Format extends \Civi\Core\Service\AutoService { if (!$currency) { $currency = Civi::settings()->get('defaultCurrency'); } - if (!isset($locale)) { - global $civicrmLocale; - $locale = $civicrmLocale->moneyFormat ?? (Civi::settings()->get('format_locale') ?? CRM_Core_I18n::getLocale()); - } $currencyObject = CRM_Utils_Money::getCurrencyObject($currency); $money = Money::of($amount, $currencyObject, NULL, RoundingMode::HALF_UP); $formatter = $this->getMoneyFormatter($currency, $locale); @@ -92,7 +88,7 @@ class Format extends \Civi\Core\Service\AutoService { * @noinspection PhpDocMissingThrowsInspection * @noinspection PhpUnhandledExceptionInspection */ - public function moneyNumber($amount, string $currency, $locale): string { + public function moneyNumber($amount, string $currency, $locale = NULL): string { if (($amount = $this->checkAndConvertAmount($amount)) === '') { return ''; } @@ -195,9 +191,7 @@ class Format extends \Civi\Core\Service\AutoService { } /** - * Get the money formatter for when we are using configured thousand separators. - * - * Our intent is to phase out these settings in favour of deriving them from the locale. + * Get the cached money formatter. * * @param string|null $currency * @param string|null $locale @@ -215,7 +209,10 @@ class Format extends \Civi\Core\Service\AutoService { if (!$currency) { $currency = Civi::settings()->get('defaultCurrency'); } - $locale = $locale ?: \Civi\Core\Locale::detect()->moneyFormat; + if (!isset($locale)) { + global $civicrmLocale; + $locale = $civicrmLocale->moneyFormat ?? (Civi::settings()->get('format_locale') ?? CRM_Core_I18n::getLocale()); + } $cacheKey = __CLASS__ . $currency . '_' . $locale . '_' . $style . (!empty($attributes) ? md5(json_encode($attributes)) : ''); if (!isset(\Civi::$statics[$cacheKey])) { diff --git a/civicrm/Civi/Core/SettingsManager.php b/civicrm/Civi/Core/SettingsManager.php index feb3f86f66d13c06dff092d459f81d6b36e350f8..6bf667c05cb387ba5d7198785155d033b08d9d07 100644 --- a/civicrm/Civi/Core/SettingsManager.php +++ b/civicrm/Civi/Core/SettingsManager.php @@ -239,7 +239,7 @@ class SettingsManager { */ protected function getMandatory($entity) { if ($this->mandatory === NULL) { - $this->mandatory = self::parseMandatorySettings(\CRM_Utils_Array::value('civicrm_setting', $GLOBALS)); + $this->mandatory = self::parseMandatorySettings($GLOBALS['civicrm_setting'] ?? NULL); } return $this->mandatory[$entity]; } diff --git a/civicrm/Civi/Core/SettingsMetadata.php b/civicrm/Civi/Core/SettingsMetadata.php index 00b8f034f0eb9f061a5d3690ca01cf01bb6b19d7..4f31a8a53b3da1d74f419ff02329c739475aa4f1 100644 --- a/civicrm/Civi/Core/SettingsMetadata.php +++ b/civicrm/Civi/Core/SettingsMetadata.php @@ -155,7 +155,7 @@ class SettingsMetadata { // but it's tightly coupled to DAO/field. However, if you really need to support // more pseudoconstant types, then probably best to refactor it. For now, KISS. if (!empty($pseudoconstant['optionGroupName'])) { - $keyColumn = \CRM_Utils_Array::value('keyColumn', $pseudoconstant, 'value'); + $keyColumn = $pseudoconstant['keyColumn'] ?? 'value'; if (is_array($optionsFormat)) { $optionValues = \CRM_Core_OptionValue::getValues(['name' => $pseudoconstant['optionGroupName']]); foreach ($optionValues as $option) { diff --git a/civicrm/Civi/Managed/MultisiteManaged.php b/civicrm/Civi/Managed/MultisiteManaged.php new file mode 100644 index 0000000000000000000000000000000000000000..12e8dd8f6d9734d1191b036ea46945cde887ac4c --- /dev/null +++ b/civicrm/Civi/Managed/MultisiteManaged.php @@ -0,0 +1,107 @@ +<?php + +namespace Civi\Managed; + +use Civi\Api4\Domain; +use Civi\Api4\Setting; +use Civi\Core\Service\AutoService; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * If an extension defines a record that should exist on all domains, replicate it across domains. + * + * @service + * @internal + */ +class MultisiteManaged extends AutoService implements EventSubscriberInterface { + + private $entities = []; + private $domains; + + public static function getSubscribedEvents() { + return [ + '&hook_civicrm_managed' => ['generateDomainEntities', -1000], + ]; + } + + /** + * @implements \CRM_Utils_Hook::managed() + * @param array $managedRecords + */ + public function generateDomainEntities(array &$managedRecords): void { + $multisiteEnabled = Setting::get(FALSE) + ->addSelect('is_enabled') + ->execute()->first(); + if (empty($multisiteEnabled['value'])) { + return; + } + + // array_splice needs array keys to be orderly + $managedRecords = array_values($managedRecords); + // Replace every single-domain record with one record per domain + // Walk the array in reverse order so the keys being processed remain stable even as the length changes. + foreach (array_reverse(array_keys($managedRecords)) as $index) { + if ($this->isCopiable($managedRecords[$index])) { + array_splice($managedRecords, $index, 1, $this->makeCopies($managedRecords[$index])); + } + } + } + + protected function makeCopies(array $managedRecord): array { + $copies = []; + foreach ($this->getDomains() as $index => $domainId) { + $copy = $managedRecord; + // For a smoother transition between enabling/disabling multisite, don't rename the first copy + if ($index) { + $copy['name'] .= '_' . $domainId; + } + $copy['params']['values']['domain_id'] = $domainId; + $copies[] = $copy; + } + return $copies; + } + + /** + * Check if a managed record is an APIv4 Entity that should exist on all domains. + * + * Follows the same logic for determining an entity belongs on multiple domains as `FieldDomainIdSpecProvider` + * @see \Civi\Api4\Service\Spec\Provider\FieldDomainIdSpecProvider + * + * @param array $managedRecord + * @return bool + */ + protected function isCopiable(array $managedRecord): bool { + if ($managedRecord['params']['version'] != 4) { + return FALSE; + } + // Extra guard so that clever extensions (which multiply entities themselves) don't get entities-squared. + if (is_numeric($managedRecord['params']['values']['domain_id'] ?? NULL) || !empty($managedRecord['params']['values']['domain_id.name'])) { + \CRM_Core_Error::deprecatedWarning(sprintf('Module "%s" has self-multiplied managed entity "%s" across domains. This is deprecated.', $managedRecord['module'], $managedRecord['name'])); + return FALSE; + } + if (!isset($this->entities[$managedRecord['entity']])) { + try { + $this->entities[$managedRecord['entity']] = (bool) civicrm_api4($managedRecord['entity'], 'getFields', [ + 'checkPermissions' => FALSE, + 'action' => 'create', + 'where' => [ + ['name', '=', 'domain_id'], + ['default_value', '=', 'current_domain'], + ], + ])->count(); + } + catch (\CRM_Core_Exception $e) { + $this->entities[$managedRecord['entity']] = FALSE; + } + } + return $this->entities[$managedRecord['entity']]; + } + + private function getDomains(): array { + if (!isset($this->domains)) { + $this->domains = Domain::get(FALSE)->addSelect('id')->addOrderBy('id')->execute()->column('id'); + } + return $this->domains; + } + +} diff --git a/civicrm/Civi/Test.php b/civicrm/Civi/Test.php index f5e09b274008e4a19a1326223852a2c11040a45f..5968f86031c6e9e66f9d37704004f69454e1452f 100644 --- a/civicrm/Civi/Test.php +++ b/civicrm/Civi/Test.php @@ -125,7 +125,7 @@ class Test { ->callback(function ($ctx) { \Civi\Test::data()->populate(); }, 'populate'); - $builder->install(['org.civicrm.search_kit']); + $builder->install(['org.civicrm.search_kit', 'org.civicrm.afform', 'authx']); return $builder; } diff --git a/civicrm/Civi/Test/Api3TestTrait.php b/civicrm/Civi/Test/Api3TestTrait.php index d12f912bdb2106eb0a9a95a7073817d6b353d5b2..d68b04de11753d02a8871c87976db1b73fbf4e0c 100644 --- a/civicrm/Civi/Test/Api3TestTrait.php +++ b/civicrm/Civi/Test/Api3TestTrait.php @@ -125,7 +125,7 @@ trait Api3TestTrait { * @param null $extraOutput * @return array|int */ - public function callAPIFailure($entity, $action, $params, $expectedErrorMessage = NULL, $extraOutput = NULL) { + public function callAPIFailure($entity, $action, $params = [], $expectedErrorMessage = NULL, $extraOutput = NULL) { if (is_array($params)) { $params += [ 'version' => $this->_apiversion, diff --git a/civicrm/Civi/Test/Api4TestTrait.php b/civicrm/Civi/Test/Api4TestTrait.php index b78e81c7b2985b3bfc7716e2492470e61d4583a1..80ae3c6ecfc7aa29444ef635bf34bb0ebe9db2b9 100644 --- a/civicrm/Civi/Test/Api4TestTrait.php +++ b/civicrm/Civi/Test/Api4TestTrait.php @@ -130,9 +130,9 @@ trait Api4TestTrait { foreach ($requiredFields as $fieldName => $field) { if ( !isset($values[$fieldName]) && - ($field['required'] || AbstractAction::evaluateCondition($field['required_if'], $values + $extraValues)) + ($field['required'] || AbstractAction::evaluateCondition($field['required_if'], ['values' => $values + $extraValues])) ) { - $extraValues[$fieldName] = $this->getRequiredValue($field, $requiredFields); + $extraValues[$fieldName] = $this->getRequiredValue($field); } } diff --git a/civicrm/Civi/Test/ContributionPageTestTrait.php b/civicrm/Civi/Test/ContributionPageTestTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..d20bc0863fb2631cfc04ac39fc823551c60ed7c7 --- /dev/null +++ b/civicrm/Civi/Test/ContributionPageTestTrait.php @@ -0,0 +1,113 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Test; + +/** + * Helper for event tests. + * + * WARNING - this trait ships with core from 5.68 but the signatures may not yet be stable + * and it is worth assuming that they will not be stable until 5.72. + * + * This provides functions to set up valid contribution pages + * for unit tests. + * + * The primary functions in this class are + * - `contributionPageCreatePaid` - this is the main function to use + * - `contributionPageCreate` - underlying function, use for non-monetary pages. + * + * Calling these function will create contribution pages with associated + * profiles and price set data as appropriate. + */ +trait ContributionPageTestTrait { + use EntityTrait; + + /** + * Create a contribution page for test purposes. + * + * Only call this directly for unpaid contribution pages. + * Otherwise use contributionPageCreatePaid. + * + * @param array $contributionPageValues + * @param string $identifier + * + * @return array + */ + public function contributionPageCreate(array $contributionPageValues = [], string $identifier = 'ContributionPage'): array { + $contributionPageDefaults = [ + 'frontend_title' => 'Test Frontend title', + 'title' => 'Page Title', + 'name' => 'default_page', + 'financial_type_id:name' => 'Donation', + 'is_email_receipt' => TRUE, + 'is_pay_later' => $contributionPageValues['is_monetary'] ?: FALSE, + 'pay_later_text' => 'Send Money Now', + ]; + $contributionPageValues += $contributionPageDefaults; + return $this->createTestEntity('ContributionPage', $contributionPageValues, $identifier); + } + + /** + * @param array $contributionPageValues + * @param array $priceSetParameters + * Currently if 'id' is passed in then no update is made, but this could change + * @param string $identifier + * + * @return array + */ + public function contributionPageCreatePaid(array $contributionPageValues, array $priceSetParameters = [], string $identifier = 'ContributionPage'): array { + $contributionPageValues['is_monetary'] = TRUE; + $contributionPageResult = $this->contributionPageCreate($contributionPageValues, $identifier); + $priceSetParameters += [ + 'title' => 'Price Set', + 'is_quick_config' => TRUE, + 'extends' => 'CiviContribute', + 'financial_type_id:name' => 'Donation', + 'name' => $identifier, + ]; + if (empty($priceSetParameters['id'])) { + $this->createTestEntity('PriceSet', $priceSetParameters, $identifier); + } + else { + $this->ids['PriceSet'][$identifier] = $priceSetParameters['id']; + // Maybe do update here?? + } + $this->createTestEntity('PriceSetEntity', [ + 'entity_table' => 'civicrm_contribution_page', + 'entity_id' => $contributionPageResult['id'], + 'price_set_id' => $this->ids['PriceSet'][$identifier], + ]); + return $contributionPageResult; + } + + /** + * Get the id of the contribution page created in set up. + * + * If only one has been created it will be selected. Otherwise + * you should pass in the appropriate identifier. + * + * @param string $identifier + * + * @return int + */ + protected function getContributionPageID(string $identifier = 'ContributionPage'): int { + if (isset($this->ids['ContributionPage'][$identifier])) { + return $this->ids['ContributionPage'][$identifier]; + } + if (count($this->ids['ContributionPage']) === 1) { + return reset($this->ids['ContributionPage']); + } + $this->fail('Could not identify ContributionPage ID'); + // Unreachable but reduces IDE noise. + return 0; + } + +} diff --git a/civicrm/Civi/Test/EventTestTrait.php b/civicrm/Civi/Test/EventTestTrait.php index c494e9470752d282bdc3aee2507ffb198c64c7b2..61629d21d5f5a13211f399dd75806a1d533837f7 100644 --- a/civicrm/Civi/Test/EventTestTrait.php +++ b/civicrm/Civi/Test/EventTestTrait.php @@ -22,10 +22,6 @@ use Civi\Api4\UFJoin; /** * Helper for event tests. * - * WARNING - this trait ships with core from 5.63 but I wasn't able to resolve - * all the core tests onto it for 5.63 - hence the signatures may not yet be stable - * and it is worth assuming that they will not be stable until 5.65. - * * This provides functions to set up valid events * for unit tests. * diff --git a/civicrm/Civi/Test/FormTrait.php b/civicrm/Civi/Test/FormTrait.php index 799a586a2b9c4260bed3a5151e4816b9ee1acfb9..a194768c156366d103f6f667021c4d4925608839 100644 --- a/civicrm/Civi/Test/FormTrait.php +++ b/civicrm/Civi/Test/FormTrait.php @@ -19,6 +19,11 @@ use Civi\Test\FormWrappers\EventFormParticipant; */ trait FormTrait { + /** + * @var \Civi\Test\FormWrapper + */ + private $form; + /** * @param $formName * @param $submittedValues @@ -27,13 +32,65 @@ trait FormTrait { * @return \Civi\Test\FormWrapper */ public function getTestForm($formName, $submittedValues, array $urlParameters = []) { + $this->form = NULL; if ($formName === 'CRM_Event_Form_Participant') { - return new EventFormParticipant($formName, $submittedValues, $urlParameters); + $this->form = new EventFormParticipant($formName, $submittedValues, $urlParameters); } if ($formName === 'CRM_Event_Form_Registration_Register') { - return new EventFormOnline($formName, $submittedValues, $urlParameters); + $this->form = new EventFormOnline($formName, $submittedValues, $urlParameters); + } + if (!$this->form) { + $this->form = new FormWrapper($formName, $submittedValues, $urlParameters); + } + return $this->form; + } + + /** + * Assert that the sent mail included the supplied strings. + * + * @param array $strings + * @param int $mailIndex + */ + protected function assertMailSentContainingStrings(array $strings, int $mailIndex = 0): void { + foreach ($strings as $string) { + $this->assertMailSentContainingString($string, $mailIndex); } - return new FormWrapper($formName, $submittedValues, $urlParameters); + } + + /** + * Assert that the sent mail included the supplied string. + * + * @param string $string + * @param int $mailIndex + */ + protected function assertMailSentContainingString(string $string, int $mailIndex = 0): void { + $mail = $this->form->getMail()[$mailIndex]; + $this->assertStringContainsString($string, $mail['body']); + } + + /** + * Assert that the sent mail included the supplied strings. + * + * @param array $recipients + * @param int $mailIndex + */ + protected function assertMailSentTo(array $recipients, int $mailIndex = 0): void { + $mail = $this->form->getMail()[$mailIndex]; + foreach ($recipients as $string) { + $this->assertStringContainsString($string, $mail['headers']); + } + } + + /** + * Retrieve a deprecated property, ensuring a deprecation notice is thrown. + * + * @param string $property + * + * @return mixed + * @throws \CRM_Core_Exception + */ + protected function getDeprecatedProperty(string $property) { + return $this->form->getDeprecatedProperty($property); } } diff --git a/civicrm/Civi/Test/FormWrapper.php b/civicrm/Civi/Test/FormWrapper.php index 737ebb9389dd0d94a01b44ac8648476df6987ffd..e20b031061e8328967b4bae74f107f17ddc8f653 100644 --- a/civicrm/Civi/Test/FormWrapper.php +++ b/civicrm/Civi/Test/FormWrapper.php @@ -50,10 +50,26 @@ class FormWrapper { return $this->mail ? (array) reset($this->mail) : []; } + /** + * Get the number of emails sent. + * + * @return int + */ + public function getMailCount(): int { + return count((array) $this->mail); + } + public function getFirstMailBody() : string { return $this->getFirstMail()['body'] ?? ''; } + /** + * @return array + */ + public function getTemplateVariables(): array { + return $this->templateVariables; + } + private $redirects; private $mailSpoolID; @@ -103,6 +119,7 @@ class FormWrapper { if ($state > self::VALIDATED) { $this->postProcess(); } + $this->templateVariables = $this->form->get_template_vars(); return $this; } @@ -182,7 +199,7 @@ class FormWrapper { $_POST = $formValues; $this->form = new $class(); $_SERVER['REQUEST_METHOD'] = 'GET'; - $_REQUEST += $urlParameters; + $_REQUEST = array_merge($_REQUEST, $urlParameters); switch ($class) { case 'CRM_Event_Cart_Form_Checkout_Payment': case 'CRM_Event_Cart_Form_Checkout_ParticipantsAndPrices': @@ -339,4 +356,25 @@ class FormWrapper { \Civi::settings()->set('mailing_backend', $this->originalMailSetting); } + /** + * Retrieve a deprecated property, ensuring a deprecation notice is thrown. + * + * @param string $property + * + * @return mixed + * @throws \CRM_Core_Exception + */ + public function getDeprecatedProperty(string $property) { + try { + $this->form->$property; + } + catch (\Exception $e) { + $oldErrorLevel = error_reporting(0); + $value = $this->form->$property; + error_reporting($oldErrorLevel); + return $value; + } + throw new \CRM_Core_Exception('Deprecation should have been triggered'); + } + } diff --git a/civicrm/Civi/Test/HttpTestTrait.php b/civicrm/Civi/Test/HttpTestTrait.php index e74ccd424192a2e17153296adbf272599c0306e3..47e5345170a65f711ff2e6f0113b4522dda8219a 100644 --- a/civicrm/Civi/Test/HttpTestTrait.php +++ b/civicrm/Civi/Test/HttpTestTrait.php @@ -130,6 +130,37 @@ trait HttpTestTrait { return $this; } + /** + * Assert that the response did NOT produce a normal page-view. + * + * This is basically `assertStatusCode(404)`, except that the local configuration + * (CMS/setings/exts/yaddayadda) may change how the error manifests. + * + * @param $response + * @return void + */ + protected function assertPageNotShown($response = NULL): void { + $response = $this->resolveResponse($response); + $actualCode = $response->getStatusCode(); + switch ($actualCode) { + case 404: /* Good! Right! */ + case 403: /* Maybe request falls through to `/civicrm/dashboard` */ + case 500: /* Maybe request falls through to `/civicrm/dashboard`, and it's weird */ + // OK, close enough. You convinced that the page was not shown to the user. + // Bump the assertion-counter and carry on. + $this->assertTrue(TRUE); + return; + + case 200: + // Hypothetically, you might do extra checks on the body to detected misreported errors. + // But for now, let's pretend that HTTP 200 means "OK, Page Found!"... since that is exactly what it means. + $this->fail("Expected HTTP response to indicate a failure (e.g. 404). Received HTTP response $actualCode.\n" . $this->formatFailure($response)); + + default: + $this->fail("Expected HTTP response, but the status code makes no sense. Received HTTP response $actualCode.\n" . $this->formatFailure($response)); + } + } + /** * @param $expectType * @param \Psr\Http\Message\ResponseInterface|null $response @@ -146,6 +177,8 @@ trait HttpTestTrait { } /** + * Assert that the response body matches a regular-expression. + * * @param string $regexp * @param \Psr\Http\Message\ResponseInterface $response * @param string $message @@ -156,11 +189,29 @@ trait HttpTestTrait { } $response = $this->resolveResponse($response); - $this->assertRegexp($regexp, (string) $response->getBody(), + $this->assertMatchesRegularExpression($regexp, (string) $response->getBody(), $message . 'Response body does not match pattern' . $this->formatFailure($response)); return $this; } + /** + * Assert that the response body DOES NOT match a regular-expression. + * + * @param string $regexp + * @param \Psr\Http\Message\ResponseInterface $response + * @param string $message + */ + protected function assertNotBodyRegexp($regexp, $response = NULL, $message = NULL) { + if ($message) { + $message .= "\n"; + } + + $response = $this->resolveResponse($response); + $this->assertDoesNotMatchRegularExpression($regexp, (string) $response->getBody(), + $message . 'Response body should not match pattern' . $this->formatFailure($response)); + return $this; + } + /** * @param \Psr\Http\Message\ResponseInterface|null $response * @return \Psr\Http\Message\ResponseInterface diff --git a/civicrm/Civi/Token/TokenRow.php b/civicrm/Civi/Token/TokenRow.php index 0379febff25852deb232ff364efc611e5970b21b..953154a2fc973ee40710855ed6644203f49f0164 100644 --- a/civicrm/Civi/Token/TokenRow.php +++ b/civicrm/Civi/Token/TokenRow.php @@ -187,7 +187,7 @@ class TokenRow { 'return' => $customFieldName, 'id' => $entityID, ]); - $fieldValue = \CRM_Utils_Array::value($customFieldName, $record, ''); + $fieldValue = $record[$customFieldName] ?? ''; $originalValue = $fieldValue; // format the raw custom field value into proper display value if (isset($fieldValue)) { @@ -281,7 +281,7 @@ class TokenRow { if ($entity == 'activity' && $field == 'details') { $htmlTokens[$entity][$field] = $value; } - elseif (\CRM_Utils_Array::value('data_type', \CRM_Utils_Array::value($field, $entityFields['values'])) == 'Memo') { + elseif (($entityFields['values'][$field]['data_type'] ?? NULL) === 'Memo') { // Memo fields aka custom fields of type Note are html. $htmlTokens[$entity][$field] = \CRM_Utils_String::purifyHTML($value); } diff --git a/civicrm/Civi/WorkflowMessage/Traits/AddressingTrait.php b/civicrm/Civi/WorkflowMessage/Traits/AddressingTrait.php index ac60155bd5835775f2e6ae0d946594b966d64931..a1dc7b73bfc4c3eb491ef3f9492ff3fc97d73f03 100644 --- a/civicrm/Civi/WorkflowMessage/Traits/AddressingTrait.php +++ b/civicrm/Civi/WorkflowMessage/Traits/AddressingTrait.php @@ -249,7 +249,7 @@ trait AddressingTrait { * @see \Civi\WorkflowMessage\Traits\ReflectiveWorkflowTrait::import */ protected function importExtraEnvelope_toAddress(array &$values): void { - if (array_key_exists('toEmail', $values) || array_key_exists('toName', $values)) { + if (isset($values['toEmail']) || isset($values['toName'])) { $this->setTo(['name' => $values['toName'] ?? NULL, 'email' => $values['toEmail'] ?? NULL]); unset($values['toName']); unset($values['toEmail']); diff --git a/civicrm/Civi/WorkflowMessage/Traits/CustomFieldTrait.php b/civicrm/Civi/WorkflowMessage/Traits/CustomFieldTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..af794d492d81065ad3a7372dfddd8434d9f47394 --- /dev/null +++ b/civicrm/Civi/WorkflowMessage/Traits/CustomFieldTrait.php @@ -0,0 +1,67 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\WorkflowMessage\Traits; + +/** + * Adds a block of custom fields, as traditionally used in back office receipts. + */ +trait CustomFieldTrait { + + /** + * Get a list of custom fields that are 'viewable'. + * + * Viewable is defined as + * - is_public = TRUE (group level) + * - is_view = FALSE (field level). + * This indicate a calculated field (which could be private fundraising info) + * and has not been historically visible as it is not on the edit form. + * - is not acl blocked for the current user (this is used in back office + * context so the user is an admin not the recipient). + * + * @param string $entity + * @param array $filters + * + * @return array + * @throws \CRM_Core_Exception + */ + protected function getFilteredCustomFields(string $entity, array $filters = []): array { + return \CRM_Core_BAO_CustomField::getViewableCustomFields($entity, $filters); + } + + /** + * Given an entity loaded through apiv4 return an array of custom fields for display. + * + * @param array $entityRecord + * @param string $entity + * @param array $filters + * + * @return array + * @throws \Brick\Money\Exception\UnknownCurrencyException + * @throws \CRM_Core_Exception + */ + protected function getCustomFieldDisplay(array $entityRecord, string $entity, array $filters = []): array { + // Fetch the fields, filtered by the entity_extends values + $viewableFields = $this->getFilteredCustomFields($entity, $filters); + + $fields = []; + foreach ($viewableFields as $fieldSpec) { + $fieldName = $fieldSpec['custom_group_id.name'] . '.' . $fieldSpec['name']; + $value = str_replace(' ', '', \CRM_Core_BAO_CustomField::displayValue($entityRecord[$fieldName], $fieldSpec['id'], $entityRecord['id'])); + // I can't see evidence we have filtered out empty strings here historically + // but maybe we should? + $fields[$fieldSpec['custom_group_id.title']][$fieldSpec['label']] = $value; + } + return $fields; + } + +} diff --git a/civicrm/ang/afform/afformQuickAddIndividual.aff.html b/civicrm/ang/afform/afformQuickAddIndividual.aff.html new file mode 100644 index 0000000000000000000000000000000000000000..db7d08d3996ae63cf7d71a786a4f2e8cf9a1e4b4 --- /dev/null +++ b/civicrm/ang/afform/afformQuickAddIndividual.aff.html @@ -0,0 +1,18 @@ +<af-form ctrl="afform"> + <af-entity type="Individual" name="Individual1" actions="{create: true, update: false}" security="RBAC" /> + <fieldset af-fieldset="Individual1" class="af-container"> + <div class="af-container"> + <div class="af-container af-layout-inline"> + <af-field name="first_name" /> + <af-field name="middle_name" /> + <af-field name="last_name" /> + </div> + <div af-join="Email" data="{is_primary: true}"> + <div class="af-container af-layout-inline"> + <af-field name="email" defn="{required: false}" /> + </div> + </div> + </div> + </fieldset> + <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">{{:: ts('Submit') }}</button> +</af-form> diff --git a/civicrm/ang/afform/afformQuickAddIndividual.aff.php b/civicrm/ang/afform/afformQuickAddIndividual.aff.php new file mode 100644 index 0000000000000000000000000000000000000000..15a06fc2ce4f0ab533f4e20d33134649818d1424 --- /dev/null +++ b/civicrm/ang/afform/afformQuickAddIndividual.aff.php @@ -0,0 +1,14 @@ +<?php + +return [ + 'type' => 'form', + 'title' => ts('New Individual'), + 'icon' => 'fa-list-alt', + 'server_route' => 'civicrm/quick-add/Individual', + 'permission' => [ + 'add contacts', + ], + 'permission_operator' => 'AND', + 'submit_enabled' => TRUE, + 'create_submission' => FALSE, +]; diff --git a/civicrm/ang/afform/afformQuickAddOrganization.aff.html b/civicrm/ang/afform/afformQuickAddOrganization.aff.html new file mode 100644 index 0000000000000000000000000000000000000000..50a661f8a686b46537d742b1f1d563b590c75ff8 --- /dev/null +++ b/civicrm/ang/afform/afformQuickAddOrganization.aff.html @@ -0,0 +1,16 @@ +<af-form ctrl="afform"> + <af-entity type="Organization" name="Organization1" actions="{create: true, update: false}" security="RBAC" /> + <fieldset af-fieldset="Organization1" class="af-container"> + <div class="af-container"> + <div class="af-container af-layout-inline"> + <af-field name="organization_name" /> + </div> + <div af-join="Email" data="{is_primary: true}"> + <div class="af-container af-layout-inline"> + <af-field name="email" defn="{required: false}"/> + </div> + </div> + </div> + </fieldset> + <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">{{:: ts('Submit') }}</button> +</af-form> diff --git a/civicrm/ang/afform/afformQuickAddOrganization.aff.php b/civicrm/ang/afform/afformQuickAddOrganization.aff.php new file mode 100644 index 0000000000000000000000000000000000000000..70308a2f9fd340a5f6596d8186eee0845280047d --- /dev/null +++ b/civicrm/ang/afform/afformQuickAddOrganization.aff.php @@ -0,0 +1,14 @@ +<?php + +return [ + 'type' => 'form', + 'title' => ts('New Organization'), + 'icon' => 'fa-list-alt', + 'server_route' => 'civicrm/quick-add/Organization', + 'permission' => [ + 'add contacts', + ], + 'permission_operator' => 'AND', + 'submit_enabled' => TRUE, + 'create_submission' => FALSE, +]; diff --git a/civicrm/ang/afform/afsearchTabNote.aff.php b/civicrm/ang/afform/afsearchTabNote.aff.php index c22bf3a04904fc6b57b6e96f6d8cbdf576957c34..c2a99ba08fd580915262e165cdd760d4446abca3 100644 --- a/civicrm/ang/afform/afsearchTabNote.aff.php +++ b/civicrm/ang/afform/afsearchTabNote.aff.php @@ -4,7 +4,7 @@ return [ 'type' => 'search', 'title' => ts('Notes'), 'description' => '', - 'contact_summary' => 'tab', + 'placement' => ['contact_summary_tab'], 'summary_weight' => 100, 'icon' => 'fa-sticky-note-o', 'summary_contact_type' => NULL, diff --git a/civicrm/ang/afform/afsearchTabRel.aff.php b/civicrm/ang/afform/afsearchTabRel.aff.php index 3eb3cb03aec38f7b166d6c32436df6d538b3e658..43af4f00df36175cd3b6eb4b70fa24ce1a201e3d 100644 --- a/civicrm/ang/afform/afsearchTabRel.aff.php +++ b/civicrm/ang/afform/afsearchTabRel.aff.php @@ -6,7 +6,7 @@ return [ 'permission' => [ 'access CiviCRM', ], - 'contact_summary' => 'tab', + 'placement' => ['contact_summary_tab'], 'icon' => 'fa-handshake-o', 'summary_weight' => 80, 'permission_operator' => 'AND', diff --git a/civicrm/ang/crmUi.js b/civicrm/ang/crmUi.js index 718bf22b0a71aeb2f70eb59bf8ced73b65c99105..811fd8101ba04162e619cdfc290827266c790e75 100644 --- a/civicrm/ang/crmUi.js +++ b/civicrm/ang/crmUi.js @@ -729,6 +729,7 @@ crmAutocompleteParams: '<', multi: '<', autoOpen: '<', + quickAdd: '<', staticOptions: '<' }, link: function(scope, element, attr, ctrl) { @@ -791,6 +792,7 @@ // Only auto-open if there are no static options minimumInputLength: ctrl.autoOpen && _.isEmpty(ctrl.staticOptions) ? 0 : 1, static: ctrl.staticOptions || [], + quickAdd: ctrl.quickAdd, }); }); }; diff --git a/civicrm/api/api.php b/civicrm/api/api.php index 42ebc7e36d353a47c5bf2d070b7e557a0eeb5eaa..4fd54bcfd9656133668b2328fc8670eebfd5576e 100644 --- a/civicrm/api/api.php +++ b/civicrm/api/api.php @@ -79,9 +79,9 @@ function civicrm_api4(string $entity, string $action, array $params = [], $index if ($index && is_array($index)) { $indexCol = reset($index); $indexField = key($index); - // Index array indicates only 1 or 2 fields need to be selected (except for oddball "Setting" api) - if ($entity !== 'Setting' && property_exists($apiCall, 'select')) { - $apiCall->setSelect([$indexCol]); + // Automatically add index fields(s) to the SELECT clause + if ($entity !== 'Setting' && method_exists($apiCall, 'addSelect')) { + $apiCall->addSelect($indexCol); if ($indexField && $indexField != $indexCol) { $apiCall->addSelect($indexField); } @@ -135,7 +135,7 @@ function civicrm_api3(string $entity, string $action, array $params = []) { $params['version'] = 3; $result = \Civi::service('civi_api_kernel')->runSafe($entity, $action, $params); if (is_array($result) && !empty($result['is_error'])) { - throw new CRM_Core_Exception($result['error_message'], CRM_Utils_Array::value('error_code', $result, 'undefined'), $result); + throw new CRM_Core_Exception($result['error_message'], $result['error_code'] ?? 'undefined', $result); } return $result; } diff --git a/civicrm/api/v3/Activity.php b/civicrm/api/v3/Activity.php index 415f59876d8860b7d4126b03d9cd7c4489b4ccb6..0c4f19e5b93ebda50d9c21da3c59b0f765dc535f 100644 --- a/civicrm/api/v3/Activity.php +++ b/civicrm/api/v3/Activity.php @@ -511,7 +511,7 @@ function _civicrm_api3_activity_get_formatResult($params, $activities, $options) if (!empty($returnProperties) || !empty($params['contact_id'])) { foreach ($activities as $activityId => $values) { //@todo - should possibly load activity type id if not loaded (update with id) - _civicrm_api3_custom_data_get($activities[$activityId], CRM_Utils_Array::value('check_permissions', $params), 'Activity', $activityId, NULL, CRM_Utils_Array::value('activity_type_id', $values)); + _civicrm_api3_custom_data_get($activities[$activityId], $params['check_permissions'] ?? NULL, 'Activity', $activityId, NULL, $values['activity_type_id'] ?? NULL); } } return $activities; diff --git a/civicrm/api/v3/Attachment.php b/civicrm/api/v3/Attachment.php index 5e16486707cbe7640bd24f3f48c0737f0c04380e..2b7f12dcca0df45edc2da1a35072a8f9f3ab36e7 100644 --- a/civicrm/api/v3/Attachment.php +++ b/civicrm/api/v3/Attachment.php @@ -207,9 +207,9 @@ function _civicrm_api3_attachment_delete_spec(&$spec) { $spec['entity_table'] = $entityFileFields['entity_table']; // Historically this field had no pseudoconstant and APIv3 can't handle it $spec['entity_table']['pseudoconstant'] = NULL; - $spec['entity_table']['title'] = CRM_Utils_Array::value('title', $spec['entity_table'], 'Entity Table') . ' (write-once)'; + $spec['entity_table']['title'] = ($spec['entity_table']['title'] ?? 'Entity Table') . ' (write-once)'; $spec['entity_id'] = $entityFileFields['entity_id']; - $spec['entity_id']['title'] = CRM_Utils_Array::value('title', $spec['entity_id'], 'Entity ID') . ' (write-once)'; + $spec['entity_id']['title'] = ($spec['entity_id']['title'] ?? 'Entity ID') . ' (write-once)'; } /** @@ -469,10 +469,10 @@ function _civicrm_api3_attachment_getfields() { // Historically this field had no pseudoconstant and APIv3 can't handle it $spec['entity_table']['pseudoconstant'] = NULL; // Would be hard to securely handle changes. - $spec['entity_table']['title'] = CRM_Utils_Array::value('title', $spec['entity_table'], 'Entity Table') . ' (write-once)'; + $spec['entity_table']['title'] = ($spec['entity_table']['title'] ?? 'Entity Table') . ' (write-once)'; $spec['entity_id'] = $entityFileFields['entity_id']; // would be hard to securely handle changes - $spec['entity_id']['title'] = CRM_Utils_Array::value('title', $spec['entity_id'], 'Entity ID') . ' (write-once)'; + $spec['entity_id']['title'] = ($spec['entity_id']['title'] ?? 'Entity ID') . ' (write-once)'; $spec['url'] = [ 'title' => 'URL (read-only)', 'description' => 'URL for downloading the file (not searchable, expire-able)', diff --git a/civicrm/api/v3/Case.php b/civicrm/api/v3/Case.php index 51f021cee6db26b92a9e963860f54247a7f7630b..533ab0c90c76c29b19352953c246b3812c0fb1e5 100644 --- a/civicrm/api/v3/Case.php +++ b/civicrm/api/v3/Case.php @@ -571,7 +571,7 @@ function civicrm_api3_case_delete($params) { //check parameters civicrm_api3_verify_mandatory($params, NULL, ['id']); - if (CRM_Case_BAO_Case::deleteCase($params['id'], CRM_Utils_Array::value('move_to_trash', $params, FALSE))) { + if (CRM_Case_BAO_Case::deleteCase($params['id'], $params['move_to_trash'] ?? FALSE)) { return civicrm_api3_create_success($params, $params, 'Case', 'delete'); } else { diff --git a/civicrm/api/v3/Contact.php b/civicrm/api/v3/Contact.php index d3e35192ef128d2e6d0a1202dd586e1cb37e1961..747b62f07e2a0fb343792e57701b0be2124881b8 100644 --- a/civicrm/api/v3/Contact.php +++ b/civicrm/api/v3/Contact.php @@ -35,7 +35,7 @@ * @throws \CRM_Core_Exception */ function civicrm_api3_contact_create($params) { - $contactID = CRM_Utils_Array::value('contact_id', $params, CRM_Utils_Array::value('id', $params)); + $contactID = CRM_Utils_Array::value('contact_id', $params, $params['id'] ?? NULL); if ($contactID && !empty($params['check_permissions']) && !CRM_Contact_BAO_Contact_Permission::allow($contactID, CRM_Core_Permission::EDIT)) { throw new \Civi\API\Exception\UnauthorizedException('Permission denied to modify contact record'); @@ -55,13 +55,14 @@ function civicrm_api3_contact_create($params) { if (!$contactID) { // If we get here, we're ready to create a new contact - if (($email = CRM_Utils_Array::value('email', $params)) && !is_array($params['email'])) { + $email = $params['email'] ?? NULL; + if ($email && !is_array($params['email'])) { $defLocType = CRM_Core_BAO_LocationType::getDefault(); $params['email'] = [ 1 => [ 'email' => $email, 'is_primary' => 1, - 'location_type_id' => ($defLocType->id) ? $defLocType->id : 1, + 'location_type_id' => $defLocType->id ?: 1, ], ]; } @@ -471,8 +472,7 @@ function civicrm_api3_contact_delete($params) { if ($skipUndelete && CRM_Financial_BAO_FinancialItem::checkContactPresent([$contactID], $error)) { throw new CRM_Core_Exception($error['_qf_default']); } - if (CRM_Contact_BAO_Contact::deleteContact($contactID, $restore, $skipUndelete, - CRM_Utils_Array::value('check_permissions', $params))) { + if (CRM_Contact_BAO_Contact::deleteContact($contactID, $restore, $skipUndelete, $params['check_permissions'] ?? FALSE)) { return civicrm_api3_create_success(); } throw new CRM_Core_Exception('Could not delete contact'); @@ -763,7 +763,7 @@ function civicrm_api3_contact_merge($params) { [], $params['mode'], FALSE, - CRM_Utils_Array::value('check_permissions', $params) + $params['check_permissions'] ?? FALSE )) != FALSE) { return civicrm_api3_create_success($result, $params); @@ -1204,9 +1204,9 @@ function civicrm_api3_contact_duplicatecheck($params) { $params['match'], $params['match']['contact_type'], $params['rule_type'] ?? '', - CRM_Utils_Array::value('exclude', $params, []), - CRM_Utils_Array::value('check_permissions', $params), - CRM_Utils_Array::value('dedupe_rule_id', $params) + $params['exclude'] ?? [], + $params['check_permissions'] ?? FALSE, + $params['dedupe_rule_id'] ?? NULL ); $values = []; if ($dupes && !empty($params['return'])) { diff --git a/civicrm/api/v3/ContributionPage.php b/civicrm/api/v3/ContributionPage.php index d744043f712240ef6cdf4e1c23f4c95a2b9e0767..a6649605bef2b5238bff883d14088366fe8bfffb 100644 --- a/civicrm/api/v3/ContributionPage.php +++ b/civicrm/api/v3/ContributionPage.php @@ -103,12 +103,23 @@ function civicrm_api3_contribution_page_validate($params) { // one being generated so we generate one first. $originalRequest = $_REQUEST; $qfKey = $_REQUEST['qfKey'] ?? NULL; + $_REQUEST['id'] = $params['id']; + $requestMethod = $_SERVER['REQUEST_METHOD'] ?? NULL; + // This is set to POST in a test - (probably cos we didn't have full form + // testing when it was written). It needs to be get for long enough to + // get past the constructor. + $_SERVER['REQUEST_METHOD'] = 'GET'; + $form = new CRM_Contribute_Form_Contribution_Main(); + $form->controller = new CRM_Contribute_Controller_Contribution(); + if ($requestMethod) { + $_SERVER['REQUEST_METHOD'] = $requestMethod; + } + $form->controller->setStateMachine(new CRM_Contribute_StateMachine_Contribution($form->controller)); + // The submitted values are on the Main form. + $_SESSION['_' . $form->controller->_name . '_container']['values']['Main'] = $params; if (!$qfKey) { - $_REQUEST['qfKey'] = CRM_Core_Key::get('CRM_Core_Controller', TRUE); + $_REQUEST['qfKey'] = CRM_Core_Key::get('CRM_Contribute_Controller_Contribution', TRUE); } - $form = new CRM_Contribute_Form_Contribution_Main(); - $form->controller = new CRM_Core_Controller(); - $form->set('id', $params['id']); $form->preProcess(); $errors = CRM_Contribute_Form_Contribution_Main::formRule($params, [], $form); if ($errors === TRUE) { diff --git a/civicrm/api/v3/CustomValue.php b/civicrm/api/v3/CustomValue.php index f2b7fb31945f9d69eb33350790eeb9a470d61e86..40feb5c6d557587a08421dc96ad74f8c1a912b52 100644 --- a/civicrm/api/v3/CustomValue.php +++ b/civicrm/api/v3/CustomValue.php @@ -120,7 +120,7 @@ function civicrm_api3_custom_value_get($params) { $getParams = [ 'entityID' => $params['entity_id'], - 'entityType' => CRM_Utils_Array::value('entity_table', $params, ''), + 'entityType' => $params['entity_table'] ?? '', ]; if (strstr($getParams['entityType'], 'civicrm_')) { $getParams['entityType'] = ucfirst(substr($getParams['entityType'], 8)); diff --git a/civicrm/api/v3/Cxn.php b/civicrm/api/v3/Cxn.php index 8c81f3c3944ea2047d18c06210930fa930a1c2e9..d306d24615524827ef305bdb5a3674d392355985 100644 --- a/civicrm/api/v3/Cxn.php +++ b/civicrm/api/v3/Cxn.php @@ -123,7 +123,7 @@ function civicrm_api3_cxn_unregister($params) { /** @var \Civi\Cxn\Rpc\RegistrationClient $client */ $client = \Civi::service('cxn_reg_client'); - list($cxnId, $result) = $client->unregister($appMeta, CRM_Utils_Array::value('force', $params, FALSE)); + [$cxnId, $result] = $client->unregister($appMeta, $params['force'] ?? FALSE); return $result; } diff --git a/civicrm/api/v3/Dedupe.php b/civicrm/api/v3/Dedupe.php index c83a3c46cc939ac92b5093a7fce2ba3e7223a758..bc070d81706aa06f563fdec00befd698dd1fe905 100644 --- a/civicrm/api/v3/Dedupe.php +++ b/civicrm/api/v3/Dedupe.php @@ -89,10 +89,10 @@ function civicrm_api3_dedupe_create($params) { function civicrm_api3_dedupe_getstatistics($params) { $stats = CRM_Dedupe_Merger::getMergeStats(CRM_Dedupe_Merger::getMergeCacheKeyString( $params['rule_group_id'], - CRM_Utils_Array::value('group_id', $params), - CRM_Utils_Array::value('criteria', $params, []), + $params['group_id'] ?? NULL, + $params['criteria'] ?? [], !empty($params['check_permissions']), - CRM_Utils_Array::value('search_limit', $params, 0) + $params['search_limit'] ?? 0 )); return civicrm_api3_create_success($stats); } @@ -139,7 +139,7 @@ function _civicrm_api3_dedupe_getstatistics_spec(&$params) { */ function civicrm_api3_dedupe_getduplicates($params) { $options = _civicrm_api3_get_options_from_params($params); - $dupePairs = CRM_Dedupe_Merger::getDuplicatePairs($params['rule_group_id'], NULL, TRUE, $options['limit'], FALSE, TRUE, $params['criteria'], CRM_Utils_Array::value('check_permissions', $params), CRM_Utils_Array::value('search_limit', $params, 0), CRM_Utils_Array::value('is_force_new_search', $params)); + $dupePairs = CRM_Dedupe_Merger::getDuplicatePairs($params['rule_group_id'], NULL, TRUE, $options['limit'], FALSE, TRUE, $params['criteria'], $params['check_permissions'] ?? FALSE, $params['search_limit'] ?? 0, $params['is_force_new_search'] ?? 0); return civicrm_api3_create_success($dupePairs); } diff --git a/civicrm/api/v3/EntityTag.php b/civicrm/api/v3/EntityTag.php index cfc212a32800dfc203a3b97252b64e07993be5c9..d50c1e35ccb2a686cd5e150321178212b33afb54 100644 --- a/civicrm/api/v3/EntityTag.php +++ b/civicrm/api/v3/EntityTag.php @@ -123,8 +123,7 @@ function _civicrm_api3_entity_tag_common($params, $op = 'add') { if ($op == 'add') { $values['total_count'] = $values['added'] = $values['not_added'] = 0; foreach ($tagIDs as $tagID) { - list($te, $a, $na) = CRM_Core_BAO_EntityTag::addEntitiesToTag($entityIDs, $tagID, $entityTable, - CRM_Utils_Array::value('check_permissions', $params)); + list($te, $a, $na) = CRM_Core_BAO_EntityTag::addEntitiesToTag($entityIDs, $tagID, $entityTable, $params['check_permissions'] ?? FALSE); $values['total_count'] += $te; $values['added'] += $a; $values['not_added'] += $na; @@ -133,7 +132,7 @@ function _civicrm_api3_entity_tag_common($params, $op = 'add') { else { $values['total_count'] = $values['removed'] = $values['not_removed'] = 0; foreach ($tagIDs as $tagID) { - list($te, $r, $nr) = CRM_Core_BAO_EntityTag::removeEntitiesFromTag($entityIDs, $tagID, $entityTable, CRM_Utils_Array::value('check_permissions', $params)); + list($te, $r, $nr) = CRM_Core_BAO_EntityTag::removeEntitiesFromTag($entityIDs, $tagID, $entityTable, $params['check_permissions'] ?? FALSE); $values['total_count'] += $te; $values['removed'] += $r; $values['not_removed'] += $nr; diff --git a/civicrm/api/v3/Extension.php b/civicrm/api/v3/Extension.php index d70fb5a050e6a0081f69aebe28ac7f1423343c86..27816121361331c495b58be7b7292968a347ee82 100644 --- a/civicrm/api/v3/Extension.php +++ b/civicrm/api/v3/Extension.php @@ -210,6 +210,7 @@ function _civicrm_api3_extension_uninstall_spec(&$fields) { * API result */ function civicrm_api3_extension_download($params) { + $params += ['install' => TRUE]; if (!array_key_exists('url', $params)) { if (!CRM_Extension_System::singleton()->getBrowser()->isEnabled()) { throw new CRM_Core_Exception('Automatic downloading is disabled. Try adding parameter "url"'); @@ -241,7 +242,7 @@ function civicrm_api3_extension_download($params) { } CRM_Extension_System::singleton()->getCache()->flush(); CRM_Extension_System::singleton(TRUE); - if (CRM_Utils_Array::value('install', $params, TRUE)) { + if ($params['install']) { CRM_Extension_System::singleton()->getManager()->install([$params['key']]); } @@ -387,7 +388,7 @@ function civicrm_api3_extension_getremote($params) { $info = array_merge($info, (array) $obj); $result[] = $info; } - return _civicrm_api3_basic_array_get('Extension', $params, $result, 'id', CRM_Utils_Array::value('return', $params, [])); + return _civicrm_api3_basic_array_get('Extension', $params, $result, 'id', $params['return'] ?? []); } /** diff --git a/civicrm/api/v3/Generic.php b/civicrm/api/v3/Generic.php index 85b44c5bc3c4bf72ae56e2d23b9d8395b6b6182d..46294f1067b4dae3431f0ea70b08b4a91a197c39 100644 --- a/civicrm/api/v3/Generic.php +++ b/civicrm/api/v3/Generic.php @@ -60,11 +60,11 @@ function civicrm_api3_generic_getfields($apiRequest, $unique = TRUE) { } $entity = $apiRequest['entity']; $lowercase_entity = _civicrm_api_get_entity_name_from_camel($entity); - $subentity = $apiRequest['params']['contact_type'] ?? NULL; + $subentity = $apiRequest['params']['contact_type'] ?? NULL; $action = $apiRequest['params']['action'] ?? NULL; $sequential = empty($apiRequest['params']['sequential']) ? 0 : 1; - $apiRequest['params']['options'] = CRM_Utils_Array::value('options', $apiRequest['params'], []); - $optionsToResolve = (array) CRM_Utils_Array::value('get_options', $apiRequest['params']['options'], []); + $apiRequest['params']['options'] = $apiRequest['params']['options'] ?? []; + $optionsToResolve = (array) ($apiRequest['params']['options']['get_options'] ?? []); if (!$action || $action == 'getvalue' || $action == 'getcount') { $action = 'get'; @@ -477,7 +477,7 @@ function _civicrm_api3_generic_getoptions_spec(&$params, $apiRequest) { $params['field']['options'] = []; foreach ($fields['values'] as $name => $field) { if (isset($field['pseudoconstant']) || CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_BOOLEAN) { - $params['field']['options'][$name] = CRM_Utils_Array::value('title', $field, $name); + $params['field']['options'][$name] = $field['title'] ?? $name; } } } diff --git a/civicrm/api/v3/Generic/Setvalue.php b/civicrm/api/v3/Generic/Setvalue.php index 9445a2862a55add48b11dc9b751e26260c9c0af7..4e1f5082efd3201f53f1fb58e0100b02d641798a 100644 --- a/civicrm/api/v3/Generic/Setvalue.php +++ b/civicrm/api/v3/Generic/Setvalue.php @@ -56,7 +56,7 @@ function civicrm_api3_generic_setValue($apiRequest) { } $def = $fields[$fieldKey]; - $title = CRM_Utils_Array::value('title', $def, ts('Field')); + $title = $def['title'] ?? ts('Field'); // Disallow empty values except for the number zero. // TODO: create a utility for this since it's needed in many places if (!empty($def['required']) || !empty($def['is_required'])) { diff --git a/civicrm/api/v3/GroupContact.php b/civicrm/api/v3/GroupContact.php index 1233cbff6c8ce9763054218b5d7d6244d9a04f1c..6db637d709116ab1c6afe9c4623a577b0d2986c7 100644 --- a/civicrm/api/v3/GroupContact.php +++ b/civicrm/api/v3/GroupContact.php @@ -50,7 +50,7 @@ function civicrm_api3_group_contact_get($params) { //ie. id passed in so we have to return something return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params); } - $status = CRM_Utils_Array::value('status', $params, 'Added'); + $status = $params['status'] ?? 'Added'; $groupId = $params['group_id'] ?? NULL; $values = CRM_Contact_BAO_GroupContact::getContactGroup($params['contact_id'], $status, NULL, FALSE, TRUE, FALSE, TRUE, $groupId); @@ -217,8 +217,8 @@ function _civicrm_api3_group_contact_common($params, $op = 'Added') { } } - $method = CRM_Utils_Array::value('method', $params, 'API'); - $status = CRM_Utils_Array::value('status', $params, $op); + $method = $params['method'] ?? 'API'; + $status = $params['status'] ?? $op; $tracking = $params['tracking'] ?? NULL; if ($op == 'Added' || $op == 'Pending') { @@ -274,9 +274,9 @@ function civicrm_api3_group_contact_update_status($params) { CRM_Contact_BAO_GroupContact::addContactsToGroup( [$params['contact_id']], $params['group_id'], - CRM_Utils_Array::value('method', $params, 'API'), + $params['method'] ?? 'API', 'Added', - CRM_Utils_Array::value('tracking', $params) + $params['tracking'] ?? NULL ); return TRUE; diff --git a/civicrm/api/v3/Job.php b/civicrm/api/v3/Job.php index 0303bc29ccc5abd0ff856dd918d537dd7cc5c304..6da5a32881074f78d4a506b17c94067071347d2d 100644 --- a/civicrm/api/v3/Job.php +++ b/civicrm/api/v3/Job.php @@ -535,11 +535,10 @@ function civicrm_api3_job_process_batch_merge($params) { 'options' => ['limit' => 1], ]); } - $rgid = $params['rgid'] ?? NULL; $gid = $params['gid'] ?? NULL; - $mode = CRM_Utils_Array::value('mode', $params, 'safe'); + $mode = $params['mode'] ?? 'safe'; - $result = CRM_Dedupe_Merger::batchMerge($rule_group_id, $gid, $mode, 1, 2, CRM_Utils_Array::value('criteria', $params, []), CRM_Utils_Array::value('check_permissions', $params), NULL, $params['search_limit']); + $result = CRM_Dedupe_Merger::batchMerge($rule_group_id, $gid, $mode, 1, 2, $params['criteria'] ?? [], $params['check_permissions'] ?? FALSE, NULL, $params['search_limit']); return civicrm_api3_create_success($result, $params); } @@ -622,15 +621,15 @@ function civicrm_api3_job_run_payment_cron($params) { * @return array */ function civicrm_api3_job_cleanup($params) { - $session = CRM_Utils_Array::value('session', $params, TRUE); - $tempTable = CRM_Utils_Array::value('tempTables', $params, TRUE); - $jobLog = CRM_Utils_Array::value('jobLog', $params, TRUE); - $expired = CRM_Utils_Array::value('expiredDbCache', $params, TRUE); - $prevNext = CRM_Utils_Array::value('prevNext', $params, TRUE); - $dbCache = CRM_Utils_Array::value('dbCache', $params, FALSE); - $memCache = CRM_Utils_Array::value('memCache', $params, FALSE); - $tplCache = CRM_Utils_Array::value('tplCache', $params, FALSE); - $wordRplc = CRM_Utils_Array::value('wordRplc', $params, FALSE); + $session = $params['session'] ?? TRUE; + $tempTable = $params['tempTables'] ?? TRUE; + $jobLog = $params['jobLog'] ?? TRUE; + $expired = $params['expiredDbCache'] ?? TRUE; + $prevNext = $params['prevNext'] ?? TRUE; + $dbCache = $params['dbCache'] ?? FALSE; + $memCache = $params['memCache'] ?? FALSE; + $tplCache = $params['tplCache'] ?? FALSE; + $wordRplc = $params['wordRplc'] ?? FALSE; if ($session || $tempTable || $prevNext || $expired) { CRM_Core_BAO_Cache::cleanup($session, $tempTable, $prevNext, $expired); diff --git a/civicrm/api/v3/LocBlock.php b/civicrm/api/v3/LocBlock.php index b8c1a2d6c62c1d2130b75cec7cea13b25171281d..84cbb2237571337d4e87ea2ad4c7898df83b38d7 100644 --- a/civicrm/api/v3/LocBlock.php +++ b/civicrm/api/v3/LocBlock.php @@ -54,7 +54,7 @@ function civicrm_api3_loc_block_create($params) { } // Bother calling the api. else { - $info['contact_id'] = CRM_Utils_Array::value('contact_id', $info, 'null'); + $info['contact_id'] = $info['contact_id'] ?? 'null'; $result = civicrm_api3($item, 'create', $info); $entities[$key] = $result['values'][$result['id']]; $params[$key . '_id'] = $result['id']; diff --git a/civicrm/api/v3/Logging.php b/civicrm/api/v3/Logging.php index 1401abbb1710ebfdf4af12ba8457911197002836..69d75bfc103fc4ebbba75f7508e85fe8b8eacc37 100644 --- a/civicrm/api/v3/Logging.php +++ b/civicrm/api/v3/Logging.php @@ -27,7 +27,7 @@ */ function civicrm_api3_logging_revert($params) { $schema = new CRM_Logging_Schema(); - $reverter = new CRM_Logging_Reverter($params['log_conn_id'], CRM_Utils_Array::value('log_date', $params)); + $reverter = new CRM_Logging_Reverter($params['log_conn_id'], $params['log_date'] ?? NULL); $tables = !empty($params['tables']) ? (array) $params['tables'] : $schema->getLogTablesForContact(); $reverter->calculateDiffsFromLogConnAndDate($tables); $reverter->revert(); @@ -79,7 +79,7 @@ function _civicrm_api3_logging_revert_spec(&$params) { function civicrm_api3_logging_get($params) { $schema = new CRM_Logging_Schema(); $interval = (empty($params['log_date'])) ? NULL : $params['interval']; - $differ = new CRM_Logging_Differ($params['log_conn_id'], CRM_Utils_Array::value('log_date', $params), $interval); + $differ = new CRM_Logging_Differ($params['log_conn_id'], $params['log_date'] ?? NULL, $interval); $tables = !empty($params['tables']) ? (array) $params['tables'] : $schema->getLogTablesForContact(); return civicrm_api3_create_success($differ->getAllChangesForConnection($tables)); } diff --git a/civicrm/api/v3/Mailing.php b/civicrm/api/v3/Mailing.php index bdc80f126c1c1a0d58d09ebecc142208b91e028a..c26d6b02e56c1b53de5412bfdded8cda581403de 100644 --- a/civicrm/api/v3/Mailing.php +++ b/civicrm/api/v3/Mailing.php @@ -294,7 +294,7 @@ function civicrm_api3_mailing_submit($params) { if (isset($params['approval_date'])) { $updateParams['approval_date'] = $params['approval_date']; $updateParams['approver_id'] = CRM_Core_Session::getLoggedInContactID(); - $updateParams['approval_status_id'] = CRM_Utils_Array::value('approval_status_id', $updateParams, CRM_Core_OptionGroup::getDefaultValue('mail_approval_status')); + $updateParams['approval_status_id'] = $updateParams['approval_status_id'] ?? CRM_Core_OptionGroup::getDefaultValue('mail_approval_status'); } if (isset($params['approval_note'])) { $updateParams['approval_note'] = $params['approval_note']; diff --git a/civicrm/api/v3/Membership.php b/civicrm/api/v3/Membership.php index 7cb21fee7da0aeca51d032faba6f4e3dbe856540..19588a01f1d1adc25df2e486eb39aa64323297b2 100644 --- a/civicrm/api/v3/Membership.php +++ b/civicrm/api/v3/Membership.php @@ -95,10 +95,10 @@ function civicrm_api3_membership_create($params) { // This is a new membership, calculate the membership dates. $calcDates = CRM_Member_BAO_MembershipType::getDatesForMembershipType( $params['membership_type_id'], - CRM_Utils_Array::value('join_date', $params), - CRM_Utils_Array::value('start_date', $params), - CRM_Utils_Array::value('end_date', $params), - CRM_Utils_Array::value('num_terms', $params, 1) + $params['join_date'] ?? NULL, + $params['start_date'] ?? NULL, + $params['end_date'] ?? NULL, + $params['num_terms'] ?? 1 ); } else { @@ -108,7 +108,7 @@ function civicrm_api3_membership_create($params) { $calcDates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType( $params['id'], NULL, - CRM_Utils_Array::value('membership_type_id', $params), + $params['membership_type_id'] ?? NULL, $params['num_terms'] ); } @@ -212,7 +212,7 @@ function civicrm_api3_membership_get($params) { $activeOnly = $params['filters']['is_current']; unset($params['filters']['is_current']); } - $activeOnly = CRM_Utils_Array::value('active_only', $params, $activeOnly); + $activeOnly = $params['active_only'] ?? $activeOnly; if ($activeOnly && empty($params['status_id'])) { $params['status_id'] = ['IN' => CRM_Member_BAO_MembershipStatus::getMembershipStatusCurrent()]; } @@ -269,7 +269,7 @@ function _civicrm_api3_membership_relationsship_get_customv2behaviour(&$params, $membershipValues[$membershipId]['relationship_name'] = $relationshipType->name_a_b; } - _civicrm_api3_custom_data_get($membershipValues[$membershipId], CRM_Utils_Array::value('check_permissions', $params), 'Membership', $membershipId, NULL, $values['membership_type_id']); + _civicrm_api3_custom_data_get($membershipValues[$membershipId], $params['check_permissions'] ?? FALSE, 'Membership', $membershipId, NULL, $values['membership_type_id']); } $members = $membershipValues; diff --git a/civicrm/api/v3/MembershipStatus.php b/civicrm/api/v3/MembershipStatus.php index 064c2f7d1f7f1c5d064790b28480d03b31878ae1..29d11265189012d03b83df720449d3204927e2c7 100644 --- a/civicrm/api/v3/MembershipStatus.php +++ b/civicrm/api/v3/MembershipStatus.php @@ -148,7 +148,7 @@ SELECT start_date, end_date, join_date, membership_type_id $dao = CRM_Core_DAO::executeQuery($query, $params); if ($dao->fetch()) { $membershipTypeID = empty($membershipParams['membership_type_id']) ? $dao->membership_type_id : $membershipParams['membership_type_id']; - $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dao->start_date, $dao->end_date, $dao->join_date, 'now', CRM_Utils_Array::value('ignore_admin_only', $membershipParams), $membershipTypeID, $membershipParams); + $result = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dao->start_date, $dao->end_date, $dao->join_date, 'now', $membershipParams['ignore_admin_only'] ?? FALSE, $membershipTypeID, $membershipParams); //make is error zero only when valid status found. if (!empty($result['id'])) { $result['is_error'] = 0; diff --git a/civicrm/api/v3/Participant.php b/civicrm/api/v3/Participant.php index e37625d8a9d478f3a8f6b45ef65ac8a03990314f..8f1076b61cb317503fbef3a8513e4d8cd266f95b 100644 --- a/civicrm/api/v3/Participant.php +++ b/civicrm/api/v3/Participant.php @@ -151,7 +151,7 @@ function civicrm_api3_participant_get($params) { $query->convertToPseudoNames($dao, FALSE, TRUE); $participant[$dao->participant_id] = $query->store($dao); //@todo - is this required - contribution & pledge use the same query but don't self-retrieve custom data - _civicrm_api3_custom_data_get($participant[$dao->participant_id], CRM_Utils_Array::value('check_permissions', $params), 'Participant', $dao->participant_id, NULL); + _civicrm_api3_custom_data_get($participant[$dao->participant_id], $params['check_permissions'] ?? FALSE, 'Participant', $dao->participant_id, NULL); } return civicrm_api3_create_success($participant, $params, 'Participant', 'get', $dao); diff --git a/civicrm/api/v3/Profile.php b/civicrm/api/v3/Profile.php index c9c0af59604a1130ec0afb6a1d3e6deeba82686f..202ca7fc41c8acbc228dee0ec3696f7ecb2eb18c 100644 --- a/civicrm/api/v3/Profile.php +++ b/civicrm/api/v3/Profile.php @@ -81,7 +81,7 @@ function civicrm_api3_profile_get($params) { $contactFields = $activityFields = []; foreach ($profileFields as $fieldName => $field) { - if (CRM_Utils_Array::value('field_type', $field) == 'Activity') { + if (($field['field_type'] ?? NULL) === 'Activity') { $activityFields[$fieldName] = $field; } else { @@ -244,7 +244,7 @@ function civicrm_api3_profile_submit($params) { ]; } - $contactParams['contact_id'] = empty($params['contact_id']) ? CRM_Utils_Array::value('id', $params) : $params['contact_id']; + $contactParams['contact_id'] = empty($params['contact_id']) ? ($params['id'] ?? NULL) : $params['contact_id']; $contactParams['profile_id'] = $profileID; $contactParams['skip_custom'] = 1; @@ -298,7 +298,7 @@ function _civicrm_api3_profile_submit_spec(&$params, $apirequest) { // we don't resolve state, country & county for performance reasons $resolveOptions = ($apirequest['params']['get_options'] ?? NULL) == 'all'; $profileID = _civicrm_api3_profile_getProfileID($apirequest['params']['profile_id']); - $params = _civicrm_api3_buildprofile_submitfields($profileID, $resolveOptions, CRM_Utils_Array::value('cache_clear', $params)); + $params = _civicrm_api3_buildprofile_submitfields($profileID, $resolveOptions, $params['cache_clear'] ?? FALSE); } elseif (isset($apirequest['params']['cache_clear'])) { _civicrm_api3_buildprofile_submitfields(FALSE, FALSE, TRUE); @@ -360,10 +360,10 @@ function civicrm_api3_profile_apply($params) { list($data, $contactDetails) = CRM_Contact_BAO_Contact::formatProfileContactParams($params, $profileFields, - CRM_Utils_Array::value('contact_id', $params), + $params['contact_id'] ?? NULL, $params['profile_id'], - CRM_Utils_Array::value('contact_type', $params), - CRM_Utils_Array::value('skip_custom', $params, FALSE) + $params['contact_type'] ?? NULL, + $params['skip_custom'] ?? FALSE ); if (empty($data)) { diff --git a/civicrm/api/v3/Setting.php b/civicrm/api/v3/Setting.php index 2420e6586599ae45f7bcccfd09fcd2e2f1e91605..a2c422bb710481c57896d7e5b0805a13ca33ec1a 100644 --- a/civicrm/api/v3/Setting.php +++ b/civicrm/api/v3/Setting.php @@ -45,10 +45,10 @@ function civicrm_api3_setting_getfields($params) { $params['filters']['name'] = $params['name']; } $result = CRM_Core_BAO_Setting::getSettingSpecification( - CRM_Utils_Array::value('component_id', $params), - CRM_Utils_Array::value('filters', $params, []), - CRM_Utils_Array::value('domain_id', $params, NULL), - CRM_Utils_Array::value('profile', $params, NULL) + $params['component_id'] ?? NULL, + $params['filters'] ?? [], + $params['domain_id'] ?? NULL, + $params['profile'] ?? NULL ); // find any supplemental information if (!empty($params['action'])) { @@ -296,7 +296,7 @@ function _civicrm_api3_setting_create_spec(&$params) { */ function civicrm_api3_setting_get($params) { $domains = _civicrm_api3_setting_getDomainArray($params); - $result = CRM_Core_BAO_Setting::getItems($params, $domains, CRM_Utils_Array::value('return', $params, [])); + $result = CRM_Core_BAO_Setting::getItems($params, $domains, $params['return'] ?? []); return civicrm_api3_create_success($result, $params, 'Setting', 'get'); } @@ -338,11 +338,11 @@ function civicrm_api3_setting_getvalue($params) { //} return CRM_Core_BAO_Setting::getItem( NULL, - CRM_Utils_Array::value('name', $params), - CRM_Utils_Array::value('component_id', $params), - CRM_Utils_Array::value('default_value', $params), - CRM_Utils_Array::value('contact_id', $params), - CRM_Utils_Array::value('domain_id', $params) + $params['name'] ?? NULL, + $params['component_id'] ?? NULL, + $params['default_value'] ?? NULL, + $params['contact_id'] ?? NULL, + $params['domain_id'] ?? NULL ); } diff --git a/civicrm/api/v3/System.php b/civicrm/api/v3/System.php index 9ce36d94cfa0f8c63d2b9b10058289aaae7fc025..63078987fa5257191a397d38aeb14b74368e78a2 100644 --- a/civicrm/api/v3/System.php +++ b/civicrm/api/v3/System.php @@ -29,8 +29,8 @@ */ function civicrm_api3_system_flush($params) { CRM_Core_Invoke::rebuildMenuAndCaches( - CRM_Utils_Array::value('triggers', $params, FALSE), - CRM_Utils_Array::value('session', $params, FALSE) + $params['triggers'] ?? FALSE, + $params['session'] ?? FALSE ); return civicrm_api3_create_success(); } diff --git a/civicrm/api/v3/Tag.php b/civicrm/api/v3/Tag.php index 89bc9070cef18cf9858202a4c3aa2ba6c4c9ce65..57434e43415180b6e4b85b4ef78e2fa4d60268ec 100644 --- a/civicrm/api/v3/Tag.php +++ b/civicrm/api/v3/Tag.php @@ -45,7 +45,6 @@ function civicrm_api3_tag_create($params) { */ function _civicrm_api3_tag_create_spec(&$params) { $params['used_for']['api.default'] = 'civicrm_contact'; - $params['name']['api.required'] = 1; $params['id']['api.aliases'] = ['tag']; } diff --git a/civicrm/api/v3/utils.php b/civicrm/api/v3/utils.php index 7dff36515b28ecd0e17253febd8715135ab99f67..189b6efdd60aa8dbf64db54092799c15f206984c 100644 --- a/civicrm/api/v3/utils.php +++ b/civicrm/api/v3/utils.php @@ -497,12 +497,12 @@ function _civicrm_api3_get_using_query_object($entity, $params, $additional_opti $options = _civicrm_api3_get_options_from_params($params, TRUE); $inputParams = array_merge( - CRM_Utils_Array::value('input_params', $options, []), - CRM_Utils_Array::value('input_params', $additional_options, []) + $options['input_params'] ?? [], + $additional_options['input_params'] ?? [] ); $returnProperties = array_merge( - CRM_Utils_Array::value('return', $options, []), - CRM_Utils_Array::value('return', $additional_options, []) + $options['return'] ?? [], + $additional_options['return'] ?? [] ); if (empty($returnProperties)) { $returnProperties = $defaultReturnProperties; @@ -579,7 +579,7 @@ function _civicrm_api3_get_query_object($params, $mode, $entity) { $sort = $options['sort'] ?? NULL; $offset = $options['offset'] ?? NULL; $rowCount = $options['limit'] ?? NULL; - $inputParams = CRM_Utils_Array::value('input_params', $options, []); + $inputParams = $options['input_params'] ?? []; $returnProperties = $options['return'] ?? NULL; if (empty($returnProperties)) { $returnProperties = CRM_Contribute_BAO_Query::defaultReturnProperties($mode); @@ -767,15 +767,15 @@ function _civicrm_api3_get_options_from_params($params, $queryObject = FALSE, $e $sort = $params['option_sort'] ?? $params['option.sort'] ?? $params['sort'] ?? 0; $offset = $params['option_offset'] ?? $params['option.offset'] ?? $params['offset'] ?? 0; - $limit = CRM_Utils_Array::value('rowCount', $params, 25); - $limit = CRM_Utils_Array::value('option.limit', $params, $limit); - $limit = CRM_Utils_Array::value('option_limit', $params, $limit); + $limit = $params['rowCount'] ?? 25; + $limit = $params['option.limit'] ?? $limit; + $limit = $params['option_limit'] ?? $limit; if (isset($params['options']) && is_array($params['options'])) { // is count is set by generic getcount not user $is_count = $params['options']['is_count'] ?? FALSE; $offset = $params['options']['offset'] ?? $offset; - $limit = CRM_Utils_Array::value('limit', $params['options'], $limit); + $limit = $params['options']['limit'] ?? $limit; $sort = $params['options']['sort'] ?? $sort; } @@ -931,7 +931,7 @@ function _civicrm_api3_build_fields_array(&$bao, $unique = TRUE) { function _civicrm_api3_get_unique_name_array(&$bao) { $fields = $bao->fields(); foreach ($fields as $field => $values) { - $uniqueFields[$field] = CRM_Utils_Array::value('name', $values, $field); + $uniqueFields[$field] = $values['name'] ?? $field; } return $uniqueFields; } @@ -1694,7 +1694,7 @@ function _civicrm_api3_validate_date(&$params, &$fieldName, &$fieldInfo) { if (!empty($params[$fieldInfo['name']])) { $fieldValue = _civicrm_api3_getValidDate($fieldValue, $fieldInfo['name'], $fieldInfo['type']); } - if ((CRM_Utils_Array::value('name', $fieldInfo) != $fieldName) && !empty($fieldValue)) { + if (($fieldInfo['name'] ?? NULL) !== $fieldName && !empty($fieldValue)) { $fieldValue = _civicrm_api3_getValidDate($fieldValue, $fieldName, $fieldInfo['type']); } @@ -1975,7 +1975,7 @@ function _civicrm_api_get_custom_fields($entity, &$params) { FALSE, FALSE, // we could / should probably test for other subtypes here - e.g. activity_type_id - CRM_Utils_Array::value('contact_sub_type', $params), + $params['contact_sub_type'] ?? NULL, NULL, FALSE, FALSE, @@ -1988,7 +1988,7 @@ function _civicrm_api_get_custom_fields($entity, &$params) { // Regular fields have a 'name' property $value['name'] = 'custom_' . $key; $value['title'] = $value['label']; - if ($value['data_type'] == 'Date' && CRM_Utils_Array::value('time_format', $value, 0) > 0) { + if ($value['data_type'] == 'Date' && ($value['time_format'] ?? 0) > 0) { $value['data_type'] = 'DateTime'; } $value['type'] = CRM_Utils_Array::value($value['data_type'], CRM_Core_BAO_CustomField::dataToType()); @@ -2317,7 +2317,7 @@ function _civicrm_api3_api_match_pseudoconstant(&$fieldValue, $entity, $fieldNam } $options = civicrm_api($entity, 'getoptions', $options_lookup_params); - $options = CRM_Utils_Array::value('values', $options, []); + $options = $options['values'] ?? []; } if (is_string($fieldValue) && strpos($fieldValue, CRM_Core_DAO::VALUE_SEPARATOR) !== FALSE) { @@ -2327,12 +2327,12 @@ function _civicrm_api3_api_match_pseudoconstant(&$fieldValue, $entity, $fieldNam if (is_array($fieldValue)) { foreach ($fieldValue as &$value) { if (!is_array($value)) { - _civicrm_api3_api_match_pseudoconstant_value($value, $options, $fieldName, CRM_Utils_Array::value('api.required', $fieldInfo)); + _civicrm_api3_api_match_pseudoconstant_value($value, $options, $fieldName, $fieldInfo['api.required'] ?? FALSE); } } } else { - _civicrm_api3_api_match_pseudoconstant_value($fieldValue, $options, $fieldName, CRM_Utils_Array::value('api.required', $fieldInfo)); + _civicrm_api3_api_match_pseudoconstant_value($fieldValue, $options, $fieldName, $fieldInfo['api.required'] ?? FALSE); } } @@ -2439,10 +2439,10 @@ function _civicrm_api3_api_resolve_alias($entity, $fieldName, $action = 'create' return $meta[$fieldName]['name']; } foreach ($meta as $info) { - if ($fieldName == $info['name'] || $fieldName == CRM_Utils_Array::value('uniqueName', $info)) { + if ($fieldName == $info['name'] || $fieldName == ($info['uniqueName'] ?? NULL)) { return $info['name']; } - if (array_search($fieldName, CRM_Utils_Array::value('api.aliases', $info, [])) !== FALSE) { + if (array_search($fieldName, $info['api.aliases'] ?? []) !== FALSE) { return $info['name']; } } @@ -2615,7 +2615,7 @@ function _civicrm_api3_basic_array_get($entity, $params, $records, $idCol, $filt } } - $return = CRM_Utils_Array::value('return', $options, []); + $return = $options['return'] ?? []; if (!empty($return)) { $return['id'] = 1; $matches = CRM_Utils_Array::filterColumns($matches, array_keys($return)); diff --git a/civicrm/bower_components/es6-promise/.composer-downloads/es6-promise-60df2490a63990439db23398a56349b2.json b/civicrm/bower_components/es6-promise/.composer-downloads/es6-promise-60df2490a63990439db23398a56349b2.json deleted file mode 100644 index 9ae139f2faf0b4db26342db2152feaf905d3983d..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/.composer-downloads/es6-promise-60df2490a63990439db23398a56349b2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "civicrm/civicrm-core:es6-promise", - "url": "https://github.com/components/es6-promise/archive/v4.2.4.zip", - "checksum": "383cbddf53fc4153a2bae1ead8b25d03e86997d09e9f7e4622de6b8a85fe07fc", - "ignore": null -} \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/bower.json b/civicrm/bower_components/es6-promise/bower.json deleted file mode 100644 index cd7f4085f616f4bae73e4549ae5868084a525092..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/bower.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "es6-promise", - "namespace": "Promise", - "description": "A polyfill for ES6-style Promises, tracking rsvp", - "authors": [ - "Stefan Penner <stefan.penner@gmail.com>" - ], - "main": "./es6-promise.js", - "keywords": [ - "promise" - ], - "repository": { - "type": "git", - "url": "git://github.com/stefanpenner/es6-promise.git" - }, - "bugs": { - "url": "https://github.com/stefanpenner/es6-promise/issues" - }, - "license": "MIT" -} diff --git a/civicrm/bower_components/es6-promise/es6-promise.auto.js b/civicrm/bower_components/es6-promise/es6-promise.auto.js deleted file mode 100644 index 30d01304f0a4acddd8020bc5a449c87e1e5c151a..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.auto.js +++ /dev/null @@ -1,1181 +0,0 @@ -/*! - * @overview es6-promise - a tiny implementation of Promises/A+. - * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) - * @license Licensed under MIT license - * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE - * @version v4.2.4+314e4831 - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.ES6Promise = factory()); -}(this, (function () { 'use strict'; - -function objectOrFunction(x) { - var type = typeof x; - return x !== null && (type === 'object' || type === 'function'); -} - -function isFunction(x) { - return typeof x === 'function'; -} - - - -var _isArray = void 0; -if (Array.isArray) { - _isArray = Array.isArray; -} else { - _isArray = function (x) { - return Object.prototype.toString.call(x) === '[object Array]'; - }; -} - -var isArray = _isArray; - -var len = 0; -var vertxNext = void 0; -var customSchedulerFn = void 0; - -var asap = function asap(callback, arg) { - queue[len] = callback; - queue[len + 1] = arg; - len += 2; - if (len === 2) { - // If len is 2, that means that we need to schedule an async flush. - // If additional callbacks are queued before the queue is flushed, they - // will be processed by this flush that we are scheduling. - if (customSchedulerFn) { - customSchedulerFn(flush); - } else { - scheduleFlush(); - } - } -}; - -function setScheduler(scheduleFn) { - customSchedulerFn = scheduleFn; -} - -function setAsap(asapFn) { - asap = asapFn; -} - -var browserWindow = typeof window !== 'undefined' ? window : undefined; -var browserGlobal = browserWindow || {}; -var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; -var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; - -// test for web worker but not in IE10 -var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; - -// node -function useNextTick() { - // node version 0.10.x displays a deprecation warning when nextTick is used recursively - // see https://github.com/cujojs/when/issues/410 for details - return function () { - return process.nextTick(flush); - }; -} - -// vertx -function useVertxTimer() { - if (typeof vertxNext !== 'undefined') { - return function () { - vertxNext(flush); - }; - } - - return useSetTimeout(); -} - -function useMutationObserver() { - var iterations = 0; - var observer = new BrowserMutationObserver(flush); - var node = document.createTextNode(''); - observer.observe(node, { characterData: true }); - - return function () { - node.data = iterations = ++iterations % 2; - }; -} - -// web worker -function useMessageChannel() { - var channel = new MessageChannel(); - channel.port1.onmessage = flush; - return function () { - return channel.port2.postMessage(0); - }; -} - -function useSetTimeout() { - // Store setTimeout reference so es6-promise will be unaffected by - // other code modifying setTimeout (like sinon.useFakeTimers()) - var globalSetTimeout = setTimeout; - return function () { - return globalSetTimeout(flush, 1); - }; -} - -var queue = new Array(1000); -function flush() { - for (var i = 0; i < len; i += 2) { - var callback = queue[i]; - var arg = queue[i + 1]; - - callback(arg); - - queue[i] = undefined; - queue[i + 1] = undefined; - } - - len = 0; -} - -function attemptVertx() { - try { - var vertx = Function('return this')().require('vertx'); - vertxNext = vertx.runOnLoop || vertx.runOnContext; - return useVertxTimer(); - } catch (e) { - return useSetTimeout(); - } -} - -var scheduleFlush = void 0; -// Decide what async method to use to triggering processing of queued callbacks: -if (isNode) { - scheduleFlush = useNextTick(); -} else if (BrowserMutationObserver) { - scheduleFlush = useMutationObserver(); -} else if (isWorker) { - scheduleFlush = useMessageChannel(); -} else if (browserWindow === undefined && typeof require === 'function') { - scheduleFlush = attemptVertx(); -} else { - scheduleFlush = useSetTimeout(); -} - -function then(onFulfillment, onRejection) { - var parent = this; - - var child = new this.constructor(noop); - - if (child[PROMISE_ID] === undefined) { - makePromise(child); - } - - var _state = parent._state; - - - if (_state) { - var callback = arguments[_state - 1]; - asap(function () { - return invokeCallback(_state, child, callback, parent._result); - }); - } else { - subscribe(parent, child, onFulfillment, onRejection); - } - - return child; -} - -/** - `Promise.resolve` returns a promise that will become resolved with the - passed `value`. It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - resolve(1); - }); - - promise.then(function(value){ - // value === 1 - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.resolve(1); - - promise.then(function(value){ - // value === 1 - }); - ``` - - @method resolve - @static - @param {Any} value value that the returned promise will be resolved with - Useful for tooling. - @return {Promise} a promise that will become fulfilled with the given - `value` -*/ -function resolve$1(object) { - /*jshint validthis:true */ - var Constructor = this; - - if (object && typeof object === 'object' && object.constructor === Constructor) { - return object; - } - - var promise = new Constructor(noop); - resolve(promise, object); - return promise; -} - -var PROMISE_ID = Math.random().toString(36).substring(2); - -function noop() {} - -var PENDING = void 0; -var FULFILLED = 1; -var REJECTED = 2; - -var TRY_CATCH_ERROR = { error: null }; - -function selfFulfillment() { - return new TypeError("You cannot resolve a promise with itself"); -} - -function cannotReturnOwn() { - return new TypeError('A promises callback cannot return that same promise.'); -} - -function getThen(promise) { - try { - return promise.then; - } catch (error) { - TRY_CATCH_ERROR.error = error; - return TRY_CATCH_ERROR; - } -} - -function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) { - try { - then$$1.call(value, fulfillmentHandler, rejectionHandler); - } catch (e) { - return e; - } -} - -function handleForeignThenable(promise, thenable, then$$1) { - asap(function (promise) { - var sealed = false; - var error = tryThen(then$$1, thenable, function (value) { - if (sealed) { - return; - } - sealed = true; - if (thenable !== value) { - resolve(promise, value); - } else { - fulfill(promise, value); - } - }, function (reason) { - if (sealed) { - return; - } - sealed = true; - - reject(promise, reason); - }, 'Settle: ' + (promise._label || ' unknown promise')); - - if (!sealed && error) { - sealed = true; - reject(promise, error); - } - }, promise); -} - -function handleOwnThenable(promise, thenable) { - if (thenable._state === FULFILLED) { - fulfill(promise, thenable._result); - } else if (thenable._state === REJECTED) { - reject(promise, thenable._result); - } else { - subscribe(thenable, undefined, function (value) { - return resolve(promise, value); - }, function (reason) { - return reject(promise, reason); - }); - } -} - -function handleMaybeThenable(promise, maybeThenable, then$$1) { - if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) { - handleOwnThenable(promise, maybeThenable); - } else { - if (then$$1 === TRY_CATCH_ERROR) { - reject(promise, TRY_CATCH_ERROR.error); - TRY_CATCH_ERROR.error = null; - } else if (then$$1 === undefined) { - fulfill(promise, maybeThenable); - } else if (isFunction(then$$1)) { - handleForeignThenable(promise, maybeThenable, then$$1); - } else { - fulfill(promise, maybeThenable); - } - } -} - -function resolve(promise, value) { - if (promise === value) { - reject(promise, selfFulfillment()); - } else if (objectOrFunction(value)) { - handleMaybeThenable(promise, value, getThen(value)); - } else { - fulfill(promise, value); - } -} - -function publishRejection(promise) { - if (promise._onerror) { - promise._onerror(promise._result); - } - - publish(promise); -} - -function fulfill(promise, value) { - if (promise._state !== PENDING) { - return; - } - - promise._result = value; - promise._state = FULFILLED; - - if (promise._subscribers.length !== 0) { - asap(publish, promise); - } -} - -function reject(promise, reason) { - if (promise._state !== PENDING) { - return; - } - promise._state = REJECTED; - promise._result = reason; - - asap(publishRejection, promise); -} - -function subscribe(parent, child, onFulfillment, onRejection) { - var _subscribers = parent._subscribers; - var length = _subscribers.length; - - - parent._onerror = null; - - _subscribers[length] = child; - _subscribers[length + FULFILLED] = onFulfillment; - _subscribers[length + REJECTED] = onRejection; - - if (length === 0 && parent._state) { - asap(publish, parent); - } -} - -function publish(promise) { - var subscribers = promise._subscribers; - var settled = promise._state; - - if (subscribers.length === 0) { - return; - } - - var child = void 0, - callback = void 0, - detail = promise._result; - - for (var i = 0; i < subscribers.length; i += 3) { - child = subscribers[i]; - callback = subscribers[i + settled]; - - if (child) { - invokeCallback(settled, child, callback, detail); - } else { - callback(detail); - } - } - - promise._subscribers.length = 0; -} - -function tryCatch(callback, detail) { - try { - return callback(detail); - } catch (e) { - TRY_CATCH_ERROR.error = e; - return TRY_CATCH_ERROR; - } -} - -function invokeCallback(settled, promise, callback, detail) { - var hasCallback = isFunction(callback), - value = void 0, - error = void 0, - succeeded = void 0, - failed = void 0; - - if (hasCallback) { - value = tryCatch(callback, detail); - - if (value === TRY_CATCH_ERROR) { - failed = true; - error = value.error; - value.error = null; - } else { - succeeded = true; - } - - if (promise === value) { - reject(promise, cannotReturnOwn()); - return; - } - } else { - value = detail; - succeeded = true; - } - - if (promise._state !== PENDING) { - // noop - } else if (hasCallback && succeeded) { - resolve(promise, value); - } else if (failed) { - reject(promise, error); - } else if (settled === FULFILLED) { - fulfill(promise, value); - } else if (settled === REJECTED) { - reject(promise, value); - } -} - -function initializePromise(promise, resolver) { - try { - resolver(function resolvePromise(value) { - resolve(promise, value); - }, function rejectPromise(reason) { - reject(promise, reason); - }); - } catch (e) { - reject(promise, e); - } -} - -var id = 0; -function nextId() { - return id++; -} - -function makePromise(promise) { - promise[PROMISE_ID] = id++; - promise._state = undefined; - promise._result = undefined; - promise._subscribers = []; -} - -function validationError() { - return new Error('Array Methods must be provided an Array'); -} - -var Enumerator = function () { - function Enumerator(Constructor, input) { - this._instanceConstructor = Constructor; - this.promise = new Constructor(noop); - - if (!this.promise[PROMISE_ID]) { - makePromise(this.promise); - } - - if (isArray(input)) { - this.length = input.length; - this._remaining = input.length; - - this._result = new Array(this.length); - - if (this.length === 0) { - fulfill(this.promise, this._result); - } else { - this.length = this.length || 0; - this._enumerate(input); - if (this._remaining === 0) { - fulfill(this.promise, this._result); - } - } - } else { - reject(this.promise, validationError()); - } - } - - Enumerator.prototype._enumerate = function _enumerate(input) { - for (var i = 0; this._state === PENDING && i < input.length; i++) { - this._eachEntry(input[i], i); - } - }; - - Enumerator.prototype._eachEntry = function _eachEntry(entry, i) { - var c = this._instanceConstructor; - var resolve$$1 = c.resolve; - - - if (resolve$$1 === resolve$1) { - var _then = getThen(entry); - - if (_then === then && entry._state !== PENDING) { - this._settledAt(entry._state, i, entry._result); - } else if (typeof _then !== 'function') { - this._remaining--; - this._result[i] = entry; - } else if (c === Promise$2) { - var promise = new c(noop); - handleMaybeThenable(promise, entry, _then); - this._willSettleAt(promise, i); - } else { - this._willSettleAt(new c(function (resolve$$1) { - return resolve$$1(entry); - }), i); - } - } else { - this._willSettleAt(resolve$$1(entry), i); - } - }; - - Enumerator.prototype._settledAt = function _settledAt(state, i, value) { - var promise = this.promise; - - - if (promise._state === PENDING) { - this._remaining--; - - if (state === REJECTED) { - reject(promise, value); - } else { - this._result[i] = value; - } - } - - if (this._remaining === 0) { - fulfill(promise, this._result); - } - }; - - Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) { - var enumerator = this; - - subscribe(promise, undefined, function (value) { - return enumerator._settledAt(FULFILLED, i, value); - }, function (reason) { - return enumerator._settledAt(REJECTED, i, reason); - }); - }; - - return Enumerator; -}(); - -/** - `Promise.all` accepts an array of promises, and returns a new promise which - is fulfilled with an array of fulfillment values for the passed promises, or - rejected with the reason of the first passed promise to be rejected. It casts all - elements of the passed iterable to promises as it runs this algorithm. - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = resolve(2); - let promise3 = resolve(3); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // The array here would be [ 1, 2, 3 ]; - }); - ``` - - If any of the `promises` given to `all` are rejected, the first promise - that is rejected will be given as an argument to the returned promises's - rejection handler. For example: - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = reject(new Error("2")); - let promise3 = reject(new Error("3")); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // Code here never runs because there are rejected promises! - }, function(error) { - // error.message === "2" - }); - ``` - - @method all - @static - @param {Array} entries array of promises - @param {String} label optional string for labeling the promise. - Useful for tooling. - @return {Promise} promise that is fulfilled when all `promises` have been - fulfilled, or rejected if any of them become rejected. - @static -*/ -function all(entries) { - return new Enumerator(this, entries).promise; -} - -/** - `Promise.race` returns a new promise which is settled in the same way as the - first passed promise to settle. - - Example: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 2'); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // result === 'promise 2' because it was resolved before promise1 - // was resolved. - }); - ``` - - `Promise.race` is deterministic in that only the state of the first - settled promise matters. For example, even if other promises given to the - `promises` array argument are resolved, but the first settled promise has - become rejected before the other promises became fulfilled, the returned - promise will become rejected: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - reject(new Error('promise 2')); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // Code here never runs - }, function(reason){ - // reason.message === 'promise 2' because promise 2 became rejected before - // promise 1 became fulfilled - }); - ``` - - An example real-world use case is implementing timeouts: - - ```javascript - Promise.race([ajax('foo.json'), timeout(5000)]) - ``` - - @method race - @static - @param {Array} promises array of promises to observe - Useful for tooling. - @return {Promise} a promise which settles in the same way as the first passed - promise to settle. -*/ -function race(entries) { - /*jshint validthis:true */ - var Constructor = this; - - if (!isArray(entries)) { - return new Constructor(function (_, reject) { - return reject(new TypeError('You must pass an array to race.')); - }); - } else { - return new Constructor(function (resolve, reject) { - var length = entries.length; - for (var i = 0; i < length; i++) { - Constructor.resolve(entries[i]).then(resolve, reject); - } - }); - } -} - -/** - `Promise.reject` returns a promise rejected with the passed `reason`. - It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - reject(new Error('WHOOPS')); - }); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.reject(new Error('WHOOPS')); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - @method reject - @static - @param {Any} reason value that the returned promise will be rejected with. - Useful for tooling. - @return {Promise} a promise rejected with the given `reason`. -*/ -function reject$1(reason) { - /*jshint validthis:true */ - var Constructor = this; - var promise = new Constructor(noop); - reject(promise, reason); - return promise; -} - -function needsResolver() { - throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); -} - -function needsNew() { - throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); -} - -/** - Promise objects represent the eventual result of an asynchronous operation. The - primary way of interacting with a promise is through its `then` method, which - registers callbacks to receive either a promise's eventual value or the reason - why the promise cannot be fulfilled. - - Terminology - ----------- - - - `promise` is an object or function with a `then` method whose behavior conforms to this specification. - - `thenable` is an object or function that defines a `then` method. - - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). - - `exception` is a value that is thrown using the throw statement. - - `reason` is a value that indicates why a promise was rejected. - - `settled` the final resting state of a promise, fulfilled or rejected. - - A promise can be in one of three states: pending, fulfilled, or rejected. - - Promises that are fulfilled have a fulfillment value and are in the fulfilled - state. Promises that are rejected have a rejection reason and are in the - rejected state. A fulfillment value is never a thenable. - - Promises can also be said to *resolve* a value. If this value is also a - promise, then the original promise's settled state will match the value's - settled state. So a promise that *resolves* a promise that rejects will - itself reject, and a promise that *resolves* a promise that fulfills will - itself fulfill. - - - Basic Usage: - ------------ - - ```js - let promise = new Promise(function(resolve, reject) { - // on success - resolve(value); - - // on failure - reject(reason); - }); - - promise.then(function(value) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Advanced Usage: - --------------- - - Promises shine when abstracting away asynchronous interactions such as - `XMLHttpRequest`s. - - ```js - function getJSON(url) { - return new Promise(function(resolve, reject){ - let xhr = new XMLHttpRequest(); - - xhr.open('GET', url); - xhr.onreadystatechange = handler; - xhr.responseType = 'json'; - xhr.setRequestHeader('Accept', 'application/json'); - xhr.send(); - - function handler() { - if (this.readyState === this.DONE) { - if (this.status === 200) { - resolve(this.response); - } else { - reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); - } - } - }; - }); - } - - getJSON('/posts.json').then(function(json) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Unlike callbacks, promises are great composable primitives. - - ```js - Promise.all([ - getJSON('/posts'), - getJSON('/comments') - ]).then(function(values){ - values[0] // => postsJSON - values[1] // => commentsJSON - - return values; - }); - ``` - - @class Promise - @param {Function} resolver - Useful for tooling. - @constructor -*/ - -var Promise$2 = function () { - function Promise(resolver) { - this[PROMISE_ID] = nextId(); - this._result = this._state = undefined; - this._subscribers = []; - - if (noop !== resolver) { - typeof resolver !== 'function' && needsResolver(); - this instanceof Promise ? initializePromise(this, resolver) : needsNew(); - } - } - - /** - The primary way of interacting with a promise is through its `then` method, - which registers callbacks to receive either a promise's eventual value or the - reason why the promise cannot be fulfilled. - ```js - findUser().then(function(user){ - // user is available - }, function(reason){ - // user is unavailable, and you are given the reason why - }); - ``` - Chaining - -------- - The return value of `then` is itself a promise. This second, 'downstream' - promise is resolved with the return value of the first promise's fulfillment - or rejection handler, or rejected if the handler throws an exception. - ```js - findUser().then(function (user) { - return user.name; - }, function (reason) { - return 'default name'; - }).then(function (userName) { - // If `findUser` fulfilled, `userName` will be the user's name, otherwise it - // will be `'default name'` - }); - findUser().then(function (user) { - throw new Error('Found user, but still unhappy'); - }, function (reason) { - throw new Error('`findUser` rejected and we're unhappy'); - }).then(function (value) { - // never reached - }, function (reason) { - // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. - // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. - }); - ``` - If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. - ```js - findUser().then(function (user) { - throw new PedagogicalException('Upstream error'); - }).then(function (value) { - // never reached - }).then(function (value) { - // never reached - }, function (reason) { - // The `PedgagocialException` is propagated all the way down to here - }); - ``` - Assimilation - ------------ - Sometimes the value you want to propagate to a downstream promise can only be - retrieved asynchronously. This can be achieved by returning a promise in the - fulfillment or rejection handler. The downstream promise will then be pending - until the returned promise is settled. This is called *assimilation*. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // The user's comments are now available - }); - ``` - If the assimliated promise rejects, then the downstream promise will also reject. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // If `findCommentsByAuthor` fulfills, we'll have the value here - }, function (reason) { - // If `findCommentsByAuthor` rejects, we'll have the reason here - }); - ``` - Simple Example - -------------- - Synchronous Example - ```javascript - let result; - try { - result = findResult(); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - findResult(function(result, err){ - if (err) { - // failure - } else { - // success - } - }); - ``` - Promise Example; - ```javascript - findResult().then(function(result){ - // success - }, function(reason){ - // failure - }); - ``` - Advanced Example - -------------- - Synchronous Example - ```javascript - let author, books; - try { - author = findAuthor(); - books = findBooksByAuthor(author); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - function foundBooks(books) { - } - function failure(reason) { - } - findAuthor(function(author, err){ - if (err) { - failure(err); - // failure - } else { - try { - findBoooksByAuthor(author, function(books, err) { - if (err) { - failure(err); - } else { - try { - foundBooks(books); - } catch(reason) { - failure(reason); - } - } - }); - } catch(error) { - failure(err); - } - // success - } - }); - ``` - Promise Example; - ```javascript - findAuthor(). - then(findBooksByAuthor). - then(function(books){ - // found books - }).catch(function(reason){ - // something went wrong - }); - ``` - @method then - @param {Function} onFulfilled - @param {Function} onRejected - Useful for tooling. - @return {Promise} - */ - - /** - `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same - as the catch block of a try/catch statement. - ```js - function findAuthor(){ - throw new Error('couldn't find that author'); - } - // synchronous - try { - findAuthor(); - } catch(reason) { - // something went wrong - } - // async with promises - findAuthor().catch(function(reason){ - // something went wrong - }); - ``` - @method catch - @param {Function} onRejection - Useful for tooling. - @return {Promise} - */ - - - Promise.prototype.catch = function _catch(onRejection) { - return this.then(null, onRejection); - }; - - /** - `finally` will be invoked regardless of the promise's fate just as native - try/catch/finally behaves - - Synchronous example: - - ```js - findAuthor() { - if (Math.random() > 0.5) { - throw new Error(); - } - return new Author(); - } - - try { - return findAuthor(); // succeed or fail - } catch(error) { - return findOtherAuther(); - } finally { - // always runs - // doesn't affect the return value - } - ``` - - Asynchronous example: - - ```js - findAuthor().catch(function(reason){ - return findOtherAuther(); - }).finally(function(){ - // author was either found, or not - }); - ``` - - @method finally - @param {Function} callback - @return {Promise} - */ - - - Promise.prototype.finally = function _finally(callback) { - var promise = this; - var constructor = promise.constructor; - - return promise.then(function (value) { - return constructor.resolve(callback()).then(function () { - return value; - }); - }, function (reason) { - return constructor.resolve(callback()).then(function () { - throw reason; - }); - }); - }; - - return Promise; -}(); - -Promise$2.prototype.then = then; -Promise$2.all = all; -Promise$2.race = race; -Promise$2.resolve = resolve$1; -Promise$2.reject = reject$1; -Promise$2._setScheduler = setScheduler; -Promise$2._setAsap = setAsap; -Promise$2._asap = asap; - -/*global self*/ -function polyfill() { - var local = void 0; - - if (typeof global !== 'undefined') { - local = global; - } else if (typeof self !== 'undefined') { - local = self; - } else { - try { - local = Function('return this')(); - } catch (e) { - throw new Error('polyfill failed because global object is unavailable in this environment'); - } - } - - var P = local.Promise; - - if (P) { - var promiseToString = null; - try { - promiseToString = Object.prototype.toString.call(P.resolve()); - } catch (e) { - // silently ignored - } - - if (promiseToString === '[object Promise]' && !P.cast) { - return; - } - } - - local.Promise = Promise$2; -} - -// Strange compat.. -Promise$2.polyfill = polyfill; -Promise$2.Promise = Promise$2; - -Promise$2.polyfill(); - -return Promise$2; - -}))); - - - -//# sourceMappingURL=es6-promise.auto.map diff --git a/civicrm/bower_components/es6-promise/es6-promise.auto.map b/civicrm/bower_components/es6-promise/es6-promise.auto.map deleted file mode 100644 index bff203c5faabf020e303fe5a98176cefd248031a..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.auto.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js","lib/es6-promise.auto.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n\n if (resolve === originalResolve) {\n var _then = getThen(entry);\n\n if (_then === originalThen && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve) {\n return resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","import Promise from './es6-promise';\nPromise.polyfill();\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EAClC,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;EACpB,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;CACjE;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;CAChC;;AAED,AAEC;;AAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,IAAI,KAAK,CAAC,OAAO,EAAE;EACjB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,MAAM;EACL,QAAQ,GAAG,UAAU,CAAC,EAAE;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;GAC/D,CAAC;CACH;;AAED,AAAO,IAAI,OAAO,GAAG,QAAQ;;ACtB7B,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC;;AAE/B,AAAO,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;EAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EACrB,GAAG,IAAI,CAAC,CAAC;EACT,IAAI,GAAG,KAAK,CAAC,EAAE;;;;IAIb,IAAI,iBAAiB,EAAE;MACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC1B,MAAM;MACL,aAAa,EAAE,CAAC;KACjB;GACF;CACF,CAAC;;AAEF,AAAO,SAAS,YAAY,CAAC,UAAU,EAAE;EACvC,iBAAiB,GAAG,UAAU,CAAC;CAChC;;AAED,AAAO,SAAS,OAAO,CAAC,MAAM,EAAE;EAC9B,IAAI,GAAG,MAAM,CAAC;CACf;;AAED,IAAI,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,IAAI,aAAa,GAAG,aAAa,IAAI,EAAE,CAAC;AACxC,IAAI,uBAAuB,GAAG,aAAa,CAAC,gBAAgB,IAAI,aAAa,CAAC,sBAAsB,CAAC;AACrG,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;;;AAG/H,IAAI,QAAQ,GAAG,OAAO,iBAAiB,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,CAAC;;;AAGzI,SAAS,WAAW,GAAG;;;EAGrB,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;GAChC,CAAC;CACH;;;AAGD,SAAS,aAAa,GAAG;EACvB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACpC,OAAO,YAAY;MACjB,SAAS,CAAC,KAAK,CAAC,CAAC;KAClB,CAAC;GACH;;EAED,OAAO,aAAa,EAAE,CAAC;CACxB;;AAED,SAAS,mBAAmB,GAAG;EAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,IAAI,QAAQ,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;EAClD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;EAEhD,OAAO,YAAY;IACjB,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;GAC3C,CAAC;CACH;;;AAGD,SAAS,iBAAiB,GAAG;EAC3B,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;EACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAChC,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;GACrC,CAAC;CACH;;AAED,SAAS,aAAa,GAAG;;;EAGvB,IAAI,gBAAgB,GAAG,UAAU,CAAC;EAClC,OAAO,YAAY;IACjB,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GACnC,CAAC;CACH;;AAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS,KAAK,GAAG;EACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEvB,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAEd,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;GAC1B;;EAED,GAAG,GAAG,CAAC,CAAC;CACT;;AAED,SAAS,YAAY,GAAG;EACtB,IAAI;IACF,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC;IAClD,OAAO,aAAa,EAAE,CAAC;GACxB,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,aAAa,EAAE,CAAC;GACxB;CACF;;AAED,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC;;AAE3B,IAAI,MAAM,EAAE;EACV,aAAa,GAAG,WAAW,EAAE,CAAC;CAC/B,MAAM,IAAI,uBAAuB,EAAE;EAClC,aAAa,GAAG,mBAAmB,EAAE,CAAC;CACvC,MAAM,IAAI,QAAQ,EAAE;EACnB,aAAa,GAAG,iBAAiB,EAAE,CAAC;CACrC,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACvE,aAAa,GAAG,YAAY,EAAE,CAAC;CAChC,MAAM;EACL,aAAa,GAAG,aAAa,EAAE,CAAC;;;CACjC,DCtHc,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;EACvD,IAAI,MAAM,GAAG,IAAI,CAAC;;EAElB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;EAEvC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;IACnC,WAAW,CAAC,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;;EAG3B,IAAI,MAAM,EAAE;IACV,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY;MACf,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KAChE,CAAC,CAAC;GACJ,MAAM;IACL,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;GACtD;;EAED,OAAO,KAAK,CAAC;;;CACd,DCxBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,AAAe,SAASA,SAAO,CAAC,MAAM,EAAE;;EAEtC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;IAC9E,OAAO,MAAM,CAAC;GACf;;EAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,OAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC1B,OAAO,OAAO,CAAC;;;CAChB,DCrCM,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAEhE,SAAS,IAAI,GAAG,EAAE;;AAElB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEtC,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;CAClE;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;CAC9E;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI;IACF,OAAO,OAAO,CAAC,IAAI,CAAC;GACrB,CAAC,OAAO,KAAK,EAAE;IACd,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,OAAO,CAACC,OAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;EAClE,IAAI;IACFA,OAAI,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;GACxD,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,CAAC;GACV;CACF;;AAED,SAAS,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAEA,OAAI,EAAE;EACtD,IAAI,CAAC,UAAU,OAAO,EAAE;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,OAAO,CAACA,OAAI,EAAE,QAAQ,EAAE,UAAU,KAAK,EAAE;MACnD,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;MACd,IAAI,QAAQ,KAAK,KAAK,EAAE;QACtB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB,MAAM;QACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB;KACF,EAAE,UAAU,MAAM,EAAE;MACnB,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;;MAEd,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,EAAE,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;MACpB,MAAM,GAAG,IAAI,CAAC;MACd,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACxB;GACF,EAAE,OAAO,CAAC,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;IACjC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACpC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACnC,MAAM;IACL,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAChC,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC,CAAC;GACJ;CACF;;AAED,SAAS,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,EAAE;EACzD,IAAI,aAAa,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAIA,OAAI,KAAKC,IAAY,IAAI,aAAa,CAAC,WAAW,CAAC,OAAO,KAAKC,SAAe,EAAE;IACvI,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;GAC3C,MAAM;IACL,IAAIF,OAAI,KAAK,eAAe,EAAE;MAC5B,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;MACvC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;KAC9B,MAAM,IAAIA,OAAI,KAAK,SAAS,EAAE;MAC7B,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC,MAAM,IAAI,UAAU,CAACA,OAAI,CAAC,EAAE;MAC3B,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,CAAC,CAAC;KACrD,MAAM;MACL,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC;GACF;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,KAAK,KAAK,EAAE;IACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;GACpC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;IAClC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;GACrD,MAAM;IACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB;CACF;;AAED,SAAS,gBAAgB,CAAC,OAAO,EAAE;EACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;GACnC;;EAED,OAAO,CAAC,OAAO,CAAC,CAAC;CAClB;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;;EAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;EACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;EAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;IACrC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;EACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;EAC1B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;;EAEzB,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;CACjC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC5D,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;EACvC,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;;;EAGjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;;EAEvB,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAC7B,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,aAAa,CAAC;EACjD,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;;EAE9C,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;GACvB;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;;EAE7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO;GACR;;EAED,IAAI,KAAK,GAAG,KAAK,CAAC;MACd,QAAQ,GAAG,KAAK,CAAC;MACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;;EAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC9C,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE;MACT,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAClD,MAAM;MACL,QAAQ,CAAC,MAAM,CAAC,CAAC;KAClB;GACF;;EAED,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;CACjC;;AAED,SAAS,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;EAClC,IAAI;IACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;GACzB,CAAC,OAAO,CAAC,EAAE;IACV,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC1D,IAAI,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;MAClC,KAAK,GAAG,KAAK,CAAC;MACd,KAAK,GAAG,KAAK,CAAC;MACd,SAAS,GAAG,KAAK,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC;;EAEpB,IAAI,WAAW,EAAE;IACf,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEnC,IAAI,KAAK,KAAK,eAAe,EAAE;MAC7B,MAAM,GAAG,IAAI,CAAC;MACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MACpB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KACpB,MAAM;MACL,SAAS,GAAG,IAAI,CAAC;KAClB;;IAED,IAAI,OAAO,KAAK,KAAK,EAAE;MACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;MACnC,OAAO;KACR;GACF,MAAM;IACL,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;;GAE/B,MAAM,IAAI,WAAW,IAAI,SAAS,EAAE;IACnC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,MAAM,EAAE;IACjB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;IAChC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI;IACF,QAAQ,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;MACtC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACzB,EAAE,SAAS,aAAa,CAAC,MAAM,EAAE;MAChC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC,CAAC;GACJ,CAAC,OAAO,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GACpB;CACF;;AAED,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,SAAS,MAAM,GAAG;EAChB,OAAO,EAAE,EAAE,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,OAAO,EAAE;EAC5B,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;EAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;EAC5B,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;CAC3B;;ACrPD,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;CAC7D,AAAC;;AAEF,IAAI,UAAU,GAAG,YAAY;EAC3B,SAAS,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE;IACtC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IACxC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;;IAErC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;MAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;;MAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;OACrC,MAAM;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;UACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;OACF;KACF,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;KACzC;GACF;;EAED,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAChE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;IAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAClC,IAAIF,UAAO,GAAG,CAAC,CAAC,OAAO,CAAC;;;IAGxB,IAAIA,UAAO,KAAKI,SAAe,EAAE;MAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;MAE3B,IAAI,KAAK,KAAKD,IAAY,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;QACtD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;OACjD,MAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB,MAAM,IAAI,CAAC,KAAKE,SAAO,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;OAChC,MAAM;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAUL,UAAO,EAAE;UAC1C,OAAOA,UAAO,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,EAAE,CAAC,CAAC,CAAC;OACR;KACF,MAAM;MACL,IAAI,CAAC,aAAa,CAACA,UAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;IACrE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;;IAG3B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;MAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;;MAElB,IAAI,KAAK,KAAK,QAAQ,EAAE;QACtB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACxB,MAAM;QACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB;KACF;;IAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;MACzB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE;IACtE,IAAI,UAAU,GAAG,IAAI,CAAC;;IAEtB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC7C,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACnD,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACnD,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,UAAU,CAAC;CACnB,EAAE;;ACzGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,AAAe,SAAS,GAAG,CAAC,OAAO,EAAE;EACnC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;;;CAC9C,DCjDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,AAAe,SAAS,IAAI,CAAC,OAAO,EAAE;;EAEpC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;MAC1C,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC;GACJ,MAAM;IACL,OAAO,IAAI,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;MAChD,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;OACvD;KACF,CAAC,CAAC;GACJ;;;CACF,DCjFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAe,SAASM,QAAM,CAAC,MAAM,EAAE;;EAErC,IAAI,WAAW,GAAG,IAAI,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,MAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACzB,OAAO,OAAO,CAAC;;;CAChB,DC9BD,SAAS,aAAa,GAAG;EACvB,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC,CAAC;CAC3G;;AAED,SAAS,QAAQ,GAAG;EAClB,MAAM,IAAI,SAAS,CAAC,uHAAuH,CAAC,CAAC;CAC9I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GD,IAAIF,SAAO,GAAG,YAAY;EACxB,SAAS,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAO,QAAQ,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC;MAClD,IAAI,YAAY,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;KAC1E;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4LD,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;GACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;;IAEtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;MACnC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,OAAO,KAAK,CAAC;OACd,CAAC,CAAC;KACJ,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,MAAM,MAAM,CAAC;OACd,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,OAAO,CAAC;CAChB,EAAE,CAAC;;AAEJA,SAAO,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,AACAA,SAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAClBA,SAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpBA,SAAO,CAAC,OAAO,GAAGG,SAAO,CAAC;AAC1BH,SAAO,CAAC,MAAM,GAAGI,QAAM,CAAC;AACxBJ,SAAO,CAAC,aAAa,GAAG,YAAY,CAAC;AACrCA,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3BA,SAAO,CAAC,KAAK,GAAG,IAAI;;ACxYpB;AACA,AAEe,SAAS,QAAQ,GAAG;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;;EAEnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IACtC,KAAK,GAAG,IAAI,CAAC;GACd,MAAM;IACL,IAAI;MACF,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;KACnC,CAAC,OAAO,CAAC,EAAE;MACV,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;KAC7F;GACF;;EAED,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;;EAEtB,IAAI,CAAC,EAAE;IACL,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI;MACF,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC/D,CAAC,OAAO,CAAC,EAAE;;KAEX;;IAED,IAAI,eAAe,KAAK,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;MACrD,OAAO;KACR;GACF;;EAED,KAAK,CAAC,OAAO,GAAGA,SAAO,CAAC;;;CACzB,DC/BD;AACAA,SAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5BA,SAAO,CAAC,OAAO,GAAGA,SAAO,CAAC;;ACJ1BA,SAAO,CAAC,QAAQ,EAAE,CAAC;;;;;;;;","file":"es6-promise.auto.js"} \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.auto.min.js b/civicrm/bower_components/es6-promise/es6-promise.auto.min.js deleted file mode 100644 index fdf8bff2676cc261208a20ff61ee39d8cd9dfb59..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.auto.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){B=t}function r(t){G=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof z?function(){z(a)}:c()}function s(){var t=0,e=new J(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<W;t+=2){var e=V[t],n=V[t+1];e(n),V[t]=void 0,V[t+1]=void 0}W=0}function f(){try{var t=Function("return this")().require("vertx");return z=t.runOnLoop||t.runOnContext,i()}catch(e){return c()}}function l(t,e){var n=this,r=new this.constructor(p);void 0===r[Z]&&O(r);var o=n._state;if(o){var i=arguments[o-1];G(function(){return P(o,r,i,n._result)})}else E(n,r,t,e);return r}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return g(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return nt.error=e,nt}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){G(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?g(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===tt?S(t,e._result):e._state===et?j(t,e._result):E(e,void 0,function(e){return g(t,e)},function(e){return j(t,e)})}function w(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===nt?(j(t,nt.error),nt.error=null):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function g(e,n){e===n?j(e,v()):t(n)?w(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),T(t)}function S(t,e){t._state===$&&(t._result=e,t._state=tt,0!==t._subscribers.length&&G(T,t))}function j(t,e){t._state===$&&(t._state=et,t._result=e,G(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+tt]=n,o[i+et]=r,0===i&&t._state&&G(T,t)}function T(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?P(n,r,o,i):o(i);t._subscribers.length=0}}function M(t,e){try{return t(e)}catch(n){return nt.error=n,nt}}function P(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=void 0,a=void 0;if(i){if(s=M(r,o),s===nt?(a=!0,u=s.error,s.error=null):c=!0,n===s)return void j(n,d())}else s=o,c=!0;n._state!==$||(i&&c?g(n,s):a?j(n,u):t===tt?S(n,s):t===et&&j(n,s))}function x(t,e){try{e(function(e){g(t,e)},function(e){j(t,e)})}catch(n){j(t,n)}}function C(){return rt++}function O(t){t[Z]=rt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function k(){return new Error("Array Methods must be provided an Array")}function F(t){return new ot(this,t).promise}function Y(t){var e=this;return new e(U(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function q(t){var e=this,n=new e(p);return j(n,t),n}function D(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function K(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function L(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=it}var N=void 0;N=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var U=N,W=0,z=void 0,B=void 0,G=function(t,e){V[W]=t,V[W+1]=e,W+=2,2===W&&(B?B(a):X())},H="undefined"!=typeof window?window:void 0,I=H||{},J=I.MutationObserver||I.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),R="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,V=new Array(1e3),X=void 0;X=Q?o():J?s():R?u():void 0===H&&"function"==typeof require?f():c();var Z=Math.random().toString(36).substring(2),$=void 0,tt=1,et=2,nt={error:null},rt=0,ot=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[Z]||O(this.promise),U(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&S(this.promise,this._result))):j(this.promise,k())}return t.prototype._enumerate=function(t){for(var e=0;this._state===$&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==$)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===it){var i=new n(p);w(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===$&&(this._remaining--,t===et?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(tt,e,t)},function(t){return n._settledAt(et,e,t)})},t}(),it=function(){function t(e){this[Z]=C(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&D(),this instanceof t?x(this,e):K())}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype["finally"]=function(t){var e=this,n=e.constructor;return e.then(function(e){return n.resolve(t()).then(function(){return e})},function(e){return n.resolve(t()).then(function(){throw e})})},t}();return it.prototype.then=l,it.all=F,it.race=Y,it.resolve=h,it.reject=q,it._setScheduler=n,it._setAsap=r,it._asap=G,it.polyfill=L,it.Promise=it,it.polyfill(),it}); \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.auto.min.map b/civicrm/bower_components/es6-promise/es6-promise.auto.min.map deleted file mode 100644 index aaa7536787e381aa73dbf7830d4708be2e9711b3..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.auto.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js","lib/es6-promise.auto.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n\n if (resolve === originalResolve) {\n var _then = getThen(entry);\n\n if (_then === originalThen && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve) {\n return resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","import Promise from './es6-promise';\nPromise.polyfill();\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EAClC,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;EACpB,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;CACjE;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;CAChC;;AAED,AAEC;;AAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,IAAI,KAAK,CAAC,OAAO,EAAE;EACjB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,MAAM;EACL,QAAQ,GAAG,UAAU,CAAC,EAAE;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;GAC/D,CAAC;CACH;;AAED,AAAO,IAAI,OAAO,GAAG,QAAQ;;ACtB7B,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC;;AAE/B,AAAO,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;EAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EACrB,GAAG,IAAI,CAAC,CAAC;EACT,IAAI,GAAG,KAAK,CAAC,EAAE;;;;IAIb,IAAI,iBAAiB,EAAE;MACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC1B,MAAM;MACL,aAAa,EAAE,CAAC;KACjB;GACF;CACF,CAAC;;AAEF,AAAO,SAAS,YAAY,CAAC,UAAU,EAAE;EACvC,iBAAiB,GAAG,UAAU,CAAC;CAChC;;AAED,AAAO,SAAS,OAAO,CAAC,MAAM,EAAE;EAC9B,IAAI,GAAG,MAAM,CAAC;CACf;;AAED,IAAI,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,IAAI,aAAa,GAAG,aAAa,IAAI,EAAE,CAAC;AACxC,IAAI,uBAAuB,GAAG,aAAa,CAAC,gBAAgB,IAAI,aAAa,CAAC,sBAAsB,CAAC;AACrG,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;;;AAG/H,IAAI,QAAQ,GAAG,OAAO,iBAAiB,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,CAAC;;;AAGzI,SAAS,WAAW,GAAG;;;EAGrB,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;GAChC,CAAC;CACH;;;AAGD,SAAS,aAAa,GAAG;EACvB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACpC,OAAO,YAAY;MACjB,SAAS,CAAC,KAAK,CAAC,CAAC;KAClB,CAAC;GACH;;EAED,OAAO,aAAa,EAAE,CAAC;CACxB;;AAED,SAAS,mBAAmB,GAAG;EAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,IAAI,QAAQ,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;EAClD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;EAEhD,OAAO,YAAY;IACjB,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;GAC3C,CAAC;CACH;;;AAGD,SAAS,iBAAiB,GAAG;EAC3B,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;EACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAChC,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;GACrC,CAAC;CACH;;AAED,SAAS,aAAa,GAAG;;;EAGvB,IAAI,gBAAgB,GAAG,UAAU,CAAC;EAClC,OAAO,YAAY;IACjB,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GACnC,CAAC;CACH;;AAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS,KAAK,GAAG;EACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEvB,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAEd,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;GAC1B;;EAED,GAAG,GAAG,CAAC,CAAC;CACT;;AAED,SAAS,YAAY,GAAG;EACtB,IAAI;IACF,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC;IAClD,OAAO,aAAa,EAAE,CAAC;GACxB,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,aAAa,EAAE,CAAC;GACxB;CACF;;AAED,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC;;AAE3B,IAAI,MAAM,EAAE;EACV,aAAa,GAAG,WAAW,EAAE,CAAC;CAC/B,MAAM,IAAI,uBAAuB,EAAE;EAClC,aAAa,GAAG,mBAAmB,EAAE,CAAC;CACvC,MAAM,IAAI,QAAQ,EAAE;EACnB,aAAa,GAAG,iBAAiB,EAAE,CAAC;CACrC,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACvE,aAAa,GAAG,YAAY,EAAE,CAAC;CAChC,MAAM;EACL,aAAa,GAAG,aAAa,EAAE,CAAC;;;CACjC,DCtHc,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;EACvD,IAAI,MAAM,GAAG,IAAI,CAAC;;EAElB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;EAEvC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;IACnC,WAAW,CAAC,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;;EAG3B,IAAI,MAAM,EAAE;IACV,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY;MACf,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KAChE,CAAC,CAAC;GACJ,MAAM;IACL,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;GACtD;;EAED,OAAO,KAAK,CAAC;;;CACd,DCxBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,AAAe,SAASA,SAAO,CAAC,MAAM,EAAE;;EAEtC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;IAC9E,OAAO,MAAM,CAAC;GACf;;EAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,OAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC1B,OAAO,OAAO,CAAC;;;CAChB,DCrCM,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAEhE,SAAS,IAAI,GAAG,EAAE;;AAElB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEtC,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;CAClE;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;CAC9E;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI;IACF,OAAO,OAAO,CAAC,IAAI,CAAC;GACrB,CAAC,OAAO,KAAK,EAAE;IACd,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,OAAO,CAACC,OAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;EAClE,IAAI;IACFA,OAAI,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;GACxD,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,CAAC;GACV;CACF;;AAED,SAAS,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAEA,OAAI,EAAE;EACtD,IAAI,CAAC,UAAU,OAAO,EAAE;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,OAAO,CAACA,OAAI,EAAE,QAAQ,EAAE,UAAU,KAAK,EAAE;MACnD,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;MACd,IAAI,QAAQ,KAAK,KAAK,EAAE;QACtB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB,MAAM;QACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB;KACF,EAAE,UAAU,MAAM,EAAE;MACnB,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;;MAEd,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,EAAE,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;MACpB,MAAM,GAAG,IAAI,CAAC;MACd,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACxB;GACF,EAAE,OAAO,CAAC,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;IACjC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACpC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACnC,MAAM;IACL,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAChC,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC,CAAC;GACJ;CACF;;AAED,SAAS,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,EAAE;EACzD,IAAI,aAAa,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAIA,OAAI,KAAKC,IAAY,IAAI,aAAa,CAAC,WAAW,CAAC,OAAO,KAAKC,SAAe,EAAE;IACvI,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;GAC3C,MAAM;IACL,IAAIF,OAAI,KAAK,eAAe,EAAE;MAC5B,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;MACvC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;KAC9B,MAAM,IAAIA,OAAI,KAAK,SAAS,EAAE;MAC7B,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC,MAAM,IAAI,UAAU,CAACA,OAAI,CAAC,EAAE;MAC3B,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,CAAC,CAAC;KACrD,MAAM;MACL,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC;GACF;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,KAAK,KAAK,EAAE;IACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;GACpC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;IAClC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;GACrD,MAAM;IACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB;CACF;;AAED,SAAS,gBAAgB,CAAC,OAAO,EAAE;EACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;GACnC;;EAED,OAAO,CAAC,OAAO,CAAC,CAAC;CAClB;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;;EAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;EACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;EAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;IACrC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;EACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;EAC1B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;;EAEzB,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;CACjC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC5D,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;EACvC,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;;;EAGjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;;EAEvB,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAC7B,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,aAAa,CAAC;EACjD,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;;EAE9C,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;GACvB;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;;EAE7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO;GACR;;EAED,IAAI,KAAK,GAAG,KAAK,CAAC;MACd,QAAQ,GAAG,KAAK,CAAC;MACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;;EAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC9C,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE;MACT,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAClD,MAAM;MACL,QAAQ,CAAC,MAAM,CAAC,CAAC;KAClB;GACF;;EAED,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;CACjC;;AAED,SAAS,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;EAClC,IAAI;IACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;GACzB,CAAC,OAAO,CAAC,EAAE;IACV,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC1D,IAAI,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;MAClC,KAAK,GAAG,KAAK,CAAC;MACd,KAAK,GAAG,KAAK,CAAC;MACd,SAAS,GAAG,KAAK,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC;;EAEpB,IAAI,WAAW,EAAE;IACf,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEnC,IAAI,KAAK,KAAK,eAAe,EAAE;MAC7B,MAAM,GAAG,IAAI,CAAC;MACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MACpB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KACpB,MAAM;MACL,SAAS,GAAG,IAAI,CAAC;KAClB;;IAED,IAAI,OAAO,KAAK,KAAK,EAAE;MACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;MACnC,OAAO;KACR;GACF,MAAM;IACL,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;;GAE/B,MAAM,IAAI,WAAW,IAAI,SAAS,EAAE;IACnC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,MAAM,EAAE;IACjB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;IAChC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI;IACF,QAAQ,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;MACtC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACzB,EAAE,SAAS,aAAa,CAAC,MAAM,EAAE;MAChC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC,CAAC;GACJ,CAAC,OAAO,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GACpB;CACF;;AAED,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,SAAS,MAAM,GAAG;EAChB,OAAO,EAAE,EAAE,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,OAAO,EAAE;EAC5B,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;EAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;EAC5B,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;CAC3B;;ACrPD,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;CAC7D,AAAC;;AAEF,IAAI,UAAU,GAAG,YAAY;EAC3B,SAAS,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE;IACtC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IACxC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;;IAErC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;MAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;;MAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;OACrC,MAAM;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;UACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;OACF;KACF,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;KACzC;GACF;;EAED,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAChE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;IAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAClC,IAAIF,UAAO,GAAG,CAAC,CAAC,OAAO,CAAC;;;IAGxB,IAAIA,UAAO,KAAKI,SAAe,EAAE;MAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;MAE3B,IAAI,KAAK,KAAKD,IAAY,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;QACtD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;OACjD,MAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB,MAAM,IAAI,CAAC,KAAKE,SAAO,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;OAChC,MAAM;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAUL,UAAO,EAAE;UAC1C,OAAOA,UAAO,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,EAAE,CAAC,CAAC,CAAC;OACR;KACF,MAAM;MACL,IAAI,CAAC,aAAa,CAACA,UAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;IACrE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;;IAG3B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;MAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;;MAElB,IAAI,KAAK,KAAK,QAAQ,EAAE;QACtB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACxB,MAAM;QACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB;KACF;;IAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;MACzB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE;IACtE,IAAI,UAAU,GAAG,IAAI,CAAC;;IAEtB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC7C,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACnD,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACnD,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,UAAU,CAAC;CACnB,EAAE;;ACzGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,AAAe,SAAS,GAAG,CAAC,OAAO,EAAE;EACnC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;;;CAC9C,DCjDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,AAAe,SAAS,IAAI,CAAC,OAAO,EAAE;;EAEpC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;MAC1C,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC;GACJ,MAAM;IACL,OAAO,IAAI,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;MAChD,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;OACvD;KACF,CAAC,CAAC;GACJ;;;CACF,DCjFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAe,SAASM,QAAM,CAAC,MAAM,EAAE;;EAErC,IAAI,WAAW,GAAG,IAAI,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,MAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACzB,OAAO,OAAO,CAAC;;;CAChB,DC9BD,SAAS,aAAa,GAAG;EACvB,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC,CAAC;CAC3G;;AAED,SAAS,QAAQ,GAAG;EAClB,MAAM,IAAI,SAAS,CAAC,uHAAuH,CAAC,CAAC;CAC9I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GD,IAAIF,SAAO,GAAG,YAAY;EACxB,SAAS,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAO,QAAQ,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC;MAClD,IAAI,YAAY,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;KAC1E;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4LD,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;GACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;;IAEtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;MACnC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,OAAO,KAAK,CAAC;OACd,CAAC,CAAC;KACJ,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,MAAM,MAAM,CAAC;OACd,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,OAAO,CAAC;CAChB,EAAE,CAAC;;AAEJA,SAAO,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,AACAA,SAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAClBA,SAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpBA,SAAO,CAAC,OAAO,GAAGG,SAAO,CAAC;AAC1BH,SAAO,CAAC,MAAM,GAAGI,QAAM,CAAC;AACxBJ,SAAO,CAAC,aAAa,GAAG,YAAY,CAAC;AACrCA,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3BA,SAAO,CAAC,KAAK,GAAG,IAAI;;ACxYpB;AACA,AAEe,SAAS,QAAQ,GAAG;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;;EAEnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IACtC,KAAK,GAAG,IAAI,CAAC;GACd,MAAM;IACL,IAAI;MACF,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;KACnC,CAAC,OAAO,CAAC,EAAE;MACV,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;KAC7F;GACF;;EAED,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;;EAEtB,IAAI,CAAC,EAAE;IACL,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI;MACF,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC/D,CAAC,OAAO,CAAC,EAAE;;KAEX;;IAED,IAAI,eAAe,KAAK,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;MACrD,OAAO;KACR;GACF;;EAED,KAAK,CAAC,OAAO,GAAGA,SAAO,CAAC;;;CACzB,DC/BD;AACAA,SAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5BA,SAAO,CAAC,OAAO,GAAGA,SAAO,CAAC;;ACJ1BA,SAAO,CAAC,QAAQ,EAAE,CAAC;;;;;;;;","file":"es6-promise.auto.min.js"} \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.js b/civicrm/bower_components/es6-promise/es6-promise.js deleted file mode 100644 index de8392feff7205fd600efee8e849411baba63ec4..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.js +++ /dev/null @@ -1,1179 +0,0 @@ -/*! - * @overview es6-promise - a tiny implementation of Promises/A+. - * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) - * @license Licensed under MIT license - * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE - * @version v4.2.4+314e4831 - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.ES6Promise = factory()); -}(this, (function () { 'use strict'; - -function objectOrFunction(x) { - var type = typeof x; - return x !== null && (type === 'object' || type === 'function'); -} - -function isFunction(x) { - return typeof x === 'function'; -} - - - -var _isArray = void 0; -if (Array.isArray) { - _isArray = Array.isArray; -} else { - _isArray = function (x) { - return Object.prototype.toString.call(x) === '[object Array]'; - }; -} - -var isArray = _isArray; - -var len = 0; -var vertxNext = void 0; -var customSchedulerFn = void 0; - -var asap = function asap(callback, arg) { - queue[len] = callback; - queue[len + 1] = arg; - len += 2; - if (len === 2) { - // If len is 2, that means that we need to schedule an async flush. - // If additional callbacks are queued before the queue is flushed, they - // will be processed by this flush that we are scheduling. - if (customSchedulerFn) { - customSchedulerFn(flush); - } else { - scheduleFlush(); - } - } -}; - -function setScheduler(scheduleFn) { - customSchedulerFn = scheduleFn; -} - -function setAsap(asapFn) { - asap = asapFn; -} - -var browserWindow = typeof window !== 'undefined' ? window : undefined; -var browserGlobal = browserWindow || {}; -var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; -var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; - -// test for web worker but not in IE10 -var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; - -// node -function useNextTick() { - // node version 0.10.x displays a deprecation warning when nextTick is used recursively - // see https://github.com/cujojs/when/issues/410 for details - return function () { - return process.nextTick(flush); - }; -} - -// vertx -function useVertxTimer() { - if (typeof vertxNext !== 'undefined') { - return function () { - vertxNext(flush); - }; - } - - return useSetTimeout(); -} - -function useMutationObserver() { - var iterations = 0; - var observer = new BrowserMutationObserver(flush); - var node = document.createTextNode(''); - observer.observe(node, { characterData: true }); - - return function () { - node.data = iterations = ++iterations % 2; - }; -} - -// web worker -function useMessageChannel() { - var channel = new MessageChannel(); - channel.port1.onmessage = flush; - return function () { - return channel.port2.postMessage(0); - }; -} - -function useSetTimeout() { - // Store setTimeout reference so es6-promise will be unaffected by - // other code modifying setTimeout (like sinon.useFakeTimers()) - var globalSetTimeout = setTimeout; - return function () { - return globalSetTimeout(flush, 1); - }; -} - -var queue = new Array(1000); -function flush() { - for (var i = 0; i < len; i += 2) { - var callback = queue[i]; - var arg = queue[i + 1]; - - callback(arg); - - queue[i] = undefined; - queue[i + 1] = undefined; - } - - len = 0; -} - -function attemptVertx() { - try { - var vertx = Function('return this')().require('vertx'); - vertxNext = vertx.runOnLoop || vertx.runOnContext; - return useVertxTimer(); - } catch (e) { - return useSetTimeout(); - } -} - -var scheduleFlush = void 0; -// Decide what async method to use to triggering processing of queued callbacks: -if (isNode) { - scheduleFlush = useNextTick(); -} else if (BrowserMutationObserver) { - scheduleFlush = useMutationObserver(); -} else if (isWorker) { - scheduleFlush = useMessageChannel(); -} else if (browserWindow === undefined && typeof require === 'function') { - scheduleFlush = attemptVertx(); -} else { - scheduleFlush = useSetTimeout(); -} - -function then(onFulfillment, onRejection) { - var parent = this; - - var child = new this.constructor(noop); - - if (child[PROMISE_ID] === undefined) { - makePromise(child); - } - - var _state = parent._state; - - - if (_state) { - var callback = arguments[_state - 1]; - asap(function () { - return invokeCallback(_state, child, callback, parent._result); - }); - } else { - subscribe(parent, child, onFulfillment, onRejection); - } - - return child; -} - -/** - `Promise.resolve` returns a promise that will become resolved with the - passed `value`. It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - resolve(1); - }); - - promise.then(function(value){ - // value === 1 - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.resolve(1); - - promise.then(function(value){ - // value === 1 - }); - ``` - - @method resolve - @static - @param {Any} value value that the returned promise will be resolved with - Useful for tooling. - @return {Promise} a promise that will become fulfilled with the given - `value` -*/ -function resolve$1(object) { - /*jshint validthis:true */ - var Constructor = this; - - if (object && typeof object === 'object' && object.constructor === Constructor) { - return object; - } - - var promise = new Constructor(noop); - resolve(promise, object); - return promise; -} - -var PROMISE_ID = Math.random().toString(36).substring(2); - -function noop() {} - -var PENDING = void 0; -var FULFILLED = 1; -var REJECTED = 2; - -var TRY_CATCH_ERROR = { error: null }; - -function selfFulfillment() { - return new TypeError("You cannot resolve a promise with itself"); -} - -function cannotReturnOwn() { - return new TypeError('A promises callback cannot return that same promise.'); -} - -function getThen(promise) { - try { - return promise.then; - } catch (error) { - TRY_CATCH_ERROR.error = error; - return TRY_CATCH_ERROR; - } -} - -function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) { - try { - then$$1.call(value, fulfillmentHandler, rejectionHandler); - } catch (e) { - return e; - } -} - -function handleForeignThenable(promise, thenable, then$$1) { - asap(function (promise) { - var sealed = false; - var error = tryThen(then$$1, thenable, function (value) { - if (sealed) { - return; - } - sealed = true; - if (thenable !== value) { - resolve(promise, value); - } else { - fulfill(promise, value); - } - }, function (reason) { - if (sealed) { - return; - } - sealed = true; - - reject(promise, reason); - }, 'Settle: ' + (promise._label || ' unknown promise')); - - if (!sealed && error) { - sealed = true; - reject(promise, error); - } - }, promise); -} - -function handleOwnThenable(promise, thenable) { - if (thenable._state === FULFILLED) { - fulfill(promise, thenable._result); - } else if (thenable._state === REJECTED) { - reject(promise, thenable._result); - } else { - subscribe(thenable, undefined, function (value) { - return resolve(promise, value); - }, function (reason) { - return reject(promise, reason); - }); - } -} - -function handleMaybeThenable(promise, maybeThenable, then$$1) { - if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) { - handleOwnThenable(promise, maybeThenable); - } else { - if (then$$1 === TRY_CATCH_ERROR) { - reject(promise, TRY_CATCH_ERROR.error); - TRY_CATCH_ERROR.error = null; - } else if (then$$1 === undefined) { - fulfill(promise, maybeThenable); - } else if (isFunction(then$$1)) { - handleForeignThenable(promise, maybeThenable, then$$1); - } else { - fulfill(promise, maybeThenable); - } - } -} - -function resolve(promise, value) { - if (promise === value) { - reject(promise, selfFulfillment()); - } else if (objectOrFunction(value)) { - handleMaybeThenable(promise, value, getThen(value)); - } else { - fulfill(promise, value); - } -} - -function publishRejection(promise) { - if (promise._onerror) { - promise._onerror(promise._result); - } - - publish(promise); -} - -function fulfill(promise, value) { - if (promise._state !== PENDING) { - return; - } - - promise._result = value; - promise._state = FULFILLED; - - if (promise._subscribers.length !== 0) { - asap(publish, promise); - } -} - -function reject(promise, reason) { - if (promise._state !== PENDING) { - return; - } - promise._state = REJECTED; - promise._result = reason; - - asap(publishRejection, promise); -} - -function subscribe(parent, child, onFulfillment, onRejection) { - var _subscribers = parent._subscribers; - var length = _subscribers.length; - - - parent._onerror = null; - - _subscribers[length] = child; - _subscribers[length + FULFILLED] = onFulfillment; - _subscribers[length + REJECTED] = onRejection; - - if (length === 0 && parent._state) { - asap(publish, parent); - } -} - -function publish(promise) { - var subscribers = promise._subscribers; - var settled = promise._state; - - if (subscribers.length === 0) { - return; - } - - var child = void 0, - callback = void 0, - detail = promise._result; - - for (var i = 0; i < subscribers.length; i += 3) { - child = subscribers[i]; - callback = subscribers[i + settled]; - - if (child) { - invokeCallback(settled, child, callback, detail); - } else { - callback(detail); - } - } - - promise._subscribers.length = 0; -} - -function tryCatch(callback, detail) { - try { - return callback(detail); - } catch (e) { - TRY_CATCH_ERROR.error = e; - return TRY_CATCH_ERROR; - } -} - -function invokeCallback(settled, promise, callback, detail) { - var hasCallback = isFunction(callback), - value = void 0, - error = void 0, - succeeded = void 0, - failed = void 0; - - if (hasCallback) { - value = tryCatch(callback, detail); - - if (value === TRY_CATCH_ERROR) { - failed = true; - error = value.error; - value.error = null; - } else { - succeeded = true; - } - - if (promise === value) { - reject(promise, cannotReturnOwn()); - return; - } - } else { - value = detail; - succeeded = true; - } - - if (promise._state !== PENDING) { - // noop - } else if (hasCallback && succeeded) { - resolve(promise, value); - } else if (failed) { - reject(promise, error); - } else if (settled === FULFILLED) { - fulfill(promise, value); - } else if (settled === REJECTED) { - reject(promise, value); - } -} - -function initializePromise(promise, resolver) { - try { - resolver(function resolvePromise(value) { - resolve(promise, value); - }, function rejectPromise(reason) { - reject(promise, reason); - }); - } catch (e) { - reject(promise, e); - } -} - -var id = 0; -function nextId() { - return id++; -} - -function makePromise(promise) { - promise[PROMISE_ID] = id++; - promise._state = undefined; - promise._result = undefined; - promise._subscribers = []; -} - -function validationError() { - return new Error('Array Methods must be provided an Array'); -} - -var Enumerator = function () { - function Enumerator(Constructor, input) { - this._instanceConstructor = Constructor; - this.promise = new Constructor(noop); - - if (!this.promise[PROMISE_ID]) { - makePromise(this.promise); - } - - if (isArray(input)) { - this.length = input.length; - this._remaining = input.length; - - this._result = new Array(this.length); - - if (this.length === 0) { - fulfill(this.promise, this._result); - } else { - this.length = this.length || 0; - this._enumerate(input); - if (this._remaining === 0) { - fulfill(this.promise, this._result); - } - } - } else { - reject(this.promise, validationError()); - } - } - - Enumerator.prototype._enumerate = function _enumerate(input) { - for (var i = 0; this._state === PENDING && i < input.length; i++) { - this._eachEntry(input[i], i); - } - }; - - Enumerator.prototype._eachEntry = function _eachEntry(entry, i) { - var c = this._instanceConstructor; - var resolve$$1 = c.resolve; - - - if (resolve$$1 === resolve$1) { - var _then = getThen(entry); - - if (_then === then && entry._state !== PENDING) { - this._settledAt(entry._state, i, entry._result); - } else if (typeof _then !== 'function') { - this._remaining--; - this._result[i] = entry; - } else if (c === Promise$1) { - var promise = new c(noop); - handleMaybeThenable(promise, entry, _then); - this._willSettleAt(promise, i); - } else { - this._willSettleAt(new c(function (resolve$$1) { - return resolve$$1(entry); - }), i); - } - } else { - this._willSettleAt(resolve$$1(entry), i); - } - }; - - Enumerator.prototype._settledAt = function _settledAt(state, i, value) { - var promise = this.promise; - - - if (promise._state === PENDING) { - this._remaining--; - - if (state === REJECTED) { - reject(promise, value); - } else { - this._result[i] = value; - } - } - - if (this._remaining === 0) { - fulfill(promise, this._result); - } - }; - - Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) { - var enumerator = this; - - subscribe(promise, undefined, function (value) { - return enumerator._settledAt(FULFILLED, i, value); - }, function (reason) { - return enumerator._settledAt(REJECTED, i, reason); - }); - }; - - return Enumerator; -}(); - -/** - `Promise.all` accepts an array of promises, and returns a new promise which - is fulfilled with an array of fulfillment values for the passed promises, or - rejected with the reason of the first passed promise to be rejected. It casts all - elements of the passed iterable to promises as it runs this algorithm. - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = resolve(2); - let promise3 = resolve(3); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // The array here would be [ 1, 2, 3 ]; - }); - ``` - - If any of the `promises` given to `all` are rejected, the first promise - that is rejected will be given as an argument to the returned promises's - rejection handler. For example: - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = reject(new Error("2")); - let promise3 = reject(new Error("3")); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // Code here never runs because there are rejected promises! - }, function(error) { - // error.message === "2" - }); - ``` - - @method all - @static - @param {Array} entries array of promises - @param {String} label optional string for labeling the promise. - Useful for tooling. - @return {Promise} promise that is fulfilled when all `promises` have been - fulfilled, or rejected if any of them become rejected. - @static -*/ -function all(entries) { - return new Enumerator(this, entries).promise; -} - -/** - `Promise.race` returns a new promise which is settled in the same way as the - first passed promise to settle. - - Example: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 2'); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // result === 'promise 2' because it was resolved before promise1 - // was resolved. - }); - ``` - - `Promise.race` is deterministic in that only the state of the first - settled promise matters. For example, even if other promises given to the - `promises` array argument are resolved, but the first settled promise has - become rejected before the other promises became fulfilled, the returned - promise will become rejected: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - reject(new Error('promise 2')); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // Code here never runs - }, function(reason){ - // reason.message === 'promise 2' because promise 2 became rejected before - // promise 1 became fulfilled - }); - ``` - - An example real-world use case is implementing timeouts: - - ```javascript - Promise.race([ajax('foo.json'), timeout(5000)]) - ``` - - @method race - @static - @param {Array} promises array of promises to observe - Useful for tooling. - @return {Promise} a promise which settles in the same way as the first passed - promise to settle. -*/ -function race(entries) { - /*jshint validthis:true */ - var Constructor = this; - - if (!isArray(entries)) { - return new Constructor(function (_, reject) { - return reject(new TypeError('You must pass an array to race.')); - }); - } else { - return new Constructor(function (resolve, reject) { - var length = entries.length; - for (var i = 0; i < length; i++) { - Constructor.resolve(entries[i]).then(resolve, reject); - } - }); - } -} - -/** - `Promise.reject` returns a promise rejected with the passed `reason`. - It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - reject(new Error('WHOOPS')); - }); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.reject(new Error('WHOOPS')); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - @method reject - @static - @param {Any} reason value that the returned promise will be rejected with. - Useful for tooling. - @return {Promise} a promise rejected with the given `reason`. -*/ -function reject$1(reason) { - /*jshint validthis:true */ - var Constructor = this; - var promise = new Constructor(noop); - reject(promise, reason); - return promise; -} - -function needsResolver() { - throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); -} - -function needsNew() { - throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); -} - -/** - Promise objects represent the eventual result of an asynchronous operation. The - primary way of interacting with a promise is through its `then` method, which - registers callbacks to receive either a promise's eventual value or the reason - why the promise cannot be fulfilled. - - Terminology - ----------- - - - `promise` is an object or function with a `then` method whose behavior conforms to this specification. - - `thenable` is an object or function that defines a `then` method. - - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). - - `exception` is a value that is thrown using the throw statement. - - `reason` is a value that indicates why a promise was rejected. - - `settled` the final resting state of a promise, fulfilled or rejected. - - A promise can be in one of three states: pending, fulfilled, or rejected. - - Promises that are fulfilled have a fulfillment value and are in the fulfilled - state. Promises that are rejected have a rejection reason and are in the - rejected state. A fulfillment value is never a thenable. - - Promises can also be said to *resolve* a value. If this value is also a - promise, then the original promise's settled state will match the value's - settled state. So a promise that *resolves* a promise that rejects will - itself reject, and a promise that *resolves* a promise that fulfills will - itself fulfill. - - - Basic Usage: - ------------ - - ```js - let promise = new Promise(function(resolve, reject) { - // on success - resolve(value); - - // on failure - reject(reason); - }); - - promise.then(function(value) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Advanced Usage: - --------------- - - Promises shine when abstracting away asynchronous interactions such as - `XMLHttpRequest`s. - - ```js - function getJSON(url) { - return new Promise(function(resolve, reject){ - let xhr = new XMLHttpRequest(); - - xhr.open('GET', url); - xhr.onreadystatechange = handler; - xhr.responseType = 'json'; - xhr.setRequestHeader('Accept', 'application/json'); - xhr.send(); - - function handler() { - if (this.readyState === this.DONE) { - if (this.status === 200) { - resolve(this.response); - } else { - reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); - } - } - }; - }); - } - - getJSON('/posts.json').then(function(json) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Unlike callbacks, promises are great composable primitives. - - ```js - Promise.all([ - getJSON('/posts'), - getJSON('/comments') - ]).then(function(values){ - values[0] // => postsJSON - values[1] // => commentsJSON - - return values; - }); - ``` - - @class Promise - @param {Function} resolver - Useful for tooling. - @constructor -*/ - -var Promise$1 = function () { - function Promise(resolver) { - this[PROMISE_ID] = nextId(); - this._result = this._state = undefined; - this._subscribers = []; - - if (noop !== resolver) { - typeof resolver !== 'function' && needsResolver(); - this instanceof Promise ? initializePromise(this, resolver) : needsNew(); - } - } - - /** - The primary way of interacting with a promise is through its `then` method, - which registers callbacks to receive either a promise's eventual value or the - reason why the promise cannot be fulfilled. - ```js - findUser().then(function(user){ - // user is available - }, function(reason){ - // user is unavailable, and you are given the reason why - }); - ``` - Chaining - -------- - The return value of `then` is itself a promise. This second, 'downstream' - promise is resolved with the return value of the first promise's fulfillment - or rejection handler, or rejected if the handler throws an exception. - ```js - findUser().then(function (user) { - return user.name; - }, function (reason) { - return 'default name'; - }).then(function (userName) { - // If `findUser` fulfilled, `userName` will be the user's name, otherwise it - // will be `'default name'` - }); - findUser().then(function (user) { - throw new Error('Found user, but still unhappy'); - }, function (reason) { - throw new Error('`findUser` rejected and we're unhappy'); - }).then(function (value) { - // never reached - }, function (reason) { - // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. - // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. - }); - ``` - If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. - ```js - findUser().then(function (user) { - throw new PedagogicalException('Upstream error'); - }).then(function (value) { - // never reached - }).then(function (value) { - // never reached - }, function (reason) { - // The `PedgagocialException` is propagated all the way down to here - }); - ``` - Assimilation - ------------ - Sometimes the value you want to propagate to a downstream promise can only be - retrieved asynchronously. This can be achieved by returning a promise in the - fulfillment or rejection handler. The downstream promise will then be pending - until the returned promise is settled. This is called *assimilation*. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // The user's comments are now available - }); - ``` - If the assimliated promise rejects, then the downstream promise will also reject. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // If `findCommentsByAuthor` fulfills, we'll have the value here - }, function (reason) { - // If `findCommentsByAuthor` rejects, we'll have the reason here - }); - ``` - Simple Example - -------------- - Synchronous Example - ```javascript - let result; - try { - result = findResult(); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - findResult(function(result, err){ - if (err) { - // failure - } else { - // success - } - }); - ``` - Promise Example; - ```javascript - findResult().then(function(result){ - // success - }, function(reason){ - // failure - }); - ``` - Advanced Example - -------------- - Synchronous Example - ```javascript - let author, books; - try { - author = findAuthor(); - books = findBooksByAuthor(author); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - function foundBooks(books) { - } - function failure(reason) { - } - findAuthor(function(author, err){ - if (err) { - failure(err); - // failure - } else { - try { - findBoooksByAuthor(author, function(books, err) { - if (err) { - failure(err); - } else { - try { - foundBooks(books); - } catch(reason) { - failure(reason); - } - } - }); - } catch(error) { - failure(err); - } - // success - } - }); - ``` - Promise Example; - ```javascript - findAuthor(). - then(findBooksByAuthor). - then(function(books){ - // found books - }).catch(function(reason){ - // something went wrong - }); - ``` - @method then - @param {Function} onFulfilled - @param {Function} onRejected - Useful for tooling. - @return {Promise} - */ - - /** - `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same - as the catch block of a try/catch statement. - ```js - function findAuthor(){ - throw new Error('couldn't find that author'); - } - // synchronous - try { - findAuthor(); - } catch(reason) { - // something went wrong - } - // async with promises - findAuthor().catch(function(reason){ - // something went wrong - }); - ``` - @method catch - @param {Function} onRejection - Useful for tooling. - @return {Promise} - */ - - - Promise.prototype.catch = function _catch(onRejection) { - return this.then(null, onRejection); - }; - - /** - `finally` will be invoked regardless of the promise's fate just as native - try/catch/finally behaves - - Synchronous example: - - ```js - findAuthor() { - if (Math.random() > 0.5) { - throw new Error(); - } - return new Author(); - } - - try { - return findAuthor(); // succeed or fail - } catch(error) { - return findOtherAuther(); - } finally { - // always runs - // doesn't affect the return value - } - ``` - - Asynchronous example: - - ```js - findAuthor().catch(function(reason){ - return findOtherAuther(); - }).finally(function(){ - // author was either found, or not - }); - ``` - - @method finally - @param {Function} callback - @return {Promise} - */ - - - Promise.prototype.finally = function _finally(callback) { - var promise = this; - var constructor = promise.constructor; - - return promise.then(function (value) { - return constructor.resolve(callback()).then(function () { - return value; - }); - }, function (reason) { - return constructor.resolve(callback()).then(function () { - throw reason; - }); - }); - }; - - return Promise; -}(); - -Promise$1.prototype.then = then; -Promise$1.all = all; -Promise$1.race = race; -Promise$1.resolve = resolve$1; -Promise$1.reject = reject$1; -Promise$1._setScheduler = setScheduler; -Promise$1._setAsap = setAsap; -Promise$1._asap = asap; - -/*global self*/ -function polyfill() { - var local = void 0; - - if (typeof global !== 'undefined') { - local = global; - } else if (typeof self !== 'undefined') { - local = self; - } else { - try { - local = Function('return this')(); - } catch (e) { - throw new Error('polyfill failed because global object is unavailable in this environment'); - } - } - - var P = local.Promise; - - if (P) { - var promiseToString = null; - try { - promiseToString = Object.prototype.toString.call(P.resolve()); - } catch (e) { - // silently ignored - } - - if (promiseToString === '[object Promise]' && !P.cast) { - return; - } - } - - local.Promise = Promise$1; -} - -// Strange compat.. -Promise$1.polyfill = polyfill; -Promise$1.Promise = Promise$1; - -return Promise$1; - -}))); - - - -//# sourceMappingURL=es6-promise.map diff --git a/civicrm/bower_components/es6-promise/es6-promise.map b/civicrm/bower_components/es6-promise/es6-promise.map deleted file mode 100644 index bbe71e43fc0e35a1b2a363d452e868d00b47b528..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n\n if (resolve === originalResolve) {\n var _then = getThen(entry);\n\n if (_then === originalThen && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve) {\n return resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EAClC,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;EACpB,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;CACjE;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;CAChC;;AAED,AAEC;;AAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,IAAI,KAAK,CAAC,OAAO,EAAE;EACjB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,MAAM;EACL,QAAQ,GAAG,UAAU,CAAC,EAAE;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;GAC/D,CAAC;CACH;;AAED,AAAO,IAAI,OAAO,GAAG,QAAQ;;ACtB7B,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC;;AAE/B,AAAO,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;EAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EACrB,GAAG,IAAI,CAAC,CAAC;EACT,IAAI,GAAG,KAAK,CAAC,EAAE;;;;IAIb,IAAI,iBAAiB,EAAE;MACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC1B,MAAM;MACL,aAAa,EAAE,CAAC;KACjB;GACF;CACF,CAAC;;AAEF,AAAO,SAAS,YAAY,CAAC,UAAU,EAAE;EACvC,iBAAiB,GAAG,UAAU,CAAC;CAChC;;AAED,AAAO,SAAS,OAAO,CAAC,MAAM,EAAE;EAC9B,IAAI,GAAG,MAAM,CAAC;CACf;;AAED,IAAI,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,IAAI,aAAa,GAAG,aAAa,IAAI,EAAE,CAAC;AACxC,IAAI,uBAAuB,GAAG,aAAa,CAAC,gBAAgB,IAAI,aAAa,CAAC,sBAAsB,CAAC;AACrG,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;;;AAG/H,IAAI,QAAQ,GAAG,OAAO,iBAAiB,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,CAAC;;;AAGzI,SAAS,WAAW,GAAG;;;EAGrB,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;GAChC,CAAC;CACH;;;AAGD,SAAS,aAAa,GAAG;EACvB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACpC,OAAO,YAAY;MACjB,SAAS,CAAC,KAAK,CAAC,CAAC;KAClB,CAAC;GACH;;EAED,OAAO,aAAa,EAAE,CAAC;CACxB;;AAED,SAAS,mBAAmB,GAAG;EAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,IAAI,QAAQ,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;EAClD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;EAEhD,OAAO,YAAY;IACjB,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;GAC3C,CAAC;CACH;;;AAGD,SAAS,iBAAiB,GAAG;EAC3B,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;EACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAChC,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;GACrC,CAAC;CACH;;AAED,SAAS,aAAa,GAAG;;;EAGvB,IAAI,gBAAgB,GAAG,UAAU,CAAC;EAClC,OAAO,YAAY;IACjB,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GACnC,CAAC;CACH;;AAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS,KAAK,GAAG;EACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEvB,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAEd,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;GAC1B;;EAED,GAAG,GAAG,CAAC,CAAC;CACT;;AAED,SAAS,YAAY,GAAG;EACtB,IAAI;IACF,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC;IAClD,OAAO,aAAa,EAAE,CAAC;GACxB,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,aAAa,EAAE,CAAC;GACxB;CACF;;AAED,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC;;AAE3B,IAAI,MAAM,EAAE;EACV,aAAa,GAAG,WAAW,EAAE,CAAC;CAC/B,MAAM,IAAI,uBAAuB,EAAE;EAClC,aAAa,GAAG,mBAAmB,EAAE,CAAC;CACvC,MAAM,IAAI,QAAQ,EAAE;EACnB,aAAa,GAAG,iBAAiB,EAAE,CAAC;CACrC,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACvE,aAAa,GAAG,YAAY,EAAE,CAAC;CAChC,MAAM;EACL,aAAa,GAAG,aAAa,EAAE,CAAC;;;CACjC,DCtHc,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;EACvD,IAAI,MAAM,GAAG,IAAI,CAAC;;EAElB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;EAEvC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;IACnC,WAAW,CAAC,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;;EAG3B,IAAI,MAAM,EAAE;IACV,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY;MACf,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KAChE,CAAC,CAAC;GACJ,MAAM;IACL,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;GACtD;;EAED,OAAO,KAAK,CAAC;;;CACd,DCxBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,AAAe,SAASA,SAAO,CAAC,MAAM,EAAE;;EAEtC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;IAC9E,OAAO,MAAM,CAAC;GACf;;EAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,OAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC1B,OAAO,OAAO,CAAC;;;CAChB,DCrCM,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAEhE,SAAS,IAAI,GAAG,EAAE;;AAElB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEtC,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;CAClE;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;CAC9E;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI;IACF,OAAO,OAAO,CAAC,IAAI,CAAC;GACrB,CAAC,OAAO,KAAK,EAAE;IACd,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,OAAO,CAACC,OAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;EAClE,IAAI;IACFA,OAAI,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;GACxD,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,CAAC;GACV;CACF;;AAED,SAAS,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAEA,OAAI,EAAE;EACtD,IAAI,CAAC,UAAU,OAAO,EAAE;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,OAAO,CAACA,OAAI,EAAE,QAAQ,EAAE,UAAU,KAAK,EAAE;MACnD,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;MACd,IAAI,QAAQ,KAAK,KAAK,EAAE;QACtB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB,MAAM;QACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB;KACF,EAAE,UAAU,MAAM,EAAE;MACnB,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;;MAEd,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,EAAE,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;MACpB,MAAM,GAAG,IAAI,CAAC;MACd,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACxB;GACF,EAAE,OAAO,CAAC,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;IACjC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACpC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACnC,MAAM;IACL,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAChC,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC,CAAC;GACJ;CACF;;AAED,SAAS,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,EAAE;EACzD,IAAI,aAAa,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAIA,OAAI,KAAKC,IAAY,IAAI,aAAa,CAAC,WAAW,CAAC,OAAO,KAAKC,SAAe,EAAE;IACvI,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;GAC3C,MAAM;IACL,IAAIF,OAAI,KAAK,eAAe,EAAE;MAC5B,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;MACvC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;KAC9B,MAAM,IAAIA,OAAI,KAAK,SAAS,EAAE;MAC7B,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC,MAAM,IAAI,UAAU,CAACA,OAAI,CAAC,EAAE;MAC3B,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,CAAC,CAAC;KACrD,MAAM;MACL,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC;GACF;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,KAAK,KAAK,EAAE;IACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;GACpC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;IAClC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;GACrD,MAAM;IACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB;CACF;;AAED,SAAS,gBAAgB,CAAC,OAAO,EAAE;EACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;GACnC;;EAED,OAAO,CAAC,OAAO,CAAC,CAAC;CAClB;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;;EAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;EACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;EAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;IACrC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;EACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;EAC1B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;;EAEzB,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;CACjC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC5D,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;EACvC,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;;;EAGjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;;EAEvB,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAC7B,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,aAAa,CAAC;EACjD,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;;EAE9C,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;GACvB;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;;EAE7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO;GACR;;EAED,IAAI,KAAK,GAAG,KAAK,CAAC;MACd,QAAQ,GAAG,KAAK,CAAC;MACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;;EAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC9C,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE;MACT,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAClD,MAAM;MACL,QAAQ,CAAC,MAAM,CAAC,CAAC;KAClB;GACF;;EAED,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;CACjC;;AAED,SAAS,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;EAClC,IAAI;IACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;GACzB,CAAC,OAAO,CAAC,EAAE;IACV,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC1D,IAAI,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;MAClC,KAAK,GAAG,KAAK,CAAC;MACd,KAAK,GAAG,KAAK,CAAC;MACd,SAAS,GAAG,KAAK,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC;;EAEpB,IAAI,WAAW,EAAE;IACf,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEnC,IAAI,KAAK,KAAK,eAAe,EAAE;MAC7B,MAAM,GAAG,IAAI,CAAC;MACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MACpB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KACpB,MAAM;MACL,SAAS,GAAG,IAAI,CAAC;KAClB;;IAED,IAAI,OAAO,KAAK,KAAK,EAAE;MACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;MACnC,OAAO;KACR;GACF,MAAM;IACL,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;;GAE/B,MAAM,IAAI,WAAW,IAAI,SAAS,EAAE;IACnC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,MAAM,EAAE;IACjB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;IAChC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI;IACF,QAAQ,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;MACtC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACzB,EAAE,SAAS,aAAa,CAAC,MAAM,EAAE;MAChC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC,CAAC;GACJ,CAAC,OAAO,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GACpB;CACF;;AAED,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,SAAS,MAAM,GAAG;EAChB,OAAO,EAAE,EAAE,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,OAAO,EAAE;EAC5B,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;EAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;EAC5B,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;CAC3B;;ACrPD,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;CAC7D,AAAC;;AAEF,IAAI,UAAU,GAAG,YAAY;EAC3B,SAAS,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE;IACtC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IACxC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;;IAErC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;MAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;;MAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;OACrC,MAAM;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;UACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;OACF;KACF,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;KACzC;GACF;;EAED,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAChE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;IAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAClC,IAAIF,UAAO,GAAG,CAAC,CAAC,OAAO,CAAC;;;IAGxB,IAAIA,UAAO,KAAKI,SAAe,EAAE;MAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;MAE3B,IAAI,KAAK,KAAKD,IAAY,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;QACtD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;OACjD,MAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB,MAAM,IAAI,CAAC,KAAKE,SAAO,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;OAChC,MAAM;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAUL,UAAO,EAAE;UAC1C,OAAOA,UAAO,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,EAAE,CAAC,CAAC,CAAC;OACR;KACF,MAAM;MACL,IAAI,CAAC,aAAa,CAACA,UAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;IACrE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;;IAG3B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;MAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;;MAElB,IAAI,KAAK,KAAK,QAAQ,EAAE;QACtB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACxB,MAAM;QACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB;KACF;;IAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;MACzB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE;IACtE,IAAI,UAAU,GAAG,IAAI,CAAC;;IAEtB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC7C,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACnD,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACnD,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,UAAU,CAAC;CACnB,EAAE;;ACzGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,AAAe,SAAS,GAAG,CAAC,OAAO,EAAE;EACnC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;;;CAC9C,DCjDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,AAAe,SAAS,IAAI,CAAC,OAAO,EAAE;;EAEpC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;MAC1C,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC;GACJ,MAAM;IACL,OAAO,IAAI,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;MAChD,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;OACvD;KACF,CAAC,CAAC;GACJ;;;CACF,DCjFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAe,SAASM,QAAM,CAAC,MAAM,EAAE;;EAErC,IAAI,WAAW,GAAG,IAAI,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,MAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACzB,OAAO,OAAO,CAAC;;;CAChB,DC9BD,SAAS,aAAa,GAAG;EACvB,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC,CAAC;CAC3G;;AAED,SAAS,QAAQ,GAAG;EAClB,MAAM,IAAI,SAAS,CAAC,uHAAuH,CAAC,CAAC;CAC9I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GD,IAAIF,SAAO,GAAG,YAAY;EACxB,SAAS,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAO,QAAQ,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC;MAClD,IAAI,YAAY,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;KAC1E;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4LD,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;GACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;;IAEtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;MACnC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,OAAO,KAAK,CAAC;OACd,CAAC,CAAC;KACJ,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,MAAM,MAAM,CAAC;OACd,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,OAAO,CAAC;CAChB,EAAE,CAAC;;AAEJA,SAAO,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,AACAA,SAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAClBA,SAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpBA,SAAO,CAAC,OAAO,GAAGG,SAAO,CAAC;AAC1BH,SAAO,CAAC,MAAM,GAAGI,QAAM,CAAC;AACxBJ,SAAO,CAAC,aAAa,GAAG,YAAY,CAAC;AACrCA,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3BA,SAAO,CAAC,KAAK,GAAG,IAAI;;ACxYpB;AACA,AAEe,SAAS,QAAQ,GAAG;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;;EAEnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IACtC,KAAK,GAAG,IAAI,CAAC;GACd,MAAM;IACL,IAAI;MACF,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;KACnC,CAAC,OAAO,CAAC,EAAE;MACV,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;KAC7F;GACF;;EAED,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;;EAEtB,IAAI,CAAC,EAAE;IACL,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI;MACF,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC/D,CAAC,OAAO,CAAC,EAAE;;KAEX;;IAED,IAAI,eAAe,KAAK,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;MACrD,OAAO;KACR;GACF;;EAED,KAAK,CAAC,OAAO,GAAGA,SAAO,CAAC;;;CACzB,DC/BD;AACAA,SAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5BA,SAAO,CAAC,OAAO,GAAGA,SAAO,CAAC;;;;;;;;","file":"es6-promise.js"} \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.min.js b/civicrm/bower_components/es6-promise/es6-promise.min.js deleted file mode 100644 index 1d9dc4877a573b23f88194f0770a5c336d457c76..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){B=t}function r(t){G=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof z?function(){z(a)}:c()}function s(){var t=0,e=new J(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<W;t+=2){var e=V[t],n=V[t+1];e(n),V[t]=void 0,V[t+1]=void 0}W=0}function f(){try{var t=Function("return this")().require("vertx");return z=t.runOnLoop||t.runOnContext,i()}catch(e){return c()}}function l(t,e){var n=this,r=new this.constructor(p);void 0===r[Z]&&O(r);var o=n._state;if(o){var i=arguments[o-1];G(function(){return P(o,r,i,n._result)})}else E(n,r,t,e);return r}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return g(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return nt.error=e,nt}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){G(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?g(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===tt?S(t,e._result):e._state===et?j(t,e._result):E(e,void 0,function(e){return g(t,e)},function(e){return j(t,e)})}function w(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===nt?(j(t,nt.error),nt.error=null):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function g(e,n){e===n?j(e,v()):t(n)?w(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),T(t)}function S(t,e){t._state===$&&(t._result=e,t._state=tt,0!==t._subscribers.length&&G(T,t))}function j(t,e){t._state===$&&(t._state=et,t._result=e,G(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+tt]=n,o[i+et]=r,0===i&&t._state&&G(T,t)}function T(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?P(n,r,o,i):o(i);t._subscribers.length=0}}function M(t,e){try{return t(e)}catch(n){return nt.error=n,nt}}function P(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=void 0,a=void 0;if(i){if(s=M(r,o),s===nt?(a=!0,u=s.error,s.error=null):c=!0,n===s)return void j(n,d())}else s=o,c=!0;n._state!==$||(i&&c?g(n,s):a?j(n,u):t===tt?S(n,s):t===et&&j(n,s))}function x(t,e){try{e(function(e){g(t,e)},function(e){j(t,e)})}catch(n){j(t,n)}}function C(){return rt++}function O(t){t[Z]=rt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function k(){return new Error("Array Methods must be provided an Array")}function F(t){return new ot(this,t).promise}function Y(t){var e=this;return new e(U(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function q(t){var e=this,n=new e(p);return j(n,t),n}function D(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function K(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function L(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=it}var N=void 0;N=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var U=N,W=0,z=void 0,B=void 0,G=function(t,e){V[W]=t,V[W+1]=e,W+=2,2===W&&(B?B(a):X())},H="undefined"!=typeof window?window:void 0,I=H||{},J=I.MutationObserver||I.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),R="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,V=new Array(1e3),X=void 0;X=Q?o():J?s():R?u():void 0===H&&"function"==typeof require?f():c();var Z=Math.random().toString(36).substring(2),$=void 0,tt=1,et=2,nt={error:null},rt=0,ot=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[Z]||O(this.promise),U(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&S(this.promise,this._result))):j(this.promise,k())}return t.prototype._enumerate=function(t){for(var e=0;this._state===$&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==$)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===it){var i=new n(p);w(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===$&&(this._remaining--,t===et?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(tt,e,t)},function(t){return n._settledAt(et,e,t)})},t}(),it=function(){function t(e){this[Z]=C(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&D(),this instanceof t?x(this,e):K())}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype["finally"]=function(t){var e=this,n=e.constructor;return e.then(function(e){return n.resolve(t()).then(function(){return e})},function(e){return n.resolve(t()).then(function(){throw e})})},t}();return it.prototype.then=l,it.all=F,it.race=Y,it.resolve=h,it.reject=q,it._setScheduler=n,it._setAsap=r,it._asap=G,it.polyfill=L,it.Promise=it,it}); \ No newline at end of file diff --git a/civicrm/bower_components/es6-promise/es6-promise.min.map b/civicrm/bower_components/es6-promise/es6-promise.min.map deleted file mode 100644 index 0488c1d80ca9e02601892dd81b683940ccccefb9..0000000000000000000000000000000000000000 --- a/civicrm/bower_components/es6-promise/es6-promise.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n\n if (resolve === originalResolve) {\n var _then = getThen(entry);\n\n if (_then === originalThen && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve) {\n return resolve(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EAClC,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC;EACpB,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;CACjE;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;CAChC;;AAED,AAEC;;AAED,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,IAAI,KAAK,CAAC,OAAO,EAAE;EACjB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;CAC1B,MAAM;EACL,QAAQ,GAAG,UAAU,CAAC,EAAE;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;GAC/D,CAAC;CACH;;AAED,AAAO,IAAI,OAAO,GAAG,QAAQ;;ACtB7B,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC;;AAE/B,AAAO,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;EAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EACrB,GAAG,IAAI,CAAC,CAAC;EACT,IAAI,GAAG,KAAK,CAAC,EAAE;;;;IAIb,IAAI,iBAAiB,EAAE;MACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC1B,MAAM;MACL,aAAa,EAAE,CAAC;KACjB;GACF;CACF,CAAC;;AAEF,AAAO,SAAS,YAAY,CAAC,UAAU,EAAE;EACvC,iBAAiB,GAAG,UAAU,CAAC;CAChC;;AAED,AAAO,SAAS,OAAO,CAAC,MAAM,EAAE;EAC9B,IAAI,GAAG,MAAM,CAAC;CACf;;AAED,IAAI,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACvE,IAAI,aAAa,GAAG,aAAa,IAAI,EAAE,CAAC;AACxC,IAAI,uBAAuB,GAAG,aAAa,CAAC,gBAAgB,IAAI,aAAa,CAAC,sBAAsB,CAAC;AACrG,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;;;AAG/H,IAAI,QAAQ,GAAG,OAAO,iBAAiB,KAAK,WAAW,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW,CAAC;;;AAGzI,SAAS,WAAW,GAAG;;;EAGrB,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;GAChC,CAAC;CACH;;;AAGD,SAAS,aAAa,GAAG;EACvB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;IACpC,OAAO,YAAY;MACjB,SAAS,CAAC,KAAK,CAAC,CAAC;KAClB,CAAC;GACH;;EAED,OAAO,aAAa,EAAE,CAAC;CACxB;;AAED,SAAS,mBAAmB,GAAG;EAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,IAAI,QAAQ,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;EAClD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;EACvC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;;EAEhD,OAAO,YAAY;IACjB,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;GAC3C,CAAC;CACH;;;AAGD,SAAS,iBAAiB,GAAG;EAC3B,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;EACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAChC,OAAO,YAAY;IACjB,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;GACrC,CAAC;CACH;;AAED,SAAS,aAAa,GAAG;;;EAGvB,IAAI,gBAAgB,GAAG,UAAU,CAAC;EAClC,OAAO,YAAY;IACjB,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GACnC,CAAC;CACH;;AAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAS,KAAK,GAAG;EACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEvB,QAAQ,CAAC,GAAG,CAAC,CAAC;;IAEd,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;GAC1B;;EAED,GAAG,GAAG,CAAC,CAAC;CACT;;AAED,SAAS,YAAY,GAAG;EACtB,IAAI;IACF,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC;IAClD,OAAO,aAAa,EAAE,CAAC;GACxB,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,aAAa,EAAE,CAAC;GACxB;CACF;;AAED,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC;;AAE3B,IAAI,MAAM,EAAE;EACV,aAAa,GAAG,WAAW,EAAE,CAAC;CAC/B,MAAM,IAAI,uBAAuB,EAAE;EAClC,aAAa,GAAG,mBAAmB,EAAE,CAAC;CACvC,MAAM,IAAI,QAAQ,EAAE;EACnB,aAAa,GAAG,iBAAiB,EAAE,CAAC;CACrC,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACvE,aAAa,GAAG,YAAY,EAAE,CAAC;CAChC,MAAM;EACL,aAAa,GAAG,aAAa,EAAE,CAAC;;;CACjC,DCtHc,SAAS,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;EACvD,IAAI,MAAM,GAAG,IAAI,CAAC;;EAElB,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;EAEvC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;IACnC,WAAW,CAAC,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;;EAG3B,IAAI,MAAM,EAAE;IACV,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY;MACf,OAAO,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KAChE,CAAC,CAAC;GACJ,MAAM;IACL,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;GACtD;;EAED,OAAO,KAAK,CAAC;;;CACd,DCxBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,AAAe,SAASA,SAAO,CAAC,MAAM,EAAE;;EAEtC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;IAC9E,OAAO,MAAM,CAAC;GACf;;EAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,OAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EAC1B,OAAO,OAAO,CAAC;;;CAChB,DCrCM,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAEhE,SAAS,IAAI,GAAG,EAAE;;AAElB,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC;AACrB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEtC,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;CAClE;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;CAC9E;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI;IACF,OAAO,OAAO,CAAC,IAAI,CAAC;GACrB,CAAC,OAAO,KAAK,EAAE;IACd,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,OAAO,CAACC,OAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;EAClE,IAAI;IACFA,OAAI,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;GACxD,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,CAAC;GACV;CACF;;AAED,SAAS,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAEA,OAAI,EAAE;EACtD,IAAI,CAAC,UAAU,OAAO,EAAE;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,OAAO,CAACA,OAAI,EAAE,QAAQ,EAAE,UAAU,KAAK,EAAE;MACnD,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;MACd,IAAI,QAAQ,KAAK,KAAK,EAAE;QACtB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB,MAAM;QACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACzB;KACF,EAAE,UAAU,MAAM,EAAE;MACnB,IAAI,MAAM,EAAE;QACV,OAAO;OACR;MACD,MAAM,GAAG,IAAI,CAAC;;MAEd,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,EAAE,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;MACpB,MAAM,GAAG,IAAI,CAAC;MACd,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACxB;GACF,EAAE,OAAO,CAAC,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;IACjC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACpC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;GACnC,MAAM;IACL,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KAChC,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC,CAAC;GACJ;CACF;;AAED,SAAS,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,EAAE;EACzD,IAAI,aAAa,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,IAAIA,OAAI,KAAKC,IAAY,IAAI,aAAa,CAAC,WAAW,CAAC,OAAO,KAAKC,SAAe,EAAE;IACvI,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;GAC3C,MAAM;IACL,IAAIF,OAAI,KAAK,eAAe,EAAE;MAC5B,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;MACvC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;KAC9B,MAAM,IAAIA,OAAI,KAAK,SAAS,EAAE;MAC7B,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC,MAAM,IAAI,UAAU,CAACA,OAAI,CAAC,EAAE;MAC3B,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAEA,OAAI,CAAC,CAAC;KACrD,MAAM;MACL,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACjC;GACF;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,KAAK,KAAK,EAAE;IACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;GACpC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;IAClC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;GACrD,MAAM;IACL,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB;CACF;;AAED,SAAS,gBAAgB,CAAC,OAAO,EAAE;EACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;GACnC;;EAED,OAAO,CAAC,OAAO,CAAC,CAAC;CAClB;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;;EAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;EACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;EAE3B,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;IACrC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;EAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;IAC9B,OAAO;GACR;EACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;EAC1B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;;EAEzB,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;CACjC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC5D,IAAI,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;EACvC,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;;;EAGjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;;EAEvB,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;EAC7B,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,aAAa,CAAC;EACjD,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC;;EAE9C,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;GACvB;CACF;;AAED,SAAS,OAAO,CAAC,OAAO,EAAE;EACxB,IAAI,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;;EAE7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO;GACR;;EAED,IAAI,KAAK,GAAG,KAAK,CAAC;MACd,QAAQ,GAAG,KAAK,CAAC;MACjB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;;EAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC9C,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE;MACT,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAClD,MAAM;MACL,QAAQ,CAAC,MAAM,CAAC,CAAC;KAClB;GACF;;EAED,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;CACjC;;AAED,SAAS,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;EAClC,IAAI;IACF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;GACzB,CAAC,OAAO,CAAC,EAAE;IACV,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,OAAO,eAAe,CAAC;GACxB;CACF;;AAED,SAAS,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC1D,IAAI,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;MAClC,KAAK,GAAG,KAAK,CAAC;MACd,KAAK,GAAG,KAAK,CAAC;MACd,SAAS,GAAG,KAAK,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC;;EAEpB,IAAI,WAAW,EAAE;IACf,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEnC,IAAI,KAAK,KAAK,eAAe,EAAE;MAC7B,MAAM,GAAG,IAAI,CAAC;MACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MACpB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KACpB,MAAM;MACL,SAAS,GAAG,IAAI,CAAC;KAClB;;IAED,IAAI,OAAO,KAAK,KAAK,EAAE;MACrB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;MACnC,OAAO;KACR;GACF,MAAM;IACL,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;;GAE/B,MAAM,IAAI,WAAW,IAAI,SAAS,EAAE;IACnC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,MAAM,EAAE;IACjB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE;IAChC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACzB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GACxB;CACF;;AAED,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;EAC5C,IAAI;IACF,QAAQ,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;MACtC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACzB,EAAE,SAAS,aAAa,CAAC,MAAM,EAAE;MAChC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC,CAAC;GACJ,CAAC,OAAO,CAAC,EAAE;IACV,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GACpB;CACF;;AAED,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,SAAS,MAAM,GAAG;EAChB,OAAO,EAAE,EAAE,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,OAAO,EAAE;EAC5B,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;EAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;EAC5B,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;CAC3B;;ACrPD,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;CAC7D,AAAC;;AAEF,IAAI,UAAU,GAAG,YAAY;EAC3B,SAAS,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE;IACtC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IACxC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;;IAErC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC7B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;MAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;;MAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;OACrC,MAAM;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;UACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;OACF;KACF,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;KACzC;GACF;;EAED,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAChE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9B;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE;IAC9D,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAClC,IAAIF,UAAO,GAAG,CAAC,CAAC,OAAO,CAAC;;;IAGxB,IAAIA,UAAO,KAAKI,SAAe,EAAE;MAC/B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;MAE3B,IAAI,KAAK,KAAKD,IAAY,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;QACtD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;OACjD,MAAM,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB,MAAM,IAAI,CAAC,KAAKE,SAAO,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;OAChC,MAAM;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,UAAUL,UAAO,EAAE;UAC1C,OAAOA,UAAO,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,EAAE,CAAC,CAAC,CAAC;OACR;KACF,MAAM;MACL,IAAI,CAAC,aAAa,CAACA,UAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;IACrE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;;IAG3B,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;MAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;;MAElB,IAAI,KAAK,KAAK,QAAQ,EAAE;QACtB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;OACxB,MAAM;QACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACzB;KACF;;IAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;MACzB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;GACF,CAAC;;EAEF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE;IACtE,IAAI,UAAU,GAAG,IAAI,CAAC;;IAEtB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,KAAK,EAAE;MAC7C,OAAO,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACnD,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACnD,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,UAAU,CAAC;CACnB,EAAE;;ACzGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,AAAe,SAAS,GAAG,CAAC,OAAO,EAAE;EACnC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;;;CAC9C,DCjDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,AAAe,SAAS,IAAI,CAAC,OAAO,EAAE;;EAEpC,IAAI,WAAW,GAAG,IAAI,CAAC;;EAEvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IACrB,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;MAC1C,OAAO,MAAM,CAAC,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC,CAAC;KACjE,CAAC,CAAC;GACJ,MAAM;IACL,OAAO,IAAI,WAAW,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;MAChD,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;MAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;OACvD;KACF,CAAC,CAAC;GACJ;;;CACF,DCjFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,AAAe,SAASM,QAAM,CAAC,MAAM,EAAE;;EAErC,IAAI,WAAW,GAAG,IAAI,CAAC;EACvB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;EACpCC,MAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;EACzB,OAAO,OAAO,CAAC;;;CAChB,DC9BD,SAAS,aAAa,GAAG;EACvB,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC,CAAC;CAC3G;;AAED,SAAS,QAAQ,GAAG;EAClB,MAAM,IAAI,SAAS,CAAC,uHAAuH,CAAC,CAAC;CAC9I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GD,IAAIF,SAAO,GAAG,YAAY;EACxB,SAAS,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;IAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAO,QAAQ,KAAK,UAAU,IAAI,aAAa,EAAE,CAAC;MAClD,IAAI,YAAY,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAE,CAAC;KAC1E;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4LD,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;GACrC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,QAAQ,EAAE;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;;IAEtC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;MACnC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,OAAO,KAAK,CAAC;OACd,CAAC,CAAC;KACJ,EAAE,UAAU,MAAM,EAAE;MACnB,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;QACtD,MAAM,MAAM,CAAC;OACd,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ,CAAC;;EAEF,OAAO,OAAO,CAAC;CAChB,EAAE,CAAC;;AAEJA,SAAO,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,AACAA,SAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAClBA,SAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACpBA,SAAO,CAAC,OAAO,GAAGG,SAAO,CAAC;AAC1BH,SAAO,CAAC,MAAM,GAAGI,QAAM,CAAC;AACxBJ,SAAO,CAAC,aAAa,GAAG,YAAY,CAAC;AACrCA,SAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC3BA,SAAO,CAAC,KAAK,GAAG,IAAI;;ACxYpB;AACA,AAEe,SAAS,QAAQ,GAAG;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC;;EAEnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;IACtC,KAAK,GAAG,IAAI,CAAC;GACd,MAAM;IACL,IAAI;MACF,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;KACnC,CAAC,OAAO,CAAC,EAAE;MACV,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;KAC7F;GACF;;EAED,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;;EAEtB,IAAI,CAAC,EAAE;IACL,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI;MACF,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC/D,CAAC,OAAO,CAAC,EAAE;;KAEX;;IAED,IAAI,eAAe,KAAK,kBAAkB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;MACrD,OAAO;KACR;GACF;;EAED,KAAK,CAAC,OAAO,GAAGA,SAAO,CAAC;;;CACzB,DC/BD;AACAA,SAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5BA,SAAO,CAAC,OAAO,GAAGA,SAAO,CAAC;;;;;;;;","file":"es6-promise.min.js"} \ No newline at end of file diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php index a7c635d482727d3f11c79fe06933f2c965cf7432..4dad4984e4e7e74f9bc972b301d45bfa34837c66 100644 --- a/civicrm/civicrm-version.php +++ b/civicrm/civicrm-version.php @@ -1,7 +1,7 @@ <?php /** @deprecated */ function civicrmVersion( ) { - return array( 'version' => '5.67.3', + return array( 'version' => '5.68.0', 'cms' => 'Wordpress', 'revision' => '' ); } diff --git a/civicrm/composer.json b/civicrm/composer.json index 6c7c18a5225acf9ff569198d596967239b1be6fa..f29ffaa536553cc57346fad866120e8155779284 100644 --- a/civicrm/composer.json +++ b/civicrm/composer.json @@ -102,7 +102,7 @@ "symfony/polyfill-php80": "^1.0", "symfony/polyfill-php81": "^1.0", "symfony/polyfill-php82": "^1.0", - "html2text/html2text": "^4.3.1", + "soundasleep/html2text": "^2.1", "psr/container": "~1.0 || ~2.0", "ext-fileinfo": "*" }, @@ -202,9 +202,6 @@ "path": "bower_components/es-module-shims/dist/es-module-shims.js", "_comment": "See also https://github.com/guybedford/es-module-shims/. MIT license." }, - "es6-promise": { - "url": "https://github.com/components/es6-promise/archive/v4.2.4.zip" - }, "ext-greenwich-bootstrap3": { "url": "https://github.com/twbs/bootstrap-sass/archive/v{$version}.zip", "path": "ext/greenwich/extern/bootstrap3", @@ -275,9 +272,6 @@ "Update gitignore to ensure that sites that manage via git don't miss out on the important db.json file": "https://patch-diff.githubusercontent.com/raw/adrienrn/php-mimetyper/pull/15.patch", "Apply patch to fix php8.2 deprecation notice on dynamic property $filename": "https://patch-diff.githubusercontent.com/raw/adrienrn/php-mimetyper/pull/17.patch" }, - "html2text/html2text": { - "Fix deprecation warning in php8.1 on html_entity_decode": "https://raw.githubusercontent.com/civicrm/civicrm-core/e758d20e9f613ca6c4cf652c23d2cd7e5d3af3ce/tools/scripts/composer/html2text_html2_text_php81_deprecation.patch" - }, "pear/db": { "Apply patch to ensure that MySQLI reporting remains the same in php8.1": "https://patch-diff.githubusercontent.com/raw/pear/DB/pull/13.patch", "Apply patch to fix deprecations in php8.2": "https://patch-diff.githubusercontent.com/raw/pear/DB/pull/14.patch", diff --git a/civicrm/composer.lock b/civicrm/composer.lock index 9e499313afdcec32f66524a9abcff7efd9921739..2bd8d4e50ea2d99fdd1f043424456dd684deccbe 100644 --- a/civicrm/composer.lock +++ b/civicrm/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "11bd73682ccf3e9de1d825ce08bbf371", + "content-hash": "877911b3eb22b827449c0a1b597d2703", "packages": [ { "name": "adrienrn/php-mimetyper", @@ -966,47 +966,6 @@ ], "time": "2023-04-17T16:00:37+00:00" }, - { - "name": "html2text/html2text", - "version": "4.3.1", - "source": { - "type": "git", - "url": "https://github.com/mtibben/html2text.git", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtibben/html2text/zipball/61ad68e934066a6f8df29a3d23a6460536d0855c", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-mbstring": "For best performance", - "symfony/polyfill-mbstring": "If you can't install ext-mbstring" - }, - "type": "library", - "autoload": { - "psr-4": { - "Html2Text\\": [ - "src/", - "test/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Converts HTML to formatted plain text", - "support": { - "issues": "https://github.com/mtibben/html2text/issues", - "source": "https://github.com/mtibben/html2text/tree/4.3.1" - }, - "time": "2020-04-16T23:44:31+00:00" - }, { "name": "laminas/laminas-escaper", "version": "2.6.1", @@ -3414,6 +3373,61 @@ }, "time": "2022-05-16T07:22:18+00:00" }, + { + "name": "soundasleep/html2text", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/soundasleep/html2text.git", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/soundasleep/html2text/zipball/83502b6f8f1aaef8e2e238897199d64f284b4af3", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.3|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Soundasleep\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jevon Wright", + "homepage": "https://jevon.org", + "role": "Developer" + } + ], + "description": "A PHP script to convert HTML into a plain text format", + "homepage": "https://github.com/soundasleep/html2text", + "keywords": [ + "email", + "html", + "php", + "text" + ], + "support": { + "email": "support@jevon.org", + "issues": "https://github.com/soundasleep/html2text/issues", + "source": "https://github.com/soundasleep/html2text/tree/2.1.0" + }, + "time": "2023-01-06T09:28:15+00:00" + }, { "name": "symfony/config", "version": "v4.4.42", diff --git a/civicrm/css/joomla.css b/civicrm/css/joomla.css index 7e902f35ba8edcde9a0976de47c41d168afa08ff..46eb7ab7d521be09819039eccf890e6be2e74d25 100644 --- a/civicrm/css/joomla.css +++ b/civicrm/css/joomla.css @@ -6,11 +6,9 @@ div#toolbar-box .icon-48-generic { display: none; } - div#toolbar-box { height: 26px; } - fieldset { margin-bottom: 1em; padding: .5em; @@ -31,12 +29,10 @@ img { #crm-container tr td { font-size: 1em; } - /* Added in CiviCRM 2.1 to overwrite tiny font in TinyMCE editor. */ #crm-container #content table.mceLayout td { font-size: 0em; } - th { text-align: left; padding-right: 1em; @@ -52,11 +48,9 @@ tr.light { border-bottom: 1px solid #ccc; padding: 0.1em 0.6em; } - td.active { background-color: #ddd; } - td.label { background: none; color: #3e3e3e; @@ -67,7 +61,7 @@ td.label { ** Other common styles */ .breadcrumb { - padding-bottom: .5em + padding-bottom: .5em; } .block ul { margin: 0; @@ -228,19 +222,9 @@ br.clear { border-color: red; color: red; } -#sidebar-left, -#sidebar-right { - background-color: #ddd; - width: 16em; - /* padding in px not ex because IE messes up 100% width tables otherwise */ - padding: 20px; - vertical-align: top; -} - -#content-right { - background-color: #ffffff; +#crm-content { + padding: 1rem; } - #footer { padding: 1em; font-size: 0.8em; @@ -289,7 +273,6 @@ br.clear { .box .title { font-size: 1.1em; } - #module-status, .version { font-size: 11px; @@ -304,19 +287,16 @@ br.clear { /* Joomla Admin Menu alterations */ /* Moved from civicrm.css in v3.2 */ - div#toolbar-box div.m { padding: 0px !important; min-height: 0; border: 0; margin-top: 8px; } - div#toolbar-box, div#toolbar-box div.m { height: auto; } - .crm-tab-button, .ui-tabs .ui-tabs-nav li { border: 1px; @@ -333,9 +313,6 @@ div#toolbar-box div.m { padding-bottom: 0; border: 1px solid #999 !important; } -#crm-container { - font-size: 11px; -} #crm-container .col1 { margin: 0; } @@ -345,11 +322,9 @@ div#toolbar-box div.m { .ac_results .ac_odd { background-color: #444; } - #crm-notification-container { top: 100px; } - .crm-container textarea, .crm-container input, .crm-container select { @@ -369,22 +344,18 @@ div#toolbar-box div.m { .crm-container button[type=submit] { height: auto; } - .crm-container .disabled { font-weight: normal; } - #crm-container .form-layout td.label, .crm-container .form-layout td.label { width: inherit; } - #crm-container .crm-event-form-fee-block .label { background-color: inherit; width: inherit; display: block; } - /* dev/core#874 the width:auto styling above causes the menubar colour picker to be squeezed */ .crm-container input.crm-form-color { width: 3.6em; @@ -405,10 +376,6 @@ body.admin.com_civicrm.task-civicrmupgrade .container-fluid.container-main { body.admin.com_civicrm #crm-nav-menu-container { padding-bottom: 0 !important; } -body.admin.com_civicrm #content-right { - padding: 12px; -} - /* Make footer admin bar hide behind popup windows (CRM-15723) */ body.ui-dialog-open #status { z-index: 100 !important; @@ -416,18 +383,12 @@ body.ui-dialog-open #status { /* Joomla 4 */ -body.admin.com_civicrm.layout-default #content { - padding: 0; -} - body.admin.com_civicrm.layout-default #subhead-container { display: none; } - body.admin.com_civicrm.layout-default .crm-container .crm-dashlet { max-width: 50vw; /* fixes over-wide news dashlet */ } - body.admin.com_civicrm.layout-default .crm-container .content { padding: inherit; /* overrides J4 duplicated padding */ } @@ -437,11 +398,9 @@ body.admin.com_civicrm.layout-default .crm-container .content { body.admin.com_civicrm.layout-default .crm-container.ui-dialog.ui-resizable { z-index: 1021; } - body.admin.com_civicrm.layout-default .ui-widget-overlay { z-index: 1; } - body.admin.com_civicrm.layout-default .crm-container .modal-dialog { max-width: inherit; padding: 0; diff --git a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php index cf283b74a7f33a0dd368a1a8de58c0c6bc6cd144..e1516a21e644b887b5c4481227274fd14ca3e27f 100644 --- a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php +++ b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php @@ -13,6 +13,12 @@ class AfformAdminMeta { * @return array */ public static function getAdminSettings() { + $afformPlacement = \CRM_Utils_Array::formatForSelect2((array) \Civi\Api4\OptionValue::get(FALSE) + ->addSelect('value', 'label', 'icon', 'description') + ->addWhere('is_active', '=', TRUE) + ->addWhere('option_group_id:name', '=', 'afform_placement') + ->addOrderBy('weight') + ->execute(), 'label', 'value'); $afformTypes = (array) \Civi\Api4\OptionValue::get(FALSE) ->addSelect('name', 'label', 'icon') ->addWhere('is_active', '=', TRUE) @@ -31,6 +37,7 @@ class AfformAdminMeta { } return [ 'afform_type' => $afformTypes, + 'afform_placement' => $afformPlacement, 'search_operators' => \Civi\Afform\Utils::getSearchOperators(), ]; } diff --git a/civicrm/ext/afform/admin/ang/afAdmin.js b/civicrm/ext/afform/admin/ang/afAdmin.js index 8d45473732edc232d2c3ca791a90eceea8bdf811..af06f68e98cb3cb21c20ba09faa5054bad6cb854 100644 --- a/civicrm/ext/afform/admin/ang/afAdmin.js +++ b/civicrm/ext/afform/admin/ang/afAdmin.js @@ -11,7 +11,7 @@ // Load data for lists afforms: function(crmApi4) { return crmApi4('Afform', 'get', { - select: ['name', 'title', 'type', 'server_route', 'is_public', 'submission_count', 'submission_date', 'submit_limit', 'submit_enabled', 'submit_currently_open', 'has_local', 'has_base', 'base_module', 'base_module:label', 'is_dashlet', 'contact_summary:label'] + select: ['name', 'title', 'type', 'server_route', 'is_public', 'submission_count', 'submission_date', 'submit_limit', 'submit_enabled', 'submit_currently_open', 'has_local', 'has_base', 'base_module', 'base_module:label', 'placement:label'] }); } } diff --git a/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js b/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js index 70c9536f936e1cff667f01378dc3393565269ceb..621947cf52344d648b14cd2cc6a7b21c459a1ebf 100644 --- a/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js +++ b/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js @@ -24,14 +24,7 @@ this.afforms = _.transform(afforms, function(afforms, afform) { afform.type = afform.type || 'system'; - // Aggregate a couple fields for the "Placement" column - afform.placement = []; - if (afform.is_dashlet) { - afform.placement.push(ts('Dashboard')); - } - if (afform['contact_summary:label']) { - afform.placement.push(afform['contact_summary:label']); - } + afform.placement = afform['placement:label']; if (afform.submission_date) { afform.submission_date = CRM.utils.formatDate(afform.submission_date); } diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor.js b/civicrm/ext/afform/admin/ang/afGuiEditor.js index 120798c721265e1e09ddbccc7248f10d66d787b2..6b52f6228d27c233bb49b09039f61065aab4ec34 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor.js +++ b/civicrm/ext/afform/admin/ang/afGuiEditor.js @@ -141,7 +141,7 @@ }); }, - meta: CRM.afGuiEditor, + meta: _.extend(CRM.afGuiEditor, CRM.afAdmin), getEntity: function(entityName) { return CRM.afGuiEditor.entities[entityName]; diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js index 07eb9fabeb69d5468ce2a2d72ef8df7478ea3587..d2279c950f66b06f1183f0d50de5973b3044abfe 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js @@ -99,10 +99,10 @@ delete editor.afform.name; delete editor.afform.server_route; delete editor.afform.navigation; - editor.afform.is_dashlet = false; editor.afform.title += ' ' + ts('(copy)'); } editor.afform.icon = editor.afform.icon || 'fa-list-alt'; + editor.afform.placement = editor.afform.placement || []; $scope.canvasTab = 'layout'; $scope.layoutHtml = ''; $scope.entities = {}; @@ -332,14 +332,16 @@ return filter ? _.filter($scope.entities, filter) : _.toArray($scope.entities); }; - this.toggleContactSummary = function() { - if (editor.afform.contact_summary) { - editor.afform.contact_summary = null; + this.isContactSummary = function() { + return editor.afform.placement.includes('contact_summary_block') || editor.afform.placement.includes('contact_summary_tab'); + }; + + this.onChangePlacement = function() { + if (!editor.isContactSummary()) { _.each(editor.searchDisplays, function(searchDisplay) { delete searchDisplay.element.filters; }); } else { - editor.afform.contact_summary = 'block'; _.each(editor.searchDisplays, function(searchDisplay) { var filterOptions = getSearchFilterOptions(searchDisplay.settings); if (filterOptions.length) { diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html index 1d1001f88815fa3816450bb6b4f86fc4c9072c1f..4f52e8b0e02decb2e81e96fff043bc17394ae05e 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html @@ -77,4 +77,12 @@ </div> </div> </fieldset> + + <fieldset> + <legend>{{:: ts('Options') }}</legend> + <label>{{:: ts('Remember Filters') }} <input type="checkbox" ng-model="$ctrl.display.fieldset['store-values']"></label> + <p class="help-block"> + {{:: ts('Filter fields will retain their value when the same user revisits the form.') }} + </p> + </fieldset> </div> diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html index d18e23cfdca1c51f18ec4229cb74c66c21d06621..b439b4c81621c6e6af7f12eaef4b775804ef5336 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html @@ -43,7 +43,7 @@ <label for="af_config_form_server_route"> {{:: ts('Page Route') }} </label> - <input ng-model="editor.afform.server_route" name="server_route" class="form-control" id="af_config_form_server_route" pattern="^civicrm\/[-0-9a-zA-Z\/_]+$" onfocus="this.value = this.value || 'civicrm/'" onblur="if (this.value === 'civicrm/') this.value = ''" title="{{:: ts('Path must begin with "civicrm/"') }}" ng-model-options="editor.debounceMode"> + <input ng-model="editor.afform.server_route" name="server_route" class="form-control" id="af_config_form_server_route" pattern="^civicrm\/[-0-9a-zA-Z\/_]+$" onfocus="this.value = this.value || 'civicrm/'" onblur="if (this.value === 'civicrm/') this.value = ''" title="{{:: ts('Path must begin with "civicrm/"') }}" placeholder="{{:: ts('None') }}" ng-model-options="editor.debounceMode"> <p class="help-block">{{:: ts('Expose the form as a standalone webpage. (Example: "civicrm/my-form")') }}</p> </div> @@ -54,14 +54,6 @@ </label> </div> - <div class="form-group" ng-if="!!editor.afform.server_route"> - <label> - <input type="checkbox" ng-model="editor.afform.is_token"> - {{:: ts('Provide Email Token') }} - </label> - <p class="help-block">{{:: ts('Allows CiviMail authors to easily link to this page') }}</p> - </div> - <div class="form-group"> <div class="form-inline"> <label ng-class="{disabled: !editor.afform.server_route}"> @@ -92,33 +84,22 @@ </div> <div class="form-group"> + <label for="afform_placement"> + {{:: ts('Expose To') }} + </label> + <input ng-list crm-ui-select="{multiple: true, data: editor.meta.afform_placement, placeholder: ts('None')}" class="form-control" id="afform_placement" ng-model="editor.afform.placement" ng-change="editor.onChangePlacement()"> + <p class="help-block">{{:: ts('Additional contexts in which the form can be embedded') }}</p> + </div> + + <div class="form-group" ng-if="editor.afform.placement.includes('contact_summary_block') || editor.afform.placement.includes('contact_summary_tab')"> <div class="form-inline"> - <label> - <input type="checkbox" ng-checked="editor.afform.contact_summary" ng-click="editor.toggleContactSummary()"> - {{:: ts('Add to Contact Summary Page') }} - </label> - <select class="form-control" ng-model="editor.afform.contact_summary" ng-if="editor.afform.contact_summary"> - <option value="block">{{:: ts('As Block') }}</option> - <option value="tab">{{:: ts('As Tab') }}</option> - </select> + <label for="afform_summary_contact_type">{{:: ts('For') }}</label> + <input class="form-control" crm-autocomplete="'ContactType'" id="afform_summary_contact_type" ng-model="editor.afform.summary_contact_type" auto-open="true" multi="true" crm-autocomplete-params="{key: 'name'}" placeholder="{{:: ts('Any contact type') }}"> </div> - <div class="form-inline" ng-if="editor.afform.contact_summary"> + <div class="form-inline"> <label for="afform_summary_weight">{{:: ts('Position') }}</label> <input class="form-control" type="number" id="afform_summary_weight" ng-model="editor.afform.summary_weight" placeholder="{{:: ts('Auto') }}"> - <label for="afform_summary_contact_type">{{:: ts('For') }}</label> - <input class="form-control" crm-autocomplete="'ContactType'" id="afform_summary_contact_type" ng-model="editor.afform.summary_contact_type" auto-open="true" multi="true" crm-autocomplete-params="{key: 'name'}" placeholder="{{:: ts('Any contact type') }}"> </div> - <p class="help-block" ng-show="editor.afform.contact_summary"> - {{:: ts('Placement can be configured using the Contact Layout Editor.') }} - </p> - </div> - - <div class="form-group"> - <label> - <input type="checkbox" ng-model="editor.afform.is_dashlet"> - {{:: ts('Add to Dashboard') }} - </label> - <p class="help-block">{{:: ts('Allow CiviCRM users to add the form to their home dashboard.') }}</p> </div> </fieldset> diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html index 9c49cbcccdc757d1e28ce607fd22f63da932baf7..ea4c90169380a3207d3d77e39ccce8b1a8efe811 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html @@ -38,6 +38,11 @@ <input crm-ui-select="{data: $ctrl.editor.securityModes}" ng-model="getSet('security')" ng-model-options="{getterSetter: true}" class="form-control"> </div> </li> +<li ng-if="$ctrl.fieldDefn.input_type === 'EntityRef'" title="{{:: ts('Allow a new entity to be created via quick-add popup') }}"> + <div href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown"> + <input crm-ui-select="{data: $ctrl.quickAddLinks, multiple: true, placeholder: ts('Quick Add')}" ng-model="getSet('input_attrs.quickAdd')" ng-model-options="{getterSetter: true}" ng-list class="form-control"> + </div> +</li> <li ng-if="$ctrl.fieldDefn.input_type === 'EntityRef'"> <a href ng-click="toggleAttr('input_attrs.autoOpen'); $event.stopPropagation(); $event.target.blur();" title="{{:: ts('Show autocomplete results without typing') }}"> <i class="crm-i fa-{{ getProp('input_attrs.autoOpen') ? 'check-' : '' }}square-o"></i> diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js index 8772532e281a59f917395ef27528d029e4faaea0..9e94963cf5aa085d0739b8cfc79a3eb2a792edf1 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js @@ -47,6 +47,19 @@ inputTypes.push(type); } }); + // Quick-add links for autocompletes + this.quickAddLinks = []; + let allowedEntity = (ctrl.getFkEntity() || {}).entity; + let allowedEntities = (allowedEntity === 'Contact') ? ['Individual', 'Household', 'Organization'] : [allowedEntity]; + (CRM.config.quickAdd || []).forEach((link) => { + if (allowedEntities.includes(link.entity)) { + this.quickAddLinks.push({ + id: link.path, + icon: link.icon, + text: link.title, + }); + } + }); this.searchOperators = CRM.afAdmin.search_operators; // If field has limited operators, set appropriately if (ctrl.fieldDefn.operators && ctrl.fieldDefn.operators.length) { @@ -181,6 +194,7 @@ return !(defn.options || defn.data_type === 'Boolean'); case 'DisplayOnly': + case 'Hidden': return true; default: diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Hidden.html b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Hidden.html new file mode 100644 index 0000000000000000000000000000000000000000..c19e65aec0fc4aefe0d8396b7be88d20aee4c535 --- /dev/null +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Hidden.html @@ -0,0 +1 @@ +<div class="form-inline"></div> diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml index 0f4080908f82539fd0ac1e01d79efe652cb4b4e7..71d5289947306402c24e77229e37e815e9876f46 100644 --- a/civicrm/ext/afform/admin/info.xml +++ b/civicrm/ext/afform/admin/info.xml @@ -12,11 +12,11 @@ <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-09</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>FormBuilder provides a UI to administer and edit forms. It is an optional admin tool and not required for the forms to function.</comments> <requires> diff --git a/civicrm/ext/afform/admin/managed/Navigation_afform_admin.mgd.php b/civicrm/ext/afform/admin/managed/Navigation_afform_admin.mgd.php index b154173fcefc96c1bf79d7c8f1c6cc7a23129255..730c3a7db6130f5abe4e70c53a0bdd67814fd526 100644 --- a/civicrm/ext/afform/admin/managed/Navigation_afform_admin.mgd.php +++ b/civicrm/ext/afform/admin/managed/Navigation_afform_admin.mgd.php @@ -1,13 +1,9 @@ <?php use CRM_AfformAdmin_ExtensionUtil as E; -$menuItems = []; -$domains = \Civi\Api4\Domain::get(FALSE) - ->addSelect('id') - ->execute(); -foreach ($domains as $domain) { - $menuItems[] = [ - 'name' => 'Navigation_afform_admin_domain_' . $domain['id'], +return [ + [ + 'name' => 'Navigation_afform_admin', 'entity' => 'Navigation', 'cleanup' => 'always', 'update' => 'unmodified', @@ -26,10 +22,8 @@ foreach ($domains as $domain) { 'url' => 'civicrm/admin/afform', 'is_active' => 1, 'icon' => 'crm-i fa-list-alt', - 'domain_id' => $domain['id'], ], 'match' => ['domain_id', 'name'], ], - ]; -} -return $menuItems; + ], +]; diff --git a/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php index 766b66c1b393b9b55580e8292349a2d4cd31b1fd..427c255b5f59756b79c3e3feacfdab7af11f9abc 100644 --- a/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php +++ b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php @@ -3,8 +3,8 @@ /** * Class CRM_Afform_AfformScanner * - * The AfformScanner searches the extensions and `civicrm.files` for subfolders - * named `afform`. Each item in there is interpreted as a form instance. + * The AfformScanner searches the `ang` directory of extensions and `civicrm.files` for files + * named `*.aff.*`. Each item is interpreted as a form instance. * * To reduce file-scanning, we keep a cache of file paths. */ @@ -36,7 +36,7 @@ class CRM_Afform_AfformScanner { * Get a list of all forms and their file paths. * * @return array - * Ex: ['view-individual' => ['/var/www/foo/afform/view-individual']] + * Ex: ['afformViewIndividual' => ['/var/www/foo/ang/afformViewIndividual']] */ public function findFilePaths(): array { if ($this->isUseCachedPaths()) { @@ -86,16 +86,16 @@ class CRM_Afform_AfformScanner { } /** - * Get the full path to the given file. + * Get the absolute path to the given file. * * @param string $formName - * Ex: 'view-individual' + * Ex: 'afformViewIndividual' * @param string $suffix * Ex: 'aff.json' * @return string|NULL - * Ex: '/var/www/sites/default/files/civicrm/afform/view-individual.aff.json' + * Ex: '/var/www/sites/default/files/civicrm/ang/afform/afformViewIndividual.aff.json' */ - public function findFilePath($formName, $suffix) { + public function findFilePath(string $formName, string $suffix): ?string { $paths = $this->findFilePaths(); if (isset($paths[$formName])) { @@ -110,21 +110,21 @@ class CRM_Afform_AfformScanner { } /** - * Determine the path where we can write our own customized/overriden + * Determine the path where we can write our own customized/overridden * version of a file. * * @param string $formName - * Ex: 'view-individual' - * @param string $file + * Ex: 'afformViewIndividual' + * @param string $fileType * Ex: 'aff.json' - * @return string|NULL - * Ex: '/var/www/sites/default/files/civicrm/afform/view-individual.aff.json' + * @return string + * Ex: '/var/www/sites/default/files/civicrm/afform/afformViewIndividual.aff.json' */ - public function createSiteLocalPath($formName, $file) { - return $this->getSiteLocalPath() . DIRECTORY_SEPARATOR . $formName . '.' . $file; + public function createSiteLocalPath(string $formName, string $fileType): string { + return $this->getSiteLocalPath() . DIRECTORY_SEPARATOR . $formName . '.' . $fileType; } - public function clear() { + public function clear(): void { $this->cache->delete('afformAllPaths'); } @@ -132,12 +132,12 @@ class CRM_Afform_AfformScanner { * Get the effective metadata for a form. * * @param string $name - * Ex: 'view-individual' + * Ex: 'afformViewIndividual' * @return array * An array with some mix of the following keys: name, title, description, server_route, requires, is_public. * NOTE: This is only data available in *.aff.json. It does *NOT* include layout. * Ex: [ - * 'name' => 'view-individual', + * 'name' => 'afformViewIndividual', * 'title' => 'View an individual contact', * 'server_route' => 'civicrm/view-individual', * 'requires' => ['afform'], @@ -150,9 +150,7 @@ class CRM_Afform_AfformScanner { 'requires' => [], 'title' => '', 'description' => '', - 'is_dashlet' => FALSE, 'is_public' => FALSE, - 'is_token' => FALSE, 'permission' => ['access CiviCRM'], 'type' => 'system', ]; @@ -187,9 +185,9 @@ class CRM_Afform_AfformScanner { * * @param array $record */ - public function addComputedFields(&$record) { + public function addComputedFields(array &$record) { $name = $record['name']; - // Ex: $allPaths['viewIndividual']['org.civicrm.foo'] == '/var/www/foo/afform/view-individual']. + // Ex: $allPaths['viewIndividual']['org.civicrm.foo'] == '/var/www/foo/ang/afformViewIndividual']. $allPaths = $this->findFilePaths()[$name] ?? []; // Empty string key refers to the site local path $record['has_local'] = isset($allPaths['']); @@ -212,14 +210,14 @@ class CRM_Afform_AfformScanner { } /** - * Get the effective metadata for all forms. + * Get the effective metadata for all file-based forms. * * @return array * A list of all forms, keyed by form name. - * NOTE: This is only data available in *.aff.json. It does *NOT* include layout. - * Ex: ['view-individual' => ['title' => 'View an individual contact', ...]] + * NOTE: This is only data available in metadata files. It does *NOT* include layout. + * Ex: ['afformViewIndividual' => ['title' => 'View an individual contact', ...]] */ - public function getMetas() { + public function getMetas(): array { $result = []; foreach (array_keys($this->findFilePaths()) as $name) { $result[$name] = $this->getMeta($name); @@ -228,7 +226,7 @@ class CRM_Afform_AfformScanner { } /** - * @param array $formPaths + * @param array[] $formPaths * List of all form paths. * Ex: ['foo' => [0 => '/var/www/org.example.foobar/ang']] * @param string $parent @@ -236,7 +234,7 @@ class CRM_Afform_AfformScanner { * @param string $module * Name of module or '' empty string for local files. */ - private function appendFilePaths(&$formPaths, $parent, $module) { + private function appendFilePaths(array &$formPaths, string $parent, string $module) { $files = preg_grep(self::FILE_REGEXP, (array) glob("$parent/*")); foreach ($files as $file) { @@ -251,10 +249,10 @@ class CRM_Afform_AfformScanner { /** * Get the path where site-local form customizations are stored. * - * @return mixed|string + * @return string * Ex: '/var/www/sites/default/files/civicrm/afform'. */ - public function getSiteLocalPath() { + public function getSiteLocalPath(): string { // TODO Allow a setting override. // return Civi::paths()->getPath(Civi::settings()->get('afformPath')); return Civi::paths()->getPath('[civicrm.files]/ang'); diff --git a/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php b/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php index 67ac20c999be39ef8cb058564e6a375690073171..692ad8aebf89477df0971732defa875729a888ee 100644 --- a/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php +++ b/civicrm/ext/afform/core/Civi/Afform/AngularDependencyMapper.php @@ -12,7 +12,7 @@ namespace Civi\Afform; /** - * Class AngularDependencyMapper + * Class used to calculate Afform Angular dependencies. * @package Civi\Afform */ class AngularDependencyMapper { diff --git a/civicrm/ext/afform/core/Civi/Afform/StatusChecks.php b/civicrm/ext/afform/core/Civi/Afform/StatusChecks.php index c1a7d7c2aee79ff3392c95cc04c2205ddd18784e..dd0df209114adec1b92cb8e9d8ea30460cae1662 100644 --- a/civicrm/ext/afform/core/Civi/Afform/StatusChecks.php +++ b/civicrm/ext/afform/core/Civi/Afform/StatusChecks.php @@ -24,33 +24,8 @@ class StatusChecks { public static function hook_civicrm_check($e) { $hasAuthx = \CRM_Extension_System::singleton()->getMapper()->isActiveModule('authx'); $tokenFormCount = count(Tokens::getTokenForms()); - if (!$hasAuthx) { - if ($tokenFormCount) { - $e->messages[] = new \CRM_Utils_Check_Message( - 'afform_token_authx', - E::ts('Email token support has been configured for %2 form(s), which requires extended authentication services. Please enable "AuthX" in <a href="%1">Manage Extensions</a>.', [ - 1 => \CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1'), - 2 => $tokenFormCount, - ]), - E::ts('AuthX Required'), - \Psr\Log\LogLevel::ERROR, - 'fa-chain-broken' - ); - } - else { - $e->messages[] = new \CRM_Utils_Check_Message( - 'afform_token_authx', - E::ts('To generate authenticated email links for custom forms, enable extended authentication services (AuthX) in <a href="%1">Manage Extensions</a>.', [ - 1 => \CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1'), - ]), - E::ts('AuthX Suggested'), - \Psr\Log\LogLevel::INFO, - 'fa-lightbulb-o' - ); - } - } - if ($hasAuthx && $tokenFormCount > 0 && !in_array('jwt', \Civi::settings()->get('authx_auto_cred'))) { + if ($hasAuthx && $tokenFormCount && !in_array('jwt', \Civi::settings()->get('authx_auto_cred'))) { $e->messages[] = new \CRM_Utils_Check_Message( 'afform_token_authx', E::ts('Email token support has been configured for %1 form(s). This requires JWT authentication, <code>authx_auto_cred</code> does not include JWT. ', [ diff --git a/civicrm/ext/afform/core/Civi/Afform/Tokens.php b/civicrm/ext/afform/core/Civi/Afform/Tokens.php index aa50defa49f2980fd3c9f5c8ee48978683fe869e..8e4e120c33505e98309323d038a5cf8a86b5b49f 100644 --- a/civicrm/ext/afform/core/Civi/Afform/Tokens.php +++ b/civicrm/ext/afform/core/Civi/Afform/Tokens.php @@ -176,8 +176,8 @@ class Tokens extends AutoService implements EventSubscriberInterface { */ public static function getTokenForms() { if (!isset(\Civi::$statics[__CLASS__]['tokenForms'])) { - $tokenForms = (array) \Civi\Api4\Afform::get(0) - ->addWhere('is_token', '=', TRUE) + $tokenForms = (array) \Civi\Api4\Afform::get(FALSE) + ->addWhere('placement', 'CONTAINS', 'msg_token') ->addSelect('name', 'title', 'server_route', 'is_public') ->execute() ->indexBy('name'); diff --git a/civicrm/ext/afform/core/Civi/Afform/Utils.php b/civicrm/ext/afform/core/Civi/Afform/Utils.php index 613787f0c6ee271ac3b20eb25e5c1cab16b55381..77e30e95323e17fa7d66e6437932e37e91845ecc 100644 --- a/civicrm/ext/afform/core/Civi/Afform/Utils.php +++ b/civicrm/ext/afform/core/Civi/Afform/Utils.php @@ -75,7 +75,29 @@ class Utils { 'NOT LIKE' => E::ts('Not Like'), 'REGEXP' => E::ts('Matches Pattern'), 'NOT REGEXP' => E::ts("Doesn't Match Pattern"), + 'REGEXP BINARY' => E::ts('Matches Pattern (case-sensitive)'), + 'NOT REGEXP BINARY' => E::ts("Doesn't Match Pattern (case-sensitive)"), ]; } + public static function shouldReconcileManaged(array $updatedAfform, array $originalAfform = []): bool { + $isChanged = function($field) use ($updatedAfform, $originalAfform) { + return ($updatedAfform[$field] ?? NULL) !== ($originalAfform[$field] ?? NULL); + }; + + return $isChanged('placement') || + $isChanged('navigation') || + (!empty($updatedAfform['placement']) && $isChanged('title')) || + (!empty($updatedAfform['navigation']) && ($isChanged('title') || $isChanged('permission') || $isChanged('icon') || $isChanged('server_route'))); + } + + public static function shouldClearMenuCache(array $updatedAfform, array $originalAfform = []): bool { + $isChanged = function($field) use ($updatedAfform, $originalAfform) { + return ($updatedAfform[$field] ?? NULL) !== ($originalAfform[$field] ?? NULL); + }; + + return $isChanged('server_route') || + (!empty($updatedAfform['server_route']) && $isChanged('title')); + } + } diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php index 6ee84870734b4a534f1ebde417cca13907d0d304..9559b619aeceb52d50acdd0377efadbf63d0e72d 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php +++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php @@ -91,6 +91,9 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { if ($getSearchDisplays) { $afforms[$name]['search_displays'] = $this->getSearchDisplays($afforms[$name]['layout']); } + if (!isset($afforms[$name]['placement']) && $this->_isFieldSelected('placement')) { + self::convertLegacyPlacement($afforms[$name]); + } } if ($getLayout && $this->layoutFormat !== 'html') { @@ -177,9 +180,7 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { 'requires' => [], 'title' => E::ts('%1 block', [1 => $custom['title']]), 'description' => '', - 'is_dashlet' => FALSE, 'is_public' => FALSE, - 'is_token' => FALSE, 'permission' => ['access CiviCRM'], 'join_entity' => 'Custom_' . $custom['name'], 'entity_type' => $custom['extends'], @@ -216,4 +217,18 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { return $searchDisplays; } + private static function convertLegacyPlacement(array &$afform): void { + $afform['placement'] = []; + if (!empty($afform['is_dashlet'])) { + $afform['placement'][] = 'dashboard_dashlet'; + } + if (!empty($afform['is_token'])) { + $afform['placement'][] = 'msg_token'; + } + if (!empty($afform['contact_summary'])) { + $afform['placement'][] = 'contact_summary_' . $afform['contact_summary']; + } + unset($afform['is_dashlet'], $afform['is_token'], $afform['contact_summary']); + } + } diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Revert.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Revert.php index a30c2d76b140bd1567fbc0c161356e7ec380a30b..d51e39a3b1d6c12badc8461eb7e2ec16ae679c81 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Revert.php +++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Revert.php @@ -2,6 +2,7 @@ namespace Civi\Api4\Action\Afform; +use Civi\Afform\Utils; use Civi\Api4\Generic\Result; use CRM_Afform_ExtensionUtil as E; @@ -65,15 +66,12 @@ class Revert extends \Civi\Api4\Generic\BasicBatchAction { $original = (array) $scanner->getMeta($item['name']); // If the dashlet setting changed, managed entities must be reconciled - if ( - (empty($item['is_dashlet']) !== empty($original['is_dashlet'])) || - ($item['is_dashlet'] && ($item['title'] ?? '') !== ($original['title'] ?? '')) - ) { + if (Utils::shouldReconcileManaged($item, $original)) { $this->flushManaged = TRUE; } // If the server_route changed, reset menu cache - if (($item['server_route'] ?? '') !== ($original['server_route'] ?? '')) { + if (Utils::shouldClearMenuCache($item, $original)) { $this->flushMenu = TRUE; } @@ -86,7 +84,7 @@ class Revert extends \Civi\Api4\Generic\BasicBatchAction { * @return string[] */ protected function getSelect() { - return ['name', 'title', 'is_dashlet', 'server_route']; + return ['name', 'title', 'placement', 'server_route']; } } diff --git a/civicrm/ext/afform/core/Civi/Api4/Afform.php b/civicrm/ext/afform/core/Civi/Api4/Afform.php index 83c481a5bfe5710cc879ff1041fcd0008b526df2..214ed88e5a6c7b6c501b10ed5c803eac42f550d1 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Afform.php +++ b/civicrm/ext/afform/core/Civi/Api4/Afform.php @@ -140,6 +140,7 @@ class Afform extends Generic\AbstractEntity { 'name' => 'type', 'title' => E::ts('Type'), 'pseudoconstant' => ['optionGroupName' => 'afform_type'], + 'default_value' => 'form', ], [ 'name' => 'requires', @@ -166,28 +167,10 @@ class Afform extends Generic\AbstractEntity { 'title' => E::ts('Description'), ], [ - 'name' => 'is_dashlet', - 'title' => E::ts('Dashboard Dashlet'), - 'data_type' => 'Boolean', - ], - [ - 'name' => 'is_public', - 'title' => E::ts('Is Public'), - 'data_type' => 'Boolean', - ], - [ - 'name' => 'is_token', - 'title' => E::ts('Generate Tokens'), - 'data_type' => 'Boolean', - ], - [ - 'name' => 'contact_summary', - 'title' => E::ts('Contact Summary'), - 'data_type' => 'String', - 'options' => [ - 'block' => E::ts('Contact Summary Block'), - 'tab' => E::ts('Contact Summary Tab'), - ], + 'name' => 'placement', + 'title' => E::ts('Placement'), + 'pseudoconstant' => ['optionGroupName' => 'afform_placement'], + 'data_type' => 'Array', ], [ 'name' => 'summary_contact_type', @@ -209,15 +192,23 @@ class Afform extends Generic\AbstractEntity { 'name' => 'server_route', 'title' => E::ts('Page Route'), ], + [ + 'name' => 'is_public', + 'title' => E::ts('Is Public'), + 'data_type' => 'Boolean', + 'default_value' => FALSE, + ], [ 'name' => 'permission', 'title' => E::ts('Permission'), 'data_type' => 'Array', + 'default_value' => ['access CiviCRM'], ], [ 'name' => 'permission_operator', 'title' => E::ts('Permission Operator'), 'data_type' => 'String', + 'default_value' => 'AND', 'options' => \CRM_Core_SelectValues::andOr(), ], [ diff --git a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformFormatTrait.php b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformFormatTrait.php index 143c7edc0f1668a2efe22788f041dcc9c14de809..4f20d569d3bd6f0eb5d0a054571d640e46fe880d 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformFormatTrait.php +++ b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformFormatTrait.php @@ -14,9 +14,9 @@ trait AfformFormatTrait { /** * Controls the return format of the "layout" property - * - html will return layout html as-is. - * - shallow will convert most html to an array, but leave tag attributes and af-markup containers alone. - * - deep will attempt to convert all html to an array, including tag attributes. + * - "html" will return layout html as-is. + * - "shallow" will convert most html to an array, but leave tag attributes and af-markup containers alone. + * - "deep" will attempt to convert all html to an array, including tag attributes. * * @var string * @options html,shallow,deep @@ -26,10 +26,10 @@ trait AfformFormatTrait { /** * Optionally manage whitespace for the "layout" property * - * This option will strip whitepace from the returned layout array for "get" actions, - * and will auto-indent the aff.html for "save" actions. + * This option will strip whitepace from the returned layout array for `get` actions, + * and will auto-indent the aff.html for `save` actions. * - * Note: currently this has no affect on "get" with "html" return format, which returns html as-is. + * Note: Has no effect on `get` with "html" return format, which returns html as-is. * * @var bool */ diff --git a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php index 699f3b6498208f09ff63fca4a17819f939444b1a..aae55b43183f719ea0699cfeb70df9d1d2985811 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php +++ b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php @@ -2,6 +2,7 @@ namespace Civi\Api4\Utils; +use Civi\Afform\Utils; use CRM_Afform_ExtensionUtil as E; /** @@ -67,24 +68,12 @@ trait AfformSaveTrait { // We may have changed list of files covered by the cache. _afform_clear(); - $isChanged = function($field) use ($item, $orig) { - return ($item[$field] ?? NULL) !== ($orig[$field] ?? NULL); - }; - // If the dashlet or navigation setting changed, managed entities must be reconciled - // TODO: If this list of conditions gets any longer, then - // maybe we should unconditionally reconcile and accept the small performance drag. - if ( - $isChanged('is_dashlet') || - $isChanged('navigation') || - (!empty($meta['is_dashlet']) && $isChanged('title')) || - (!empty($meta['navigation']) && ($isChanged('title') || $isChanged('permission') || $isChanged('icon') || $isChanged('server_route'))) - ) { + if (Utils::shouldReconcileManaged($item, $orig ?? [])) { \CRM_Core_ManagedEntities::singleton()->reconcile(E::LONG_NAME); } - // Right now, permission-checks are completely on-demand. - if ($isChanged('server_route') /* || $isChanged('permission') */) { + if (Utils::shouldClearMenuCache($item, $orig ?? [])) { \CRM_Core_Menu::store(); } diff --git a/civicrm/ext/afform/core/afform.php b/civicrm/ext/afform/core/afform.php index 674f44be723cf9c7f560c3f4e8a46c1941d82ecf..e0ecada9c99c677d020c31388753ed1d09059974 100644 --- a/civicrm/ext/afform/core/afform.php +++ b/civicrm/ext/afform/core/afform.php @@ -99,13 +99,16 @@ function afform_civicrm_managed(&$entities, $modules) { // This AfformScanner instance only lives during this method call, and it feeds off the regular cache. $scanner = new CRM_Afform_AfformScanner(); } - $domains = NULL; foreach ($scanner->getMetas() as $afform) { if (empty($afform['name'])) { continue; } + // Backward-compat with legacy `is_dashlet` if (!empty($afform['is_dashlet'])) { + $afform['placement'][] = 'dashboard_dashlet'; + } + if (in_array('dashboard_dashlet', $afform['placement'] ?? [], TRUE)) { $entities[] = [ 'module' => E::LONG_NAME, 'name' => 'afform_dashlet_' . $afform['name'], @@ -116,8 +119,6 @@ function afform_civicrm_managed(&$entities, $modules) { 'params' => [ 'version' => 4, 'values' => [ - // Q: Should we loop through all domains? - 'domain_id' => 'current_domain', 'is_active' => TRUE, 'name' => $afform['name'], 'label' => $afform['title'] ?? E::ts('(Untitled)'), @@ -129,35 +130,30 @@ function afform_civicrm_managed(&$entities, $modules) { ]; } if (!empty($afform['navigation']) && !empty($afform['server_route'])) { - $domains = $domains ?: \Civi\Api4\Domain::get(FALSE)->addSelect('id')->execute(); - foreach ($domains as $domain) { - $params = [ - 'version' => 4, - 'values' => [ - 'name' => $afform['name'], - 'label' => $afform['navigation']['label'] ?: $afform['title'], - 'permission' => $afform['permission'], - 'permission_operator' => $afform['permission_operator'] ?? 'AND', - 'weight' => $afform['navigation']['weight'] ?? 0, - 'url' => $afform['server_route'], - 'is_active' => 1, - 'icon' => 'crm-i ' . $afform['icon'], - 'domain_id' => $domain['id'], - ], - 'match' => ['domain_id', 'name'], - ]; - if (!empty($afform['navigation']['parent'])) { - $params['values']['parent_id.name'] = $afform['navigation']['parent']; - } - $entities[] = [ - 'module' => E::LONG_NAME, - 'name' => 'navigation_' . $afform['name'] . '_' . $domain['id'], - 'cleanup' => 'always', - 'update' => 'unmodified', - 'entity' => 'Navigation', - 'params' => $params, - ]; + $params = [ + 'version' => 4, + 'values' => [ + 'name' => $afform['name'], + 'label' => $afform['navigation']['label'] ?: $afform['title'], + 'permission' => $afform['permission'], + 'permission_operator' => $afform['permission_operator'] ?? 'AND', + 'weight' => $afform['navigation']['weight'] ?? 0, + 'url' => $afform['server_route'], + 'icon' => !empty($afform['icon']) ? 'crm-i ' . $afform['icon'] : '', + ], + 'match' => ['domain_id', 'name'], + ]; + if (!empty($afform['navigation']['parent'])) { + $params['values']['parent_id.name'] = $afform['navigation']['parent']; } + $entities[] = [ + 'module' => E::LONG_NAME, + 'name' => 'navigation_' . $afform['name'], + 'cleanup' => 'always', + 'update' => 'unmodified', + 'entity' => 'Navigation', + 'params' => $params, + ]; } } } @@ -174,7 +170,7 @@ function afform_civicrm_tabset($tabsetName, &$tabs, $context) { $contactTypes = array_merge((array) ($context['contact_type'] ?? []), $context['contact_sub_type'] ?? []); $afforms = Civi\Api4\Afform::get(FALSE) ->addSelect('name', 'title', 'icon', 'module_name', 'directive_name', 'summary_contact_type', 'summary_weight') - ->addWhere('contact_summary', '=', 'tab') + ->addWhere('placement', 'CONTAINS', 'contact_summary_tab') ->addOrderBy('title') ->execute(); $weight = 111; @@ -213,7 +209,7 @@ function afform_civicrm_pageRun(&$page) { } $afforms = Civi\Api4\Afform::get(FALSE) ->addSelect('name', 'title', 'icon', 'module_name', 'directive_name', 'summary_contact_type') - ->addWhere('contact_summary', '=', 'block') + ->addWhere('placement', 'CONTAINS', 'contact_summary_block') ->addOrderBy('summary_weight') ->addOrderBy('title') ->execute(); @@ -257,7 +253,7 @@ function afform_civicrm_pageRun(&$page) { function afform_civicrm_contactSummaryBlocks(&$blocks) { $afforms = \Civi\Api4\Afform::get(FALSE) ->setSelect(['name', 'title', 'directive_name', 'module_name', 'type', 'type:icon', 'type:label', 'summary_contact_type']) - ->addWhere('contact_summary', '=', 'block') + ->addWhere('placement', 'CONTAINS', 'contact_summary_block') ->addOrderBy('title') ->execute(); foreach ($afforms as $index => $afform) { @@ -592,7 +588,6 @@ function afform_civicrm_referenceCounts($dao, &$counts) { try { $displays = civicrm_api4('SearchDisplay', 'get', [ 'where' => [['saved_search_id', '=', $dao->id]], - 'select' => 'name', ], ['name']); foreach ($displays as $displayName) { $clauses[] = ['search_displays', 'CONTAINS', $dao->name . '.' . $displayName]; diff --git a/civicrm/ext/afform/core/ang/af.ang.php b/civicrm/ext/afform/core/ang/af.ang.php index 2bee73c1122e432fc635421f4d6ccf7052e79df9..8ca6b4a3a51d3eaeae1ba70bb92d39815d4a4d88 100644 --- a/civicrm/ext/afform/core/ang/af.ang.php +++ b/civicrm/ext/afform/core/ang/af.ang.php @@ -9,7 +9,6 @@ return [ // 'css' => ['ang/af.css'], 'partials' => ['ang/af'], 'requires' => ['crmUtil'], - 'settings' => [], 'basePages' => [], 'exports' => [ 'af-entity' => 'E', diff --git a/civicrm/ext/afform/core/ang/af/afField.component.js b/civicrm/ext/afform/core/ang/af/afField.component.js index 8f8c6e3a094f6116a260fccd910be84271a1413d..60223ed607eb877a5950c4bd05b58a4bbfe9304b 100644 --- a/civicrm/ext/afform/core/ang/af/afField.component.js +++ b/civicrm/ext/afform/core/ang/af/afField.component.js @@ -120,6 +120,9 @@ else if (urlArgs && (ctrl.fieldName in urlArgs)) { setValue(urlArgs[ctrl.fieldName]); } + else if (ctrl.afFieldset.getStoredValue(ctrl.fieldName) !== undefined) { + setValue(ctrl.afFieldset.getStoredValue(ctrl.fieldName)); + } // Set default value based on field defn else if ('afform_default' in ctrl.defn) { setValue(ctrl.defn.afform_default); diff --git a/civicrm/ext/afform/core/ang/af/afFieldset.directive.js b/civicrm/ext/afform/core/ang/af/afFieldset.directive.js index d67216de0505a40cc5bc2a7cc755bc834040fa04..753fd82caa787977174748b9ec5ed921340923ac 100644 --- a/civicrm/ext/afform/core/ang/af/afFieldset.directive.js +++ b/civicrm/ext/afform/core/ang/af/afFieldset.directive.js @@ -5,7 +5,8 @@ restrict: 'A', require: ['afFieldset', '?^^afForm'], bindToController: { - modelName: '@afFieldset' + modelName: '@afFieldset', + storeValues: '<' }, link: function($scope, $el, $attr, ctrls) { var self = ctrls[0]; @@ -40,6 +41,26 @@ this.getFormName = function() { return ctrl.afFormCtrl ? ctrl.afFormCtrl.getFormMeta().name : $scope.meta.name; }; + + // If `storeValue` setting is enabled, field values are cached in localStorage + function getCacheKey() { + return 'afform:' + ctrl.getFormName() + ctrl.getName(); + } + this.getStoredValue = function(fieldName) { + if (!this.storeValues) { + return; + } + return CRM.cache.get(getCacheKey(), {})[fieldName]; + }; + this.$onInit = function() { + if (this.storeValues) { + $scope.$watch(ctrl.getFieldData, function(newVal, oldVal) { + if (typeof newVal === 'object' && typeof oldVal === 'object' && Object.keys(newVal).length) { + CRM.cache.set(getCacheKey(), newVal); + } + }, true); + } + }; } }; }); diff --git a/civicrm/ext/afform/core/ang/af/afForm.component.js b/civicrm/ext/afform/core/ang/af/afForm.component.js index 00fb929047b7432abe16befef3f6fd0de887af93..e06b79dff0aa869d106961484a53587cff85a649 100644 --- a/civicrm/ext/afform/core/ang/af/afForm.component.js +++ b/civicrm/ext/afform/core/ang/af/afForm.component.js @@ -14,6 +14,7 @@ status, args, submissionResponse, + ts = CRM.ts('org.civicrm.afform'), ctrl = this; this.$onInit = function() { @@ -112,7 +113,8 @@ $element.trigger('crmFormSuccess', { afform: metaData, - data: data + data: data, + submissionResponse: submissionResponse, }); status.resolve(); @@ -197,10 +199,9 @@ } }) .catch(function(error) { - status.resolve(); - status = CRM.status(error.error_message, 'error'); + status.reject(); $element.unblock(); - CRM.alert(error.error_message, ts('Form Error')); + CRM.alert(error.error_message || '', ts('Form Error')); }); }; } diff --git a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html index 38447c8eaf555ec71fb1317702951b2408ce6085..cd415943b9784fd369e8e2828af6c6c43e61e917 100644 --- a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html +++ b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html @@ -8,5 +8,6 @@ crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.getName() + ':' + $ctrl.fieldName}" multi="$ctrl.defn.input_attrs.multiple" auto-open="$ctrl.defn.input_attrs.autoOpen" + quick-add="$ctrl.defn.input_attrs.quickAdd" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" ng-change="$ctrl.onSelectEntity()" > diff --git a/civicrm/ext/afform/core/ang/af/fields/Hidden.html b/civicrm/ext/afform/core/ang/af/fields/Hidden.html new file mode 100644 index 0000000000000000000000000000000000000000..3a274235c055d8c917f255d2ec70e4c5727aedf9 --- /dev/null +++ b/civicrm/ext/afform/core/ang/af/fields/Hidden.html @@ -0,0 +1 @@ +<input type="hidden" id="{{:: fieldId }}" ng-model="getSetValue" ng-model-options="{getterSetter: true}" > diff --git a/civicrm/ext/afform/core/ang/afCore.ang.php b/civicrm/ext/afform/core/ang/afCore.ang.php index 7f2a44691e57c7481222aa14741cbba1b16d2b2e..eac25ef7d1b686a28e635e6eb312660aeed291ca 100644 --- a/civicrm/ext/afform/core/ang/afCore.ang.php +++ b/civicrm/ext/afform/core/ang/afCore.ang.php @@ -9,6 +9,5 @@ return [ 'css' => ['ang/afCore.css'], 'requires' => ['crmUi', 'crmUtil', 'api4', 'checklist-model', 'angularFileUpload'], 'partials' => ['ang/afCore'], - 'settings' => [], 'basePages' => [], ]; diff --git a/civicrm/ext/afform/core/ang/afformStandalone.ang.php b/civicrm/ext/afform/core/ang/afformStandalone.ang.php index f8b852a5d3d24cec8d965ec5d2373e57fe0b0e1e..f43e6311a5c4f58cbf90ec62517cfc170bdf7278 100644 --- a/civicrm/ext/afform/core/ang/afformStandalone.ang.php +++ b/civicrm/ext/afform/core/ang/afformStandalone.ang.php @@ -5,6 +5,5 @@ return [ 'ang/afformStandalone.js', ], 'css' => [], - 'settings' => [], 'requires' => [], ]; diff --git a/civicrm/ext/afform/core/api/v3/Afform.php b/civicrm/ext/afform/core/api/v3/Afform.php index fda6038cb506502cd02ccb7ea772f1b0e427dbe0..6c2863cc4531bbf2c5f82e461d0195790358f3bd 100644 --- a/civicrm/ext/afform/core/api/v3/Afform.php +++ b/civicrm/ext/afform/core/api/v3/Afform.php @@ -65,9 +65,8 @@ function _civicrm_api3_afform_get_spec(&$fields) { 'title' => 'Type', 'type' => CRM_Utils_Type::T_STRING, ]; - $fields['is_dashlet'] = [ - 'title' => 'Dashlet', - 'type' => CRM_Utils_Type::T_BOOLEAN, + $fields['placement'] = [ + 'title' => 'Placement', ]; $fields['is_public'] = [ 'title' => 'Public', diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml index 1d91b558a6878df4ba8a747b336874773a8d8f84..f8ba60bb1067c7e5c7c3d90766845638770e203c 100644 --- a/civicrm/ext/afform/core/info.xml +++ b/civicrm/ext/afform/core/info.xml @@ -12,10 +12,10 @@ <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-09</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <develStage>stable</develStage> <tags> diff --git a/civicrm/ext/afform/core/managed/AfformPlacement.mgd.php b/civicrm/ext/afform/core/managed/AfformPlacement.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..cd95994c638908fda7d50b0a83879d1100c481e4 --- /dev/null +++ b/civicrm/ext/afform/core/managed/AfformPlacement.mgd.php @@ -0,0 +1,109 @@ +<?php + +use CRM_Afform_ExtensionUtil as E; + +// Option group for Afform.placement field +return [ + [ + 'name' => 'AfformPlacement', + 'entity' => 'OptionGroup', + 'update' => 'always', + 'cleanup' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'afform_placement', + 'title' => E::ts('Afform Placement'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'option_value_fields' => [ + 'name', + 'label', + 'icon', + 'description', + ], + ], + 'match' => ['name'], + ], + ], + [ + 'name' => 'AfformPlacement:dashboard_dashlet', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_placement', + 'name' => 'dashboard_dashlet', + 'value' => 'dashboard_dashlet', + 'label' => E::ts('Dashboard Dashlet'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'icon' => 'fa-tachometer', + 'description' => E::ts('Allow CiviCRM users to add the form to their home dashboard.'), + ], + 'match' => ['option_group_id', 'name'], + ], + ], + [ + 'name' => 'AfformPlacement:contact_summary_tab', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_placement', + 'name' => 'contact_summary_tab', + 'value' => 'contact_summary_tab', + 'label' => E::ts('Contact Summary Tab'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'icon' => 'fa-address-card-o', + 'description' => E::ts('Add tab to contact summary page.'), + ], + 'match' => ['option_group_id', 'name'], + ], + ], + [ + 'name' => 'AfformPlacement:contact_summary_block', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_placement', + 'name' => 'contact_summary_block', + 'value' => 'contact_summary_block', + 'label' => E::ts('Contact Summary Block'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'icon' => 'fa-columns', + 'description' => E::ts('Add block to main contact summary tab.'), + ], + 'match' => ['option_group_id', 'name'], + ], + ], + [ + 'name' => 'AfformPlacement:msg_token', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_placement', + 'name' => 'msg_token', + 'value' => 'msg_token', + 'label' => E::ts('Message Tokens'), + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'icon' => 'fa-code', + 'description' => E::ts('Allows CiviMail authors to easily link to this page'), + ], + 'match' => ['option_group_id', 'name'], + ], + ], +]; diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformContactSummaryTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformContactSummaryTest.php index 0397eba8ac2a275d0dfdfc0e89d50a4e642abca1..3fe58995f4233e57912a6d8d9b9504871df6ae96 100644 --- a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformContactSummaryTest.php +++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformContactSummaryTest.php @@ -43,25 +43,25 @@ class AfformContactSummaryTest extends TestCase implements HeadlessInterface { Afform::create() ->addValue('name', $this->formNames[0]) ->addValue('title', 'Test B') - ->addValue('contact_summary', 'tab') + ->addValue('placement', ['contact_summary_tab']) ->addValue('summary_contact_type', ['Organization']) ->execute(); Afform::create() ->addValue('name', $this->formNames[1]) ->addValue('title', 'Test C') - ->addValue('contact_summary', 'tab') + ->addValue('placement', ['contact_summary_tab']) ->addValue('summary_contact_type', ['FooBar']) ->addValue('icon', 'smiley-face') ->execute(); Afform::create() ->addValue('name', $this->formNames[2]) ->addValue('title', 'Test A') - ->addValue('contact_summary', 'tab') + ->addValue('placement', ['contact_summary_tab']) ->execute(); Afform::create() ->addValue('name', $this->formNames[3]) ->addValue('title', 'Test D') - ->addValue('contact_summary', 'tab') + ->addValue('placement', ['contact_summary_tab']) ->addValue('summary_contact_type', ['Individual']) ->addValue('summary_weight', 99) ->execute(); @@ -116,14 +116,14 @@ class AfformContactSummaryTest extends TestCase implements HeadlessInterface { ->addValue('name', $this->formNames[0]) ->addValue('title', 'Test B') ->addValue('type', 'search') - ->addValue('contact_summary', 'block') + ->addValue('placement', ['contact_summary_block']) ->addValue('summary_contact_type', ['Individual', 'Household']) ->execute(); Afform::create() ->addValue('name', $this->formNames[1]) ->addValue('title', 'Test C') ->addValue('type', 'form') - ->addValue('contact_summary', 'block') + ->addValue('placement', ['contact_summary_block']) ->addValue('summary_contact_type', ['Farm']) ->addValue('icon', 'smiley-face') ->execute(); @@ -131,13 +131,13 @@ class AfformContactSummaryTest extends TestCase implements HeadlessInterface { ->addValue('name', $this->formNames[2]) ->addValue('type', 'form') ->addValue('title', 'Test A') - ->addValue('contact_summary', 'block') + ->addValue('placement', ['contact_summary_block']) ->execute(); Afform::create() ->addValue('name', $this->formNames[3]) ->addValue('type', 'form') ->addValue('title', 'A Weight Test') - ->addValue('contact_summary', 'block') + ->addValue('placement', ['contact_summary_block']) ->addValue('summary_weight', 99) ->execute(); diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php index 607ee3851a0e6b931b8fa5dc71718c7a5fa37ed0..ed2b0e251ac1cbfe2eddb606d1f266f5348cd57c 100644 --- a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php +++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php @@ -21,7 +21,7 @@ class AfformMetadataTest extends \PHPUnit\Framework\TestCase implements Headless $this->assertEquals(['name', 'label', 'icon', 'description'], $fields['type']['suffixes']); $this->assertTrue($fields['base_module']['options']); - $this->assertTrue($fields['contact_summary']['options']); + $this->assertTrue($fields['placement']['options']); } public function testGetEntityFields():void { diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml index f96c034b9d842407214bfef42c5dd81fb6444e1f..6a524d6f5564d7b04ab256046f0fdfb8508c2a5a 100644 --- a/civicrm/ext/afform/html/info.xml +++ b/civicrm/ext/afform/html/info.xml @@ -12,11 +12,11 @@ <url desc="Chat">https://chat.civicrm.org/civicrm/channels/dev-afform</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-09</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml index b58a1497cdb93086b015ba26a1c118268a6aca93..a563482cbb9165d4e7da3d73a60761c9445a5ca3 100644 --- a/civicrm/ext/afform/mock/info.xml +++ b/civicrm/ext/afform/mock/info.xml @@ -11,14 +11,14 @@ <urls> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-09</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php index ade9f0c09cf54598f391fb24bf4213db73e5b6bf..54c721ef669107e1db3a809579a56d7a53b36022 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php @@ -1,7 +1,12 @@ <?php +use Civi\Api4\Afform; use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; +use Civi\Api4\Group; use Civi\Api4\GroupContact; +use Civi\Api4\SavedSearch; /** * Test case for Afform with autocomplete. @@ -32,7 +37,7 @@ EOHTML; ]); // Saved search for filtering - \Civi\Api4\SavedSearch::create(FALSE) + SavedSearch::create(FALSE) ->setValues([ 'name' => 'the_unit_test_search', 'label' => 'the_unit_test_search', @@ -84,7 +89,7 @@ EOHTML; ], ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -96,7 +101,7 @@ EOHTML; // Submit with a valid ID, it should work $values['Individual1'][0]['fields']['id'] = $contacts['B']; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -126,17 +131,17 @@ EOHTML; ->execute()->indexBy('first_name')->column('id'); // Place contacts A & B in the group, but not contact C - $group = \Civi\Api4\Group::create(FALSE) + $group = Group::create(FALSE) ->addValue('name', $lastName) ->addValue('title', $lastName) ->addChain('A', GroupContact::create()->addValue('group_id', '$id')->addValue('contact_id', $contacts['A'])) ->addChain('B', GroupContact::create()->addValue('group_id', '$id')->addValue('contact_id', $contacts['B'])) ->execute()->single(); - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('title', 'test_af_fields') ->addValue('extends', 'Contact') - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['label' => 'contact_ref', 'data_type' => 'ContactReference', 'html_type' => 'Autocomplete', 'filter' => 'action=get&group=' . $group['id']], @@ -184,7 +189,7 @@ EOHTML; ], ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -196,7 +201,7 @@ EOHTML; // Submit with a valid ID, it should work $values['Individual1'][0]['fields']['test_af_fields.contact_ref'] = $contacts['B']; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -224,10 +229,10 @@ EOHTML; ->setRecords($sampleData) ->execute()->indexBy('first_name')->column('id'); - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('title', 'test_address_fields') ->addValue('extends', 'Address') - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['label' => 'contact_ref', 'data_type' => 'ContactReference', 'html_type' => 'Autocomplete', 'filter' => 'action=get&source=in'], @@ -282,7 +287,7 @@ EOHTML; ], ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -294,7 +299,7 @@ EOHTML; // Submit with a valid ID, it should work $values['Individual1'][0]['joins']['Address'][0]['test_address_fields.contact_ref'] = $contacts['A']; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php index 2457fb510b3df6c29015eae0b9def0fe5573b8e5..b3f8c6307553e756f7f07d88e0424ca3df11e256 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php @@ -1,6 +1,6 @@ <?php -require_once __DIR__ . '/AfformTestCase.php'; -require_once __DIR__ . '/AfformUsageTestCase.php'; + +use Civi\Api4\Afform; /** * Test case for Afform.prefill and Afform.submit. @@ -87,7 +87,7 @@ EOHTML; CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp(); // Autofill form with current user. See `Civi\Afform\Behavior\ContactAutofill` - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->execute() ->indexBy('name'); @@ -98,7 +98,7 @@ EOHTML; ['fields' => ['first_name' => 'Firsty', 'last_name' => 'Lasty']], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submission]) ->execute(); @@ -115,7 +115,7 @@ EOHTML; ]); // Get states for USA - $result = Civi\Api4\Afform::getOptions() + $result = Afform::getOptions() ->setName($this->formName) ->setModelName('me') ->setFieldName('state_province_id') @@ -125,7 +125,7 @@ EOHTML; $this->assertEquals('Alabama', $result[0]['label']); // Get states for UK - $result = Civi\Api4\Afform::getOptions() + $result = Afform::getOptions() ->setName($this->formName) ->setModelName('me') ->setFieldName('state_province_id') @@ -165,7 +165,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -208,7 +208,7 @@ EOHTML; CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp(); try { - Civi\Api4\Afform::prefill() + Afform::prefill() ->setName($this->formName) ->setArgs([]) ->execute() @@ -220,7 +220,7 @@ EOHTML; } try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setArgs([]) ->setValues([ @@ -262,7 +262,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -301,7 +301,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -347,7 +347,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -415,7 +415,7 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -448,7 +448,7 @@ EOHTML; ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -484,7 +484,7 @@ EOHTML; ]; try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); @@ -514,26 +514,26 @@ EOHTML; ]; // Submit twice - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submitValues]) ->execute(); - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submitValues]) ->execute(); // Autofilling form works because limit hasn't been reached - Civi\Api4\Afform::prefill()->setName($this->formName)->execute(); + Afform::prefill()->setName($this->formName)->execute(); // Last time - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submitValues]) ->execute(); // Stats should report that we've reached the submission limit - $stats = \Civi\Api4\Afform::get(FALSE) + $stats = Afform::get(FALSE) ->addSelect('submit_enabled', 'submission_count', 'submit_currently_open') ->addWhere('name', '=', $this->formName) ->execute()->single(); @@ -543,13 +543,13 @@ EOHTML; // Prefilling and submitting are no longer allowed. try { - Civi\Api4\Afform::prefill()->setName($this->formName)->execute(); + Afform::prefill()->setName($this->formName)->execute(); $this->fail(); } catch (\Civi\API\Exception\UnauthorizedException $e) { } try { - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues(['me' => $submitValues]) ->execute(); diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php index e1e848a208d8d8f9f93f352bd17d2f97a8bb1573..f572a35c35aee1817a311495ad991d74421e5232 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformCustomFieldUsageTest.php @@ -1,5 +1,10 @@ <?php +use Civi\Api4\Afform; +use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; + /** * Test case for Afform.prefill and Afform.submit. * @@ -31,14 +36,14 @@ EOHTML; * which can be submitted multiple times */ public function testMultiRecordCustomBlock(): void { - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('name', 'MyThings') ->addValue('title', 'My Things') ->addValue('style', 'Tab with table') ->addValue('extends', 'Contact') ->addValue('is_multiple', TRUE) ->addValue('max_multiple', 2) - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['name' => 'my_text', 'label' => 'My Text', 'data_type' => 'String', 'html_type' => 'Text'], @@ -48,7 +53,7 @@ EOHTML; ->execute(); // Creating a custom group should automatically create an afform block - $block = \Civi\Api4\Afform::get() + $block = Afform::get() ->addWhere('name', '=', 'afblockCustom_MyThings') ->addSelect('layout', 'directive_name') ->setLayoutFormat('shallow') @@ -83,11 +88,11 @@ EOHTML; ], ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($values) ->execute(); - $contact = \Civi\Api4\Contact::get(FALSE) + $contact = Contact::get(FALSE) ->addWhere('first_name', '=', $firstName) ->addJoin('Custom_MyThings AS Custom_MyThings', 'LEFT', ['id', '=', 'Custom_MyThings.entity_id']) ->addSelect('Custom_MyThings.my_text', 'Custom_MyThings.my_friend') diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php index fa706c1cb3428d3228728bceb17a67833a354ed6..cd5115112270f50a042b5f6c2b1763ba0e056ca6 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformFileUploadTest.php @@ -5,6 +5,12 @@ * * @group headless */ + +use Civi\Api4\Afform; +use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; + require_once __DIR__ . '/AfformTestCase.php'; require_once __DIR__ . '/AfformUsageTestCase.php'; class api_v4_AfformFileUploadTest extends api_v4_AfformUsageTestCase { @@ -38,11 +44,11 @@ EOHTML; */ public function testSubmitFile(): void { // Single-value set - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('name', 'MyInfo') ->addValue('title', 'My Info') ->addValue('extends', 'Contact') - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['name' => 'single_file_field', 'label' => 'A File', 'data_type' => 'File', 'html_type' => 'File'], @@ -51,14 +57,14 @@ EOHTML; ->execute(); // Multi-record set - \Civi\Api4\CustomGroup::create(FALSE) + CustomGroup::create(FALSE) ->addValue('name', 'MyFiles') ->addValue('title', 'My Files') ->addValue('style', 'Tab with table') ->addValue('extends', 'Contact') ->addValue('is_multiple', TRUE) ->addValue('max_multiple', 3) - ->addChain('fields', \Civi\Api4\CustomField::save() + ->addChain('fields', CustomField::save() ->addDefault('custom_group_id', '$id') ->setRecords([ ['name' => 'my_file', 'label' => 'My File', 'data_type' => 'File', 'html_type' => 'File'], @@ -100,14 +106,14 @@ EOHTML; ], ], ]; - $submission = Civi\Api4\Afform::submit() + $submission = Afform::submit() ->setName($this->formName) ->setValues($values) ->execute()->first(); foreach ([0, 1] as $entityIndex) { $this->mockUploadFile(); - Civi\Api4\Afform::submitFile() + Afform::submitFile() ->setName($this->formName) ->setToken($submission['token']) ->setModelName('Individual1') @@ -117,7 +123,7 @@ EOHTML; foreach ([0, 1] as $joinIndex) { $this->mockUploadFile(); - Civi\Api4\Afform::submitFile() + Afform::submitFile() ->setName($this->formName) ->setToken($submission['token']) ->setModelName('Individual1') @@ -129,7 +135,7 @@ EOHTML; } } - $contacts = \Civi\Api4\Contact::get(FALSE) + $contacts = Contact::get(FALSE) ->addWhere('last_name', '=', $lastName) ->addJoin('Custom_MyFiles AS MyFiles', 'LEFT', ['id', '=', 'MyFiles.entity_id']) ->addSelect('first_name', 'MyInfo.single_file_field', 'MyFiles.my_file') diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php index 936eb8ed567cf3799d9ea5936c7cd262021a35f1..f99602750fed95edb9610e59685d73c33b1e0759 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php @@ -1,5 +1,7 @@ <?php +use Civi\Api4\Afform; + /** * Test case for Afform with autocomplete. * @@ -55,7 +57,7 @@ EOHTML; ], ]); - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->setArgs(['Individual1' => $cid]) ->execute() @@ -81,7 +83,7 @@ EOHTML; $this->assertEmpty($prefill['Individual1']['values'][1]['joins']['Phone']); // Prefill a specific contact for the af-repeat entity - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->setArgs(['Individual1' => [1 => $cid[3]]]) ->execute() @@ -93,7 +95,7 @@ EOHTML; $this->assertEquals('3-1', $prefill['Individual1']['values'][1]['joins']['Phone'][0]['phone']); // Form entity has `max="3"` so a forth contact (index 3) is out-of-bounds - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->setArgs(['Individual1' => [3 => $cid[0]]]) ->execute(); @@ -144,7 +146,7 @@ EOHTML; civicrm_api4('Relationship', 'create', ['values' => $values]); } - $prefill = Civi\Api4\Afform::prefill() + $prefill = Afform::prefill() ->setName($this->formName) ->execute() ->indexBy('name'); diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php index bb12c0e8570580eff5d3c2e00d5c45782736c042..1d6a07b8fa782fe85832d0c8cab9998b9cae1333 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRelationshipUsageTest.php @@ -1,6 +1,9 @@ <?php +use Civi\Api4\Afform; +use Civi\Api4\Contact; use Civi\Api4\Relationship; +use Civi\Api4\RelationshipType; /** * Test case for Afform.prefill and Afform.submit. @@ -46,7 +49,7 @@ EOHTML; ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($submission) ->execute(); @@ -98,7 +101,7 @@ EOHTML; $typeIds = []; foreach ($types as $type) { - $typeIds[] = \Civi\Api4\RelationshipType::create(FALSE) + $typeIds[] = RelationshipType::create(FALSE) ->addValue('contact_type_a', 'Organization') ->addValue('contact_type_b', 'Individual') ->addValue('name_a_b', $type) @@ -121,7 +124,7 @@ EOHTML; ], ]; - Civi\Api4\Afform::submit() + Afform::submit() ->setName($this->formName) ->setValues($submission) ->execute(); @@ -162,7 +165,7 @@ EOHTML; 'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION, ]); - $contact = \Civi\Api4\Contact::save(FALSE) + $contact = Contact::save(FALSE) ->addRecord(['first_name' => 'Child1']) ->addRecord(['first_name' => 'Child2', 'is_deleted' => TRUE]) ->addRecord(['first_name' => 'Parent']) @@ -181,7 +184,7 @@ EOHTML; ->addRecord(['contact_id_a' => $contact[6], 'contact_id_b' => $contact[2], 'relationship_type_id:name' => 'Child of']) ->execute(); - $prefill = Civi\Api4\Afform::prefill(FALSE) + $prefill = Afform::prefill(FALSE) ->setName($this->formName) ->setArgs(['Organization1' => $contact[3]]) ->execute() diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php index 9e609605c6e3b25c50366f5e576123414bfabbc4..01118ef23ed9ae8af9b563b9764f572e678fdcf3 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php @@ -1,5 +1,7 @@ <?php +use Civi\Api4\Afform; + /** * Ensure that the routes created by Afform are working. * @group e2e @@ -16,7 +18,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C public function setUp(): void { parent::setUp(); - Civi\Api4\Afform::revert() + Afform::revert() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->execute(); @@ -24,7 +26,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C public function tearDown(): void { parent::tearDown(); - Civi\Api4\Afform::revert() + Afform::revert() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->execute(); @@ -39,7 +41,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C $result = $http->get($url('civicrm/mock-page')); $this->assertNotAuthorized($result, 'mock-page'); - Civi\Api4\Afform::update() + Afform::update() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->addValue('permission', CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION) @@ -55,7 +57,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C return CRM_Utils_System::url($path, $query, TRUE, NULL, FALSE); }; - Civi\Api4\Afform::update() + Afform::update() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->addValue('permission', CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION) @@ -64,7 +66,7 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C $this->assertOpensPage($http->get($url('civicrm/mock-page')), 'mock-page'); $this->assertNotAuthorized($http->get($url('civicrm/mock-page-renamed')), 'mock-page'); - Civi\Api4\Afform::update() + Afform::update() ->setCheckPermissions(FALSE) ->addWhere('name', '=', $this->formName) ->addValue('server_route', 'civicrm/mock-page-renamed') diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php index 6b381ed1fabe51a22308fa04518daf41fed0298e..a408249e51d538e47f5b608ac223a69ddbd62fc3 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php @@ -1,4 +1,6 @@ <?php + +use Civi\Api4\Afform; use Civi\Api4\Dashboard; /** @@ -31,8 +33,8 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { public function getBasicDirectives() { return [ - ['mockPage', ['title' => '', 'description' => '', 'server_route' => 'civicrm/mock-page', 'permission' => ['access Foobar'], 'is_dashlet' => TRUE, 'submit_enabled' => TRUE]], - ['mockBareFile', ['title' => '', 'description' => '', 'permission' => ['access CiviCRM'], 'is_dashlet' => FALSE, 'submit_enabled' => TRUE]], + ['mockPage', ['title' => '', 'description' => '', 'server_route' => 'civicrm/mock-page', 'permission' => ['access Foobar'], 'placement' => ['dashboard_dashlet'], 'submit_enabled' => TRUE]], + ['mockBareFile', ['title' => '', 'description' => '', 'permission' => ['access CiviCRM'], 'placement' => [], 'submit_enabled' => TRUE]], ['mockFoo', ['title' => '', 'description' => '', 'permission' => ['access CiviCRM']], 'submit_enabled' => TRUE], ['mock-weird-name', ['title' => 'Weird Name', 'description' => '', 'permission' => ['access CiviCRM']], 'submit_enabled' => TRUE], ]; @@ -55,7 +57,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $dashlet = Dashboard::get(FALSE) ->addWhere('name', '=', $formName) ->execute(); - if (!empty($afform['is_dashlet'])) { + if (in_array('dashboard_dashlet', $afform['placement'] ?? [], TRUE)) { $this->assertCount(1, $dashlet); } else { @@ -63,17 +65,17 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { } }; - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); $message = 'The initial Afform.get should return default data'; - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addSelect('*', 'has_base', 'has_local', 'base_module') ->addWhere('name', '=', $formName)->execute(); $this->assertEquals($formName, $result[0]['name'], $message); $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message); $this->assertEquals($get($originalMetadata, 'description'), $get($result[0], 'description'), $message); $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message); - $this->assertEquals($get($originalMetadata, 'is_dashlet'), $get($result[0], 'is_dashlet'), $message); + $this->assertEquals($get($originalMetadata, 'placement') ?? [], $get($result[0], 'placement'), $message); $this->assertEquals($get($originalMetadata, 'permission'), $get($result[0], 'permission'), $message); $this->assertTrue(is_array($result[0]['layout']), $message); $this->assertEquals(TRUE, $get($result[0], 'has_base'), $message); @@ -82,23 +84,23 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $checkDashlet($originalMetadata); $message = 'After updating with Afform.create, the revised data should be returned'; - $result = Civi\Api4\Afform::update() + $result = Afform::update() ->addWhere('name', '=', $formName) ->addValue('description', 'The temporary description') ->addValue('permission', ['access foo', 'access bar']) - ->addValue('is_dashlet', empty($originalMetadata['is_dashlet'])) + ->addValue('placement', empty($originalMetadata['placement']) ? ['dashboard_dashlet'] : []) ->execute(); $this->assertEquals($formName, $result[0]['name'], $message); $this->assertEquals('The temporary description', $result[0]['description'], $message); $message = 'After updating, the Afform.get API should return blended data'; - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addSelect('*', 'has_base', 'has_local', 'base_module') ->addWhere('name', '=', $formName)->execute(); $this->assertEquals($formName, $result[0]['name'], $message); $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message); $this->assertEquals('The temporary description', $get($result[0], 'description'), $message); - $this->assertEquals(empty($originalMetadata['is_dashlet']), $get($result[0], 'is_dashlet'), $message); + $this->assertNotEquals($get($originalMetadata, 'placement'), $get($result[0], 'placement'), $message); $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message); $this->assertEquals(['access foo', 'access bar'], $get($result[0], 'permission'), $message); $this->assertTrue(is_array($result[0]['layout']), $message); @@ -107,9 +109,9 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $this->assertEquals('org.civicrm.afform-mock', $get($result[0], 'base_module'), $message); $checkDashlet($result[0]); - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); $message = 'After reverting, the final Afform.get should return default data'; - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addSelect('*', 'has_base', 'has_local', 'base_module') ->addWhere('name', '=', $formName)->execute(); $this->assertEquals($formName, $result[0]['name'], $message); @@ -117,7 +119,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $this->assertEquals($get($originalMetadata, 'description'), $get($result[0], 'description'), $message); $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message); $this->assertEquals($get($originalMetadata, 'permission'), $get($result[0], 'permission'), $message); - $this->assertEquals($get($originalMetadata, 'is_dashlet'), $get($result[0], 'is_dashlet'), $message); + $this->assertEquals($get($originalMetadata, 'placement') ?? [], $get($result[0], 'placement'), $message); $this->assertTrue(is_array($result[0]['layout']), $message); $this->assertEquals(TRUE, $get($result[0], 'has_base'), $message); $this->assertEquals(FALSE, $get($result[0], 'has_local'), $message); @@ -162,7 +164,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { * @dataProvider getFormatExamples */ public function testBasicConvert($formName, $updateFormat, $updateLayout, $readFormat, $readLayout, $exampleName): void { - $actual = Civi\Api4\Afform::convert()->setLayout($updateLayout) + $actual = Afform::convert()->setLayout($updateLayout) ->setFrom($updateFormat) ->setTo($readFormat) ->execute(); @@ -205,22 +207,22 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { * @dataProvider getFormatExamples */ public function testUpdateAndGetFormat($formName, $updateFormat, $updateLayout, $readFormat, $readLayout, $exampleName): void { - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); - Civi\Api4\Afform::update() + Afform::update() ->addWhere('name', '=', $formName) ->setLayoutFormat($updateFormat) ->setValues(['layout' => $updateLayout]) ->execute(); - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addWhere('name', '=', $formName) ->setLayoutFormat($readFormat) ->execute(); $this->assertEquals($readLayout, $this->fudgeMarkup($result[0]['layout']), "Based on \"$exampleName\", writing content as \"$updateFormat\" and reading back as \"$readFormat\"."); - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); } public function getWhitespaceExamples() { @@ -241,12 +243,12 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { * @dataProvider getWhitespaceExamples */ public function testWhitespaceFormat($directiveName, $example, $exampleName): void { - Civi\Api4\Afform::save() + Afform::save() ->addRecord(['name' => $directiveName, 'layout' => $example['html']]) ->setLayoutFormat('html') ->execute(); - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addWhere('name', '=', $directiveName) ->setLayoutFormat('shallow') ->setFormatWhitespace(TRUE) @@ -255,13 +257,13 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $this->assertEquals($example['stripped'] ?? $example['shallow'], $this->fudgeMarkup($result['layout'])); - Civi\Api4\Afform::save() + Afform::save() ->addRecord(['name' => $directiveName, 'layout' => $result['layout']]) ->setLayoutFormat('shallow') ->setFormatWhitespace(TRUE) ->execute(); - $result = Civi\Api4\Afform::get() + $result = Afform::get() ->addWhere('name', '=', $directiveName) ->setLayoutFormat('html') ->execute() @@ -275,25 +277,25 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $this->createLoggedInUser(); // The default mockPage has 1 explicit requirement + 2 automatic requirements. - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); $angModule = Civi::service('angular')->getModule($formName); $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile', 'mockFoo'], $angModule['requires']); - $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); + $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); $this->assertEquals(['mockBespoke'], $storedRequires[0]['requires']); // Knock down to 1 explicit + 1 automatic. - Civi\Api4\Afform::update() + Afform::update() ->addWhere('name', '=', $formName) ->setLayoutFormat('html') ->setValues(['layout' => '<div>The bare file says "<mock-bare-file/>"</div>']) ->execute(); $angModule = Civi::service('angular')->getModule($formName); $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile'], $angModule['requires']); - $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); + $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); $this->assertEquals(['mockBespoke'], $storedRequires[0]['requires']); // Remove the last explict and implicit requirements. - Civi\Api4\Afform::update() + Afform::update() ->addWhere('name', '=', $formName) ->setLayoutFormat('html') ->setValues([ @@ -303,10 +305,10 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { ->execute(); $angModule = Civi::service('angular')->getModule($formName); $this->assertEquals(['afCore'], $angModule['requires']); - $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); + $storedRequires = Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute(); $this->assertEquals([], $storedRequires[0]['requires']); - Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute(); + Afform::revert()->addWhere('name', '=', $formName)->execute(); $angModule = Civi::service('angular')->getModule($formName); $this->assertEquals(['afCore', 'mockBespoke', 'mockBareFile', 'mockFoo'], $angModule['requires']); } diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php index 9e121c5e72017b6fceb3d6dbda411ebc1db53ab2..2e9b7b30bc7e35de8eb766323b22ceaa92790e8a 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformUsageTestCase.php @@ -1,5 +1,7 @@ <?php +use Civi\Api4\Afform; + /** * Test case for Afform.prefill and Afform.submit. * @@ -15,14 +17,14 @@ abstract class api_v4_AfformUsageTestCase extends api_v4_AfformTestCase { public function setUp(): void { parent::setUp(); - Civi\Api4\Afform::revert(FALSE) + Afform::revert(FALSE) ->addWhere('type', '=', 'block') ->execute(); $this->formName = 'mock' . rand(0, 100000); } public function tearDown(): void { - Civi\Api4\Afform::revert(FALSE) + Afform::revert(FALSE) ->addWhere('name', '=', $this->formName) ->execute(); parent::tearDown(); @@ -34,7 +36,7 @@ abstract class api_v4_AfformUsageTestCase extends api_v4_AfformTestCase { 'name' => $this->formName, ]; $full = array_merge($defaults, $values); - Civi\Api4\Afform::create(FALSE) + Afform::create(FALSE) ->setLayoutFormat('html') ->setValues($full) ->execute(); diff --git a/civicrm/ext/authx/authx.php b/civicrm/ext/authx/authx.php index 2a4e8c0dc82acbd1b6e6b1d36c02a7f5c3326323..e468947abd986a470e89d46faabfb00ff9437364 100644 --- a/civicrm/ext/authx/authx.php +++ b/civicrm/ext/authx/authx.php @@ -127,20 +127,3 @@ function authx_civicrm_permission(&$permissions) { $permissions['generate any authx credential'] = E::ts('Authx: Generate new JWT credentials for other users via the API'); $permissions['validate any authx credential'] = E::ts('Authx: Validate credentials for other users via the API'); } - -/** - * Implements hook_civicrm_navigationMenu(). - * - * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_navigationMenu - */ -function authx_civicrm_navigationMenu(&$menu) { - _authx_civix_insert_navigation_menu($menu, 'Administer/System Settings', [ - 'label' => E::ts('Authentication'), - 'name' => 'authx_admin', - 'url' => 'civicrm/admin/setting/authx', - 'permission' => 'administer CiviCRM', - 'operator' => 'OR', - 'separator' => 0, - ]); - _authx_civix_navigationMenu($menu); -} diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml index 10351571b721fd4a1227ba0aa0ed7d4f91b270b6..aa50793c74820f4cb6f7baed2444d1fcba8a85da 100644 --- a/civicrm/ext/authx/info.xml +++ b/civicrm/ext/authx/info.xml @@ -2,7 +2,7 @@ <extension key="authx" type="module"> <file>authx</file> <name>AuthX</name> - <description>Extended authentication services</description> + <description>Extended authentication for external systems</description> <license>AGPL-3.0</license> <maintainer> <author>Tim Otten</author> @@ -14,14 +14,14 @@ <url desc="Issues">https://lab.civicrm.org/dev/core/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-02-11</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>mgmt:required</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>AuthX enables remote applications to connect to CiviCRM. Use it to enable and disable different forms of authentication (such as username-password, API key, and/or JWT).</comments> <classloader> @@ -32,9 +32,11 @@ <mixin>menu-xml@1.0.0</mixin> <mixin>scan-classes@1.0.0</mixin> <mixin>setting-php@1.0.0</mixin> + <mixin>setting-admin@1.0.0</mixin> </mixins> <civix> <namespace>CRM/Authx</namespace> <format>23.02.1</format> + <setting-page-title>Authentication</setting-page-title> </civix> </extension> diff --git a/civicrm/ext/authx/xml/Menu/authx.xml b/civicrm/ext/authx/xml/Menu/authx.xml index 9247d93a41916c7829a2461266cd04fc0d47d78b..1f0e738339b4ae32e32d34b315649d597f04049b 100644 --- a/civicrm/ext/authx/xml/Menu/authx.xml +++ b/civicrm/ext/authx/xml/Menu/authx.xml @@ -21,12 +21,4 @@ <access_arguments>*always allow*</access_arguments> <is_public>true</is_public> </item> - <item> - <path>civicrm/admin/setting/authx</path> - <title>Authentication</title> - <page_callback>CRM_Admin_Form_Generic</page_callback> - <adminGroup>System Settings</adminGroup> - <desc>Configure authentication for external systems</desc> - <access_arguments>administer CiviCRM</access_arguments> - </item> </menu> diff --git a/civicrm/ext/civi_campaign/info.xml b/civicrm/ext/civi_campaign/info.xml index f8d41a9135fdb912f64ee63ccce48d19c2a6f82d..48d7966f8af79109e86563c0d908a77db2d515da 100644 --- a/civicrm/ext/civi_campaign/info.xml +++ b/civicrm/ext/civi_campaign/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/campaign/what-is-civicampaign/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_case/info.xml b/civicrm/ext/civi_case/info.xml index 383f0f9cff5eabd4db607504015ca6d1b79186a6..8ed73c3f98642a9989209f1c03e8fb50dea27e56 100644 --- a/civicrm/ext/civi_case/info.xml +++ b/civicrm/ext/civi_case/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/case-management/what-is-civicase/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_contribute/info.xml b/civicrm/ext/civi_contribute/info.xml index 9388dd47336ca34c25d519ced36191a006b0a1b5..3d9d3975e0be5ef7fdb829b4f4cacb37bef89472 100644 --- a/civicrm/ext/civi_contribute/info.xml +++ b/civicrm/ext/civi_contribute/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/contributions/what-is-civicontribute/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php b/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php index 5a31a2419353d20ba73ad8a9a4e9f43c75c7ea37..3b3af3681cc83173a455c30286cbc75543e71032 100644 --- a/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php +++ b/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php @@ -29,6 +29,8 @@ class EventCreationSpecProvider extends \Civi\Core\Service\AutoService implement $spec->getFieldByName('title')->setRequiredIf('empty($values.is_template)'); $spec->getFieldByName('start_date')->setRequiredIf('empty($values.is_template)'); $spec->getFieldByName('template_title')->setRequiredIf('!empty($values.is_template)'); + // Arguably this is a bad default in the schema + $spec->getFieldByName('is_active')->setRequired(FALSE)->setDefaultValue(TRUE); $template_id = (new FieldSpec('template_id', 'Event', 'Integer')) ->setTitle(ts('Event Template')) diff --git a/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventGetSpecProvider.php b/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventGetSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..3c32afc7a9ae8186b476bb763e2214eea26eacde --- /dev/null +++ b/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventGetSpecProvider.php @@ -0,0 +1,59 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Query\Api4SelectQuery; +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; + +/** + * @service + * @internal + */ +class EventGetSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { + + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $field = (new FieldSpec('remaining_participants', 'Event', 'Integer')) + ->setTitle(ts('Remaining Participants')) + ->setDescription(ts('Maximum participants minus registered participants')) + ->setInputType('Number') + ->setColumnName('max_participants') + ->setSqlRenderer([__CLASS__, 'getRemainingParticipants']); + $spec->addFieldSpec($field); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Event' && $action === 'get'; + } + + /** + * Subtracts max_participants from number of counted (non-test, non-deleted) participants. + * + * @param array $maxField + * @param \Civi\Api4\Query\Api4SelectQuery $query + * return string + */ + public static function getRemainingParticipants(array $maxField, Api4SelectQuery $query): string { + $statuses = \CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1'); + $statusIds = implode(',', array_keys($statuses)); + $idField = $query->getFieldSibling($maxField, 'id'); + return "IF($maxField[sql_name], (CAST($maxField[sql_name] AS SIGNED) - (SELECT COUNT(`p`.`id`) FROM `civicrm_participant` `p`, `civicrm_contact` `c` WHERE `p`.`event_id` = $idField[sql_name] AND `p`.`contact_id` = `c`.`id` AND `p`.`is_test` = 0 AND `c`.`is_deleted` = 0 AND `p`.status_id IN ($statusIds))), NULL)"; + } + +} diff --git a/civicrm/ext/civi_event/info.xml b/civicrm/ext/civi_event/info.xml index 884b5da2865569b6902811e74f62949f02f2385e..bb331fbfd9530a3c26c07254a981ce480636088d 100644 --- a/civicrm/ext/civi_event/info.xml +++ b/civicrm/ext/civi_event/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/events/what-is-civievent</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_mail/info.xml b/civicrm/ext/civi_mail/info.xml index 0a77c7361406ddbe1f1a76c72aaa6b559593bd3f..6dc808b13419712e4e4e9565d1e656abb8e8d770 100644 --- a/civicrm/ext/civi_mail/info.xml +++ b/civicrm/ext/civi_mail/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/email/what-is-civimail/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_member/info.xml b/civicrm/ext/civi_member/info.xml index a7744da7ff4b106c1ae288194d330c58647c4d67..28f5705a35c524c663de9bd4c8034e9a8e3834fa 100644 --- a/civicrm/ext/civi_member/info.xml +++ b/civicrm/ext/civi_member/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/membership/what-is-civimember/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_pledge/info.xml b/civicrm/ext/civi_pledge/info.xml index e69db9bec8280dd109912e05f653d69b8a9c1bbe..79391ddf0d24a0282ee6481f66102515fd83ca4e 100644 --- a/civicrm/ext/civi_pledge/info.xml +++ b/civicrm/ext/civi_pledge/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/pledges/what-is-civipledge/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_report/info.xml b/civicrm/ext/civi_report/info.xml index 52d1fc8119a892f16b10ebb8e101b96b87e35878..e7fb0eb996f4c02793cc7c1f51c94fa8455063b0 100644 --- a/civicrm/ext/civi_report/info.xml +++ b/civicrm/ext/civi_report/info.xml @@ -12,14 +12,14 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/reporting/what-is-civireport/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-04-08</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomFields.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomFields.aff.php index abf4c4fc0581d22f5f5789ddf6e15a8e6b1d57f2..4ac083954a4c78043babcfdb9c8ce9dcb06f60bd 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomFields.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomFields.aff.php @@ -3,20 +3,8 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Fields'), 'description' => E::ts('Administer custom fields list'), - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/custom/group/fields', 'permission' => ['administer CiviCRM data'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.php index 130875c0c7a9c5bb95b2b96a14a6b46512bfd208..5a5ab28623c7aca142ada457f399ab49a4e6d2d6 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.php @@ -3,20 +3,8 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Custom Field Groups'), 'description' => E::ts('Administer custom field groups list'), - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/custom/group', 'permission' => ['administer CiviCRM data'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminFinancialTypes.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminFinancialTypes.aff.php index d2c1f1bf40a36fe99be0223f4e5d2c32c44cedeb..962b9b69dd37d34771de79412d67ab8bd2c5c7e1 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminFinancialTypes.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminFinancialTypes.aff.php @@ -4,18 +4,6 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', 'title' => E::ts('Financial Types'), - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/financial/financialType', 'permission' => ['administer CiviCRM'], - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignUsersToRoles.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignUsersToRoles.aff.php index 7f26925bf1a41c1d608892dcd57de74088c93a9d..bdab1bcc2b9c0e03e3c04165bfed5e022fdc7892 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignUsersToRoles.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignUsersToRoles.aff.php @@ -3,20 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Assign Users to Roles'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/acl/entityrole', 'permission' => ['administer CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignedFinancialAccounts.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignedFinancialAccounts.aff.php index 3db0ce6bdd07adc1152264246acf0b6f08ee7700..161225a32a1d1400ad603fba47cddba0525ead3c 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignedFinancialAccounts.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAssignedFinancialAccounts.aff.php @@ -7,15 +7,4 @@ return [ 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/financial/financialType/accounts/list', 'permission' => ['administer CiviCRM'], - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.php index bd5f43e29764d2eb5c99915dce665bbfccf46a77..b0e774557bf14be5b4f974a3627aea01f7ca1a93 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.php @@ -7,16 +7,4 @@ return [ 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/mailSettings', 'permission' => ['administer CiviCRM'], - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.php index 46234e489ab32ce2a68b0d13bb377a1f8b2243a3..543c71ca772ffab414032100fee3d5482f225d85 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.php @@ -3,20 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Manage Contribution Pages'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/contribute', 'permission' => ['access CiviContribute'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageGroups.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageGroups.aff.php index 091156b3d03c27b0155629a6df891acc73e2bc7c..fd8f7811c53c0a563695554f8a86359d1527b274 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageGroups.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageGroups.aff.php @@ -4,19 +4,6 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', 'title' => E::ts('Manage Groups'), - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/group', 'permission' => ['access CiviCRM'], - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchProfileFields.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchProfileFields.aff.php index eb9054191d69001f240cee369e3d656c6c0da446..76b7e6209084a68b5dc79bf48ee49f9982e02aa3 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchProfileFields.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchProfileFields.aff.php @@ -3,19 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Profile Fields'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/uf/group/field', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchProfiles.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchProfiles.aff.php index 6e9bb233fcee692219f829566772e598227da7b6..2fe4688d38f8325d6e745e657d9727f77522badc 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchProfiles.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchProfiles.aff.php @@ -3,19 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Profiles'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/uf/group', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchRelationshipTypes.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchRelationshipTypes.aff.php index df7f2b4735f0c7503c3d25dad3184848a33d6ea4..69236a7dc20e6081078e7c07f39d853a7e0ca198 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchRelationshipTypes.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchRelationshipTypes.aff.php @@ -3,19 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Relationship Types'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/reltype', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.php b/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.php index ce2f09f083188b0e048d883286f4ca8e09c39ba8..6a8d7b40e084b97520545ce37d31470f5036f863 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.php +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.php @@ -3,20 +3,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Scheduled Jobs Log'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/joblog', 'permission' => ['admin CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml index 483ccd6c1bc29de54e2f1244df2b5c51a009cc11..8d7525d00f68baa6f37f43fe2d71d2c363508a4f 100644 --- a/civicrm/ext/civicrm_admin_ui/info.xml +++ b/civicrm/ext/civicrm_admin_ui/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2022-01-02</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.search_kit</ext> diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php index c2504145a9f7dba1012b42dc2b039c7db566067c..9b8d0ddfd6376718817c7c4100a9e389ea4d950c 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php @@ -241,7 +241,8 @@ return [ 'task' => 'delete', ], ], - 'type' => 'buttons', + 'type' => 'menu', + 'icon' => 'fa-bars', 'alignment' => 'text-right', ], ], diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchContactSearch.aff.php b/civicrm/ext/civicrm_search_ui/ang/afsearchContactSearch.aff.php index 802a5ba9e6fdc1e58928102558357336e5aaf7aa..4c77d94aff42c6e3f1a4aeabed1a993ca7f8003c 100644 --- a/civicrm/ext/civicrm_search_ui/ang/afsearchContactSearch.aff.php +++ b/civicrm/ext/civicrm_search_ui/ang/afsearchContactSearch.aff.php @@ -4,19 +4,6 @@ use CRM_CivicrmSearchUi_ExtensionUtil as E; return [ 'type' => 'search', 'title' => E::ts('Find Contacts'), - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/searchui/contact/search', 'permission' => ['access CiviCRM'], - 'navigation' => NULL, - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, ]; diff --git a/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.php b/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.php index cc9fd973ffa24ec2e2bad03d5bdd6d55a12e8c9d..2d9ee5553737363d406d98bc3c8a0995291cb863 100644 --- a/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.php +++ b/civicrm/ext/civicrm_search_ui/ang/afsearchFindContributions.aff.php @@ -3,21 +3,11 @@ use CRM_CivicrmSearchUi_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Find Contributions'), 'description' => 'The original searches for Contributions but also can show just soft credits and recurring contributions. Maybe recur is better as a separate search? And soft credits?', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-credit-card', 'server_route' => 'civicrm/sk/contrib', 'permission' => ['access CiviContribute'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Experimental', 'label' => E::ts('Find Contributions'), diff --git a/civicrm/ext/civicrm_search_ui/info.xml b/civicrm/ext/civicrm_search_ui/info.xml index d3dda5733b6577471cd3ba694b7dd614f79b6ea3..c5921bd7da489c10edf4dbe02e0f2b73ad3b43f9 100644 --- a/civicrm/ext/civicrm_search_ui/info.xml +++ b/civicrm/ext/civicrm_search_ui/info.xml @@ -14,15 +14,15 @@ <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-07-17</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <requires> <ext>org.civicrm.search_kit</ext> <ext>org.civicrm.afform</ext> </requires> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Replacement SearchKit/FormBuilder pages for core Search pages.</comments> <classloader> diff --git a/civicrm/ext/civicrm_search_ui/managed/Navigation_Experimental.mgd.php b/civicrm/ext/civicrm_search_ui/managed/Navigation_Experimental.mgd.php index 94a6191f3bf0a06423074c256662dbdf893837e3..c43b0b5623cbdf2586cbf9d8aff54fe352c45c5b 100644 --- a/civicrm/ext/civicrm_search_ui/managed/Navigation_Experimental.mgd.php +++ b/civicrm/ext/civicrm_search_ui/managed/Navigation_Experimental.mgd.php @@ -6,7 +6,7 @@ return [ [ 'name' => 'Navigation_Experimental', 'entity' => 'Navigation', - 'cleanup' => 'unused', + 'cleanup' => 'always', 'update' => 'unmodified', 'params' => [ 'version' => 4, @@ -20,7 +20,7 @@ return [ 'access CiviCRM', ], 'permission_operator' => 'AND', - 'parent_id' => NULL, + 'parent_id.name' => 'Search', 'is_active' => TRUE, 'has_separator' => 0, 'weight' => 113, diff --git a/civicrm/ext/civigrant/CRM/Grant/DAO/Grant.php b/civicrm/ext/civigrant/CRM/Grant/DAO/Grant.php index fda65e11e660a15faeafa084c8301860ea058f7f..4b2fd2c19dea9bbcfb12037dbdcbe5fc16421b76 100644 --- a/civicrm/ext/civigrant/CRM/Grant/DAO/Grant.php +++ b/civicrm/ext/civigrant/CRM/Grant/DAO/Grant.php @@ -6,7 +6,7 @@ * * Generated from civigrant/xml/schema/CRM/Grant/Grant.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:35a957c6b295a38c1fc0881e57ab1ec4) + * (GenCodeChecksum:8c32dd9b0de6a449d6ee2358a2b043fc) */ use CRM_Grant_ExtensionUtil as E; @@ -45,7 +45,7 @@ class CRM_Grant_DAO_Grant extends CRM_Core_DAO { */ protected static $_paths = [ 'add' => 'civicrm/grant/add?reset=1&action=add&cid=[contact_id]', - 'view' => 'civicrm/grant/add?reset=1&action=view&id=[id]', + 'view' => 'civicrm/grant/view?reset=1&action=view&id=[id]', 'update' => 'civicrm/grant/add?reset=1&action=update&id=[id]', 'delete' => 'civicrm/grant/add?reset=1&action=delete&id=[id]', ]; diff --git a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php index 0b640ad2d00a8c9c730f0e29a8c0fa33437bc673..9217a0ccbc49349bac306a22c66d90e2e5737255 100644 --- a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php +++ b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php @@ -27,7 +27,6 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form { * @return void */ public function preProcess() { - $this->_contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this); $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); $context = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this); $this->assign('context', $context); @@ -52,8 +51,10 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form { ]; foreach ($grantTokens as $token) { - $this->assign($token, CRM_Utils_Array::value($token, $values)); + $this->assign($token, $values[$token] ?? NULL); } + $displayName = CRM_Contact_BAO_Contact::displayName($values['contact_id']); + $this->assign('displayName', $displayName); if (isset($this->_id)) { $noteDAO = new CRM_Core_BAO_Note(); @@ -69,8 +70,8 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form { } // add Grant to Recent Items - $url = CRM_Utils_System::url('civicrm/grant/add', - "action=view&reset=1&id={$values['id']}&cid={$values['contact_id']}" + $url = CRM_Utils_System::url('civicrm/grant/view', + "action=view&reset=1&id={$values['id']}" ); $title = CRM_Contact_BAO_Contact::displayName($values['contact_id']) . ' - ' . ts('Grant') . ': ' . CRM_Utils_Money::format($values['amount_total']) . ' (' . $grantType[$values['grant_type_id']] . ')'; diff --git a/civicrm/ext/civigrant/CRM/Grant/Selector/Search.php b/civicrm/ext/civigrant/CRM/Grant/Selector/Search.php index c8252ff8e4315e14d6b85edf946b274ca961181e..0f5ad52199e6f0107b1eec2bd5eff4713168f934 100644 --- a/civicrm/ext/civigrant/CRM/Grant/Selector/Search.php +++ b/civicrm/ext/civigrant/CRM/Grant/Selector/Search.php @@ -171,7 +171,7 @@ class CRM_Grant_Selector_Search extends CRM_Core_Selector_Base implements CRM_Co self::$_links = [ CRM_Core_Action::VIEW => [ 'name' => ts('View'), - 'url' => 'civicrm/grant/add', + 'url' => 'civicrm/grant/view', 'qs' => 'reset=1&id=%%id%%&cid=%%cid%%&action=view&' . $extraParams, 'title' => ts('View Grant'), 'weight' => -20, diff --git a/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.php b/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.php index af3297ac2d1e9a6b206b4f4810c91acd1eb63156..ae187701c0d0291c34df5000c0a9758df6892cbb 100644 --- a/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.php +++ b/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.php @@ -4,7 +4,7 @@ use CRM_Grant_ExtensionUtil as E; return [ 'type' => 'search', 'title' => E::ts('Grants'), - 'contact_summary' => 'tab', + 'placement' => ['contact_summary_tab'], 'summary_weight' => 60, 'icon' => 'fa-money', 'server_route' => '', diff --git a/civicrm/ext/civigrant/info.xml b/civicrm/ext/civigrant/info.xml index bbc993a1aa31e163805d30d0fc47072be25a6649..5d7cb585451354b023891d7d931e0ef574537e6b 100644 --- a/civicrm/ext/civigrant/info.xml +++ b/civicrm/ext/civigrant/info.xml @@ -12,11 +12,11 @@ <url desc="Documentation">https://docs.civicrm.org/user/en/latest/grants/what-is-civigrant/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-11-11</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>CiviGrant was originally a core component before migrating to an extension</comments> <requires> diff --git a/civicrm/ext/civigrant/templates/CRM/Grant/Form/Grant.tpl b/civicrm/ext/civigrant/templates/CRM/Grant/Form/Grant.tpl index a5ecc12cce9bbbfb57ca96b74644a5a8f76ae6d9..22d7865e5cb621607be8d909ed07c6b90a30a03a 100644 --- a/civicrm/ext/civigrant/templates/CRM/Grant/Form/Grant.tpl +++ b/civicrm/ext/civigrant/templates/CRM/Grant/Form/Grant.tpl @@ -16,8 +16,6 @@ {ts}Are you sure you want to delete this Grant?{/ts} {ts}This action cannot be undone.{/ts}</p> <p>{include file="CRM/Grant/Form/Task.tpl"}</p> </div> - {elseif $action eq 4} - {include file="CRM/Grant/Form/GrantView.tpl"} {else} <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> <table class="form-layout-compressed"> diff --git a/civicrm/ext/civigrant/xml/Menu/Grant.xml b/civicrm/ext/civigrant/xml/Menu/Grant.xml index 624b230b2bb965ed1a5a2c4fe391fe7e6751612e..c226716a81e8917bb90a2d47b9fc4122f0b0cf24 100644 --- a/civicrm/ext/civigrant/xml/Menu/Grant.xml +++ b/civicrm/ext/civigrant/xml/Menu/Grant.xml @@ -29,10 +29,9 @@ <access_arguments>access CiviGrant</access_arguments> <page_type>1</page_type> </item> - <!-- Unused/deprecated path redundant with civicrm/grant/add --> <item> - <path>civicrm/contact/view/grant</path> - <page_callback>CRM_Grant_Form_Grant</page_callback> + <path>civicrm/grant/view</path> + <page_callback>CRM_Grant_Form_GrantView</page_callback> <access_arguments>access CiviGrant</access_arguments> </item> </menu> diff --git a/civicrm/ext/civigrant/xml/schema/CRM/Grant/Grant.xml b/civicrm/ext/civigrant/xml/schema/CRM/Grant/Grant.xml index 843cc499e37125e5e42a4895c008927a9bfc9c44..68ca9577324ece5f192dda092a6553ed848402b9 100644 --- a/civicrm/ext/civigrant/xml/schema/CRM/Grant/Grant.xml +++ b/civicrm/ext/civigrant/xml/schema/CRM/Grant/Grant.xml @@ -10,7 +10,7 @@ <icon>fa-money</icon> <paths> <add>civicrm/grant/add?reset=1&action=add&cid=[contact_id]</add> - <view>civicrm/grant/add?reset=1&action=view&id=[id]</view> + <view>civicrm/grant/view?reset=1&action=view&id=[id]</view> <update>civicrm/grant/add?reset=1&action=update&id=[id]</update> <delete>civicrm/grant/add?reset=1&action=delete&id=[id]</delete> </paths> diff --git a/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php b/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php index b27d9d4470ff23e309c63576a23d010024daf7e5..5709bd5a28bb2138a6f6183daaa069139afdd2b8 100644 --- a/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php +++ b/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php @@ -226,9 +226,6 @@ class ImportSubscriber extends AutoService implements EventSubscriberInterface { 'type' => 'search', 'title' => $importSearch['label'], 'base_module' => E::LONG_NAME, - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, 'permission' => 'access CiviCRM', 'requires' => ['crmSearchDisplayTable'], 'layout' => '<div af-fieldset=""> diff --git a/civicrm/ext/civiimport/ang/afsearchAllImports.aff.php b/civicrm/ext/civiimport/ang/afsearchAllImports.aff.php index 8cf8aa26a577bb98e3471379f02c51ee7044b2ef..c2302fb197891843b788d6da2f3453a2bfefb322 100644 --- a/civicrm/ext/civiimport/ang/afsearchAllImports.aff.php +++ b/civicrm/ext/civiimport/ang/afsearchAllImports.aff.php @@ -3,21 +3,10 @@ use CRM_Civiimport_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('All Imports'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/imports/all-imports', 'permission' => ['administer queues'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Reports', 'label' => E::ts('All imports'), diff --git a/civicrm/ext/civiimport/ang/afsearchMyImports.aff.php b/civicrm/ext/civiimport/ang/afsearchMyImports.aff.php index 242fd16ab57c7cb005ca17205eba7f4a76ae5ff4..9b6c975cb7b9c85631dc942ae0ff85c566868714 100644 --- a/civicrm/ext/civiimport/ang/afsearchMyImports.aff.php +++ b/civicrm/ext/civiimport/ang/afsearchMyImports.aff.php @@ -3,21 +3,9 @@ use CRM_Civiimport_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('My Imports'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/imports/my-listing', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Reports', 'label' => E::ts('My Imports'), diff --git a/civicrm/ext/civiimport/ang/afsearchTemplates.aff.php b/civicrm/ext/civiimport/ang/afsearchTemplates.aff.php index 613380fd7e0a3c3cea85c392f46ef6d7a8656c2a..d2329bca3592137b943e09be84f79e3a097bc543 100644 --- a/civicrm/ext/civiimport/ang/afsearchTemplates.aff.php +++ b/civicrm/ext/civiimport/ang/afsearchTemplates.aff.php @@ -3,21 +3,10 @@ use CRM_Civiimport_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Import Templates'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/imports/templates', 'permission' => ['access CiviCRM'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Reports', 'label' => E::ts('Import Templates'), diff --git a/civicrm/ext/civiimport/info.xml b/civicrm/ext/civiimport/info.xml index b5776d0199c3983e9fba119741d5770b47122995..f6515e68d759d077a8a16264b078f6d30ca9a836 100644 --- a/civicrm/ext/civiimport/info.xml +++ b/civicrm/ext/civiimport/info.xml @@ -14,13 +14,13 @@ <url desc="Support">http://civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2022-08-11</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> - <comments>Core extension for us to start moving import logic into, has more functionality</comments> + <comments>This extension contains import functionality which was previously in CiviCRM Core. If you use the import functionality it is recommended to enable this extension.</comments> <requires> <ext>org.civicrm.afform</ext> <ext>org.civicrm.search_kit</ext> diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml index aca1ac07fabd0324bcdd519d23bdb996fd296ec8..1ea33c848e5bd43a0ed8c7ec5d3ea4155fb1c9b8 100644 --- a/civicrm/ext/ckeditor4/info.xml +++ b/civicrm/ext/ckeditor4/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://github.com/civicrm/civicrm-core/</url> <url desc="Licensing">https://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-05-23</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This is the version of CKEditor that originally shipped with CiviCRM core</comments> <classloader> diff --git a/civicrm/ext/contributioncancelactions/info.xml b/civicrm/ext/contributioncancelactions/info.xml index 066bf2a8257067493fc0613c5dd412ac79a7df33..b521ee7a285804aa490084bdb183ce3d70df51d8 100644 --- a/civicrm/ext/contributioncancelactions/info.xml +++ b/civicrm/ext/contributioncancelactions/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-10-12</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This code has been moved from core to a separate extension in 5.32. Note that if you disable it failed or cancelled contributions will not cause related memberships and participant records to be updated</comments> <classloader> diff --git a/civicrm/ext/elavon/info.xml b/civicrm/ext/elavon/info.xml index 26039e5d1c5a03de6dd9eaf8657c35ad1d767666..0784e9e2444778165bd859675bab57ac47cfedb7 100644 --- a/civicrm/ext/elavon/info.xml +++ b/civicrm/ext/elavon/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://lab.civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2022-08-05</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments/> <classloader> diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml index 82fa5d4d3691323bedc7e886e50d4dd908569695..5b907396e1e74035719fd3ee799b224e455a2368 100644 --- a/civicrm/ext/eventcart/info.xml +++ b/civicrm/ext/eventcart/info.xml @@ -12,14 +12,14 @@ <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/eventcart</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-08-03</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml index 384c99d10fd15d0c130020706c87f958247a1d47..8c83d9ecbbcba308beb57471d91e205466ba4f09 100644 --- a/civicrm/ext/ewaysingle/info.xml +++ b/civicrm/ext/ewaysingle/info.xml @@ -14,14 +14,14 @@ <url desc="Support">https://github.com/civicrm/civicrm-core/blob/master/ext/ewaysingle</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-10-07</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This is an extension to contain the eWAY Single Currency Payment Processor</comments> <classloader> diff --git a/civicrm/ext/financialacls/financialacls.php b/civicrm/ext/financialacls/financialacls.php index 5696c289f275dfc6a64ddefa3d6f6277710df669..334105d92ebefcf4cc0d372d57480fd2368e3cb2 100644 --- a/civicrm/ext/financialacls/financialacls.php +++ b/civicrm/ext/financialacls/financialacls.php @@ -201,7 +201,7 @@ function financialacls_civicrm_buildAmount($component, $form, &$feeBlock) { foreach ($feeBlock as $key => $value) { foreach ($value['options'] as $k => $options) { - if (!CRM_Core_Permission::check('add contributions of type ' . CRM_Contribute_PseudoConstant::financialType($options['financial_type_id']))) { + if (!CRM_Core_Permission::check('add contributions of type ' . CRM_Core_PseudoConstant::getName('CRM_Contribute_DAO_Contribution', 'financial_type_id', $options['financial_type_id']))) { unset($feeBlock[$key]['options'][$k]); } } @@ -384,6 +384,23 @@ function financialacls_civicrm_alterMenu(array &$menu): void { $menu['civicrm/admin/financial/financialType']['access_arguments'] = [['administer CiviCRM Financial Types']]; } +/** + * @param string $formName + * @param \CRM_Core_Form $form + */ +function financialacls_civicrm_preProcess(string $formName, \CRM_Core_Form $form): void { + if (!financialacls_is_acl_limiting_enabled()) { + return; + } + if (str_starts_with($formName, 'CRM_Contribute_Form_Contribution_')) { + /* @var \CRM_Contribute_Form_Contribution_Main $form */ + if (!CRM_Core_Permission::check('add contributions of type ' . $form->getContributionPageValue('financial_type_id:name'))) { + CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); + } + } + +} + /** * Hide edit/enable/disable links for memberships of a given Financial Type * Note: The $objectID param can be an int, string or null, hence not typed diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml index 52edcd9889ec58bad1b4877959da77e1113efb2a..6124da07d4f08a9df7d468698bb025735cf2f644 100644 --- a/civicrm/ext/financialacls/info.xml +++ b/civicrm/ext/financialacls/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://FIXME</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-08-27</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <tags> <tag>mgmt:hidden</tag> diff --git a/civicrm/ext/financialacls/settings/financialacls.setting.php b/civicrm/ext/financialacls/settings/financialacls.setting.php index e6ba889d5cbd750e19d862742d4944c8eadf1beb..c90b37b46b8cc083539f87d62be83cc1a12d9877 100644 --- a/civicrm/ext/financialacls/settings/financialacls.setting.php +++ b/civicrm/ext/financialacls/settings/financialacls.setting.php @@ -13,7 +13,7 @@ return [ 'is_domain' => 1, 'is_contact' => 0, 'help_text' => NULL, - 'help' => ['id' => 'acl_financial_type'], + 'help' => ['id' => 'acl_financial_type', 'file' => 'CRM/Admin/Form/Preferences/Contribute.hlp'], 'settings_pages' => ['contribute' => ['weight' => 30]], 'on_change' => [ 'financialacls_toggle', diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/FinancialTypeTest.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/FinancialTypeTest.php index e88e563afee06efb3a879e0334af05dc2e92caa5..ef9f5f58cc6c1beaa7506e45fc30e0804ff9bfa7 100644 --- a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/FinancialTypeTest.php +++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/FinancialTypeTest.php @@ -3,6 +3,9 @@ namespace Civi\Financialacls; use Civi; +use Civi\Api4\PriceField; +use Civi\Api4\PriceFieldValue; +use Civi\Api4\PriceSet; use CRM_Core_Session; // I fought the Autoloader and the autoloader won. @@ -47,7 +50,10 @@ class FinancialTypeTest extends BaseTestClass { foreach ($actions as $action => $action_ts) { $this->assertEquals( [ - ts('CiviCRM: %1 contributions of type %2', [1 => $action_ts, 2 => $type]), + ts('CiviCRM: %1 contributions of type %2', [ + 1 => $action_ts, + 2 => $type, + ]), ts('%1 contributions of type %2', [1 => $action_ts, 2 => $type]), ], $permissions[$action . ' contributions of type ' . $type] @@ -71,4 +77,84 @@ class FinancialTypeTest extends BaseTestClass { $this->assertEquals([1 => 'Donation'], $type); } + /** + * Check method testCheckPermissionedLineItems() + * + * @throws \CRM_Core_Exception + */ + public function testCheckPermissionedLineItems(): void { + $priceSetID = PriceSet::create()->setValues([ + 'title' => 'Price Set Financial ACLS', + 'name' => 'test_price_set', + 'extends' => 1, + 'financial_type_id:name' => 'Donation', + ])->execute()->first()['id']; + + $paramsField = [ + 'label' => 'Price Field', + 'name' => 'test_price_field', + 'html_type' => 'CheckBox', + 'is_display_amounts' => 1, + 'weight' => 1, + 'options_per_line' => 1, + 'price_set_id' => $priceSetID, + 'is_enter_qty' => 1, + 'financial_type_id:name' => 'Donation', + ]; + $priceFieldID = PriceField::create() + ->setValues($paramsField) + ->execute() + ->first()['id']; + $priceFieldValueID = PriceFieldValue::create()->setValues([ + 'price_field_id' => $priceFieldID, + 'amount' => 100, + 'name' => 'price_field_value', + 'label' => 'Price Field 1', + 'financial_type_id:name' => 'Donation', + 'weight' => 1, + ])->execute()->first()['id']; + $contributionParams = [ + 'total_amount' => 300, + 'currency' => 'USD', + 'contact_id' => $this->individualCreate(), + 'financial_type_id' => 'Donation', + 'line_items' => [ + [ + 'line_item' => [ + [ + 'price_field_id' => $priceFieldID, + 'price_field_value_id' => $priceFieldValueID, + 'qty' => 3, + ], + ], + ], + ], + ]; + + $contribution = $this->callAPISuccess('Order', 'create', $contributionParams); + Civi::settings()->set('acl_financial_type', TRUE); + + $this->setPermissions([ + 'view contributions of type Member Dues', + ]); + + try { + \CRM_Financial_BAO_FinancialType::checkPermissionedLineItems($contribution['id'], 'view'); + $this->fail('Missed expected exception'); + } + catch (\CRM_Core_Exception $e) { + $this->assertEquals('You do not have permission to access this page.', $e->getMessage()); + } + + $this->setPermissions([ + 'view contributions of type Donation', + ]); + try { + \CRM_Financial_BAO_FinancialType::checkPermissionedLineItems($contribution['id'], 'view'); + } + catch (\CRM_Core_Exception $e) { + $this->fail('permissions should be established'); + } + } + } diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml index 07e085383916dcfea0ce6d4dd27e01dd34617583..1bdc772eb14159434f435436bf7b6dcd9a1073a0 100644 --- a/civicrm/ext/flexmailer/info.xml +++ b/civicrm/ext/flexmailer/info.xml @@ -14,8 +14,8 @@ <url desc="Support">http://civicrm.stackexchange.com/</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-08-05</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <comments> FlexMailer is an email delivery engine which replaces the internal guts @@ -23,7 +23,7 @@ to provide richer email features. </comments> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <tags> <tag>mgmt:required</tag> diff --git a/civicrm/ext/flexmailer/src/API/MailingPreview.php b/civicrm/ext/flexmailer/src/API/MailingPreview.php index 3d6f1f40f1a49e3df2768e8f07a51d4ccd66e580..448f9b9c09edea44c1e948179829d62c0157531a 100644 --- a/civicrm/ext/flexmailer/src/API/MailingPreview.php +++ b/civicrm/ext/flexmailer/src/API/MailingPreview.php @@ -24,7 +24,7 @@ class MailingPreview { /** @var \CRM_Mailing_BAO_Mailing $mailing */ $mailing = new \CRM_Mailing_BAO_Mailing(); - $mailingID = \CRM_Utils_Array::value('id', $params); + $mailingID = $params['id'] ?? NULL; if ($mailingID) { $mailing->id = $mailingID; $mailing->find(TRUE); diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ClickTracker/TextClickTrackerTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ClickTracker/TextClickTrackerTest.php index a007001c3b264199f4e44abff6b62664dd4b763a..d7df55307d4b195377917a4fab83cb5ab2f864eb 100644 --- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ClickTracker/TextClickTrackerTest.php +++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ClickTracker/TextClickTrackerTest.php @@ -45,19 +45,14 @@ class TextClickTrackerTest extends \CiviUnitTestCase { '<p><a href=\'tracking(https://sub.example.com/foo.php?whiz=%2Fbang%2F&pie[fruit]=apple)\' rel=\'nofollow\'>Foo</a></p>', ]; $exs[] = [ - // Messy looking URL, designed to trip-up quote handling + // Messy looking URL, designed to trip-up quote handling, no tracking as no http '<p><a href="javascript:alert(\'Cheese\')">Foo</a></p>', - '<p><a href="tracking(javascript:alert(\'Cheese\'))" rel=\'nofollow\'>Foo</a></p>', + '<p><a href="javascript:alert(\'Cheese\')" rel=\'nofollow\'>Foo</a></p>', ]; $exs[] = [ - // Messy looking URL, designed to trip-up quote handling + // Messy looking URL, designed to trip-up quote handling, no tracking as no http '<p><a href=\'javascript:alert("Cheese")\'>Foo</a></p>', - '<p><a href=\'tracking(javascript:alert("Cheese"))\' rel=\'nofollow\'>Foo</a></p>', - ]; - $exs[] = [ - // Messy looking URL, funny whitespace - '<p><a href="http://example.com/' . "\n" . 'weird">Foo</a></p>', - '<p><a href="tracking(http://example.com/' . "\n" . 'weird)" rel=\'nofollow\'>Foo</a></p>', + '<p><a href=\'javascript:alert("Cheese")\' rel=\'nofollow\'>Foo</a></p>', ]; $exs[] = [ // Messy looking URL, funny whitespace diff --git a/civicrm/ext/greenwich/info.xml b/civicrm/ext/greenwich/info.xml index cc4c63e9874ca68a3ca3dfc4d59e66798afae164..38d5d182de49466a33ca0f3b6f8e614fa0e2ff64 100644 --- a/civicrm/ext/greenwich/info.xml +++ b/civicrm/ext/greenwich/info.xml @@ -14,14 +14,14 @@ <url desc="Support">http://civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-07-21</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml index d78f71aac9c53249c535da844d314d12217d2b1a..3aba787a08c50465bd2143fa01d2399cff9e2623 100644 --- a/civicrm/ext/legacycustomsearches/info.xml +++ b/civicrm/ext/legacycustomsearches/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://FIXME</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-07-25</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This is our old search system which has limited support. All new effort is on SearchKit</comments> <classloader> diff --git a/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php b/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php index 4175908fb76549d5ea3a41b0770550401b027b5e..1503cbca7b0c679bec13213187c6cdd20dd41fe9 100644 --- a/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php +++ b/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php @@ -1,15 +1,10 @@ <?php -use Civi\Api4\Domain; use CRM_Legacycustomsearches_ExtensionUtil as E; -$menuItems = []; -$domains = Domain::get(FALSE) - ->addSelect('id') - ->execute(); -foreach ($domains as $domain) { - $menuItems[] = [ - 'name' => 'Custom Searches' . $domain['id'], +return [ + [ + 'name' => 'Custom Searches', 'entity' => 'Navigation', 'cleanup' => 'always', 'update' => 'unmodified', @@ -25,13 +20,12 @@ foreach ($domains as $domain) { 'is_active' => TRUE, 'has_separator' => 2, 'weight' => 15, - 'domain_id' => $domain['id'], ], 'match' => ['domain_id', 'name'], ], - ]; - $menuItems[] = [ - 'name' => 'Manage Custom Searches' . $domain['id'], + ], + [ + 'name' => 'Manage Custom Searches', 'entity' => 'Navigation', 'cleanup' => 'always', 'update' => 'unmodified', @@ -46,10 +40,8 @@ foreach ($domains as $domain) { 'parent_id.name' => 'Customize Data and Screens', 'is_active' => TRUE, 'weight' => 15, - 'domain_id' => $domain['id'], ], 'match' => ['domain_id', 'name'], ], - ]; -} -return $menuItems; + ], +]; diff --git a/civicrm/ext/message_admin/info.xml b/civicrm/ext/message_admin/info.xml index dd958f73c0c45644432e21337ee1ded46e6c028c..7394a8acd023973cb28e219b830b12f170e5b7e0 100644 --- a/civicrm/ext/message_admin/info.xml +++ b/civicrm/ext/message_admin/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-06-12</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/oauth-client/info.xml b/civicrm/ext/oauth-client/info.xml index 660ba84a6d4a8b0a3b90b18af5c2c0da644d462b..298dcefdd0b785a904433cb86e66f2c32d7f0363 100644 --- a/civicrm/ext/oauth-client/info.xml +++ b/civicrm/ext/oauth-client/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://lab.civicrm.org/dev/core/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-10-23</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext version="~4.5">org.civicrm.afform</ext> diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml index 5745bc2b5931372a47c9e1d0e54053375d938c44..9e5aa78821ae95bda315b96e5b5e075a03bf72f2 100644 --- a/civicrm/ext/payflowpro/info.xml +++ b/civicrm/ext/payflowpro/info.xml @@ -14,11 +14,11 @@ <url desc="Support">https://lab.civicrm.org</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-04-13</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>This extension is extraction of the original Core Payflow Pro Payment Processor</comments> <classloader> diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml index edb4b23fbc167f916a25130e01f49672abf8f838..9489875fadebc5db8c1983b39588e79698b06fa6 100644 --- a/civicrm/ext/recaptcha/info.xml +++ b/civicrm/ext/recaptcha/info.xml @@ -12,21 +12,21 @@ <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core/tree/master/ext/recaptcha</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-04-03</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> <mixins> - <mixin>menu-xml@1.0.0</mixin> + <mixin>setting-admin@1.0.0</mixin> <mixin>setting-php@1.0.0</mixin> <mixin>ang-php@1.0.0</mixin> <mixin>scan-classes@1.0.0</mixin> diff --git a/civicrm/ext/recaptcha/recaptcha.php b/civicrm/ext/recaptcha/recaptcha.php index e959cfb329c9323502ba1afd5a8801435c1537fe..49e8e1c7b5a877c88b22003f72a16dc1cf38c270 100644 --- a/civicrm/ext/recaptcha/recaptcha.php +++ b/civicrm/ext/recaptcha/recaptcha.php @@ -32,21 +32,6 @@ function recaptcha_civicrm_enable() { _recaptcha_civix_civicrm_enable(); } -/** - * Implements hook_civicrm_navigationMenu(). - */ -function recaptcha_civicrm_navigationMenu(&$menu) { - _recaptcha_civix_insert_navigation_menu($menu, 'Administer/System Settings', [ - 'label' => E::ts('reCAPTCHA Settings'), - 'name' => 'recaptcha_settings', - 'url' => 'civicrm/admin/setting/recaptcha', - 'permission' => 'administer CiviCRM', - 'operator' => 'OR', - 'separator' => 0, - ]); - _recaptcha_civix_navigationMenu($menu); -} - /** * Intercept form functions */ diff --git a/civicrm/ext/recaptcha/xml/Menu/recaptcha.xml b/civicrm/ext/recaptcha/xml/Menu/recaptcha.xml deleted file mode 100644 index 558cefcf2c4e4868df5fa6bb6719fb4f4620fb8c..0000000000000000000000000000000000000000 --- a/civicrm/ext/recaptcha/xml/Menu/recaptcha.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0"?> -<menu> - <item> - <path>civicrm/admin/setting/recaptcha</path> - <title>reCAPTCHA Settings</title> - <desc>Configure anti-abuse/bot-prevention service</desc> - <page_callback>CRM_Admin_Form_Generic</page_callback> - <access_arguments>administer CiviCRM</access_arguments> - <adminGroup>System Settings</adminGroup> - </item> -</menu> diff --git a/civicrm/ext/scheduled_communications/info.xml b/civicrm/ext/scheduled_communications/info.xml index 1280468485f036c852c3d0d69011fa7fd18fa284..508b7ffb7b573261d084b5a0d609bf2aba52539f 100644 --- a/civicrm/ext/scheduled_communications/info.xml +++ b/civicrm/ext/scheduled_communications/info.xml @@ -12,11 +12,11 @@ <url desc="Chat">https://chat.civicrm.org/civicrm/channels/search-improvements</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2023-09-04</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Click on the chat link above to discuss development, report problems or ask questions.</comments> <classloader> diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php index 02037c290a66dbd7acd1e89371e197ccb7bc48f5..69acf8e3ff2470fe4ae2178fee0f8b1aaaabbaee 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php @@ -1147,7 +1147,7 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { } // Add primary key field if actions are enabled // (only needed for non-dao entities, as Api4SelectQuery will auto-add the id) - if (!in_array('DAOEntity', CoreUtil::getInfoItem($this->savedSearch['api_entity'], 'type')) && + if (!CoreUtil::isType($this->savedSearch['api_entity'], 'DAOEntity') && (!empty($this->display['settings']['actions']) || !empty($this->display['settings']['draggable'])) ) { $this->addSelectExpression(CoreUtil::getIdFieldName($this->savedSearch['api_entity'])); diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Download.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Download.php index b0ebdbfeecf733210c87581a16c8ccf5ce09adf3..0c4fe3b2f39395d390e6b397b897d53b5d4e95c5 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Download.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Download.php @@ -65,6 +65,8 @@ class Download extends AbstractRunAction { \CRM_Utils_Array::remove($settings['columns'][$index], 'link', 'editable', 'icons', 'cssClass'); } } + // Reset indexes as some items may have been removed + $settings['columns'] = array_values($settings['columns']); // Displays are only exportable if they have actions enabled if (empty($settings['actions'])) { diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php index 21fdf87428d63fe8a3fb26b74a5b617e033b0e0d..7c6e9d8b5ab1f7aad1f94ca912b816d474a8b02a 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php @@ -120,7 +120,7 @@ class Run extends AbstractRunAction { $result->setCountMatched($apiResult->countFetched()); $apiResult = array_slice((array) $apiResult, 0, $apiParams['limit'] - 1); } - if ($pagerMode === 'page') { + else { $result->toolbar = $this->formatToolbar(); } $result->exchangeArray($this->formatResult($apiResult)); diff --git a/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchDisplayCreationSpecProvider.php b/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchDisplayCreationSpecProvider.php index 963e63ef2dfaeb7d90a9d77be220b2020e873a04..618ecad57478e8a92451552a93d6b2e682cce387 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchDisplayCreationSpecProvider.php +++ b/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchDisplayCreationSpecProvider.php @@ -24,8 +24,7 @@ class SearchDisplayCreationSpecProvider extends \Civi\Core\Service\AutoService i * @inheritDoc */ public function modifySpec(RequestSpec $spec) { - $spec->getFieldByName('name')->setRequired(FALSE)->setRequiredIf('empty($values.label)'); - $spec->getFieldByName('label')->setRequired(FALSE)->setRequiredIf('empty($values.name)'); + $spec->getFieldByName('name')->setRequired(FALSE); } /** diff --git a/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php b/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php index 5662d023cda18292c784c2cdd6abc270e8be63e6..97f3f2c470aa599f8fbfb484abab4bf7ad75ad57 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php +++ b/civicrm/ext/search_kit/Civi/Api4/Service/Spec/Provider/SearchSegmentExtraFieldProvider.php @@ -62,6 +62,11 @@ class SearchSegmentExtraFieldProvider implements Generic\SpecProviderInterface { } foreach ($searchSegments as $set) { \Civi::$statics['all_search_segments'][$set['entity_name']]['segment_' . $set['name']] = $set; + if ($set['entity_name'] === 'Contact') { + foreach (\CRM_Contact_BAO_ContactType::basicTypes() as $contactType) { + \Civi::$statics['all_search_segments'][$contactType]['segment_' . $set['name']] = $set; + } + } } } return \Civi::$statics['all_search_segments'][$entity] ?? []; diff --git a/civicrm/ext/search_kit/Civi/Search/Admin.php b/civicrm/ext/search_kit/Civi/Search/Admin.php index 8232f2523325f3e733e4e0dd784dd7dec19c31b7..14e4adc53990768c5312bbfa33ff3d95dca4a43e 100644 --- a/civicrm/ext/search_kit/Civi/Search/Admin.php +++ b/civicrm/ext/search_kit/Civi/Search/Admin.php @@ -53,7 +53,7 @@ class Admin { ->setLoadOptions(['id', 'label']) ->execute()->first()['options'], 'tags' => Tag::get() - ->addSelect('id', 'name', 'color', 'is_selectable', 'description') + ->addSelect('id', 'label', 'color', 'is_selectable', 'description') ->addWhere('used_for', 'CONTAINS', 'civicrm_saved_search') ->execute(), ]; @@ -95,6 +95,8 @@ class Admin { 'NOT LIKE' => E::ts('Not Like'), 'REGEXP' => E::ts('Matches Pattern'), 'NOT REGEXP' => E::ts("Doesn't Match Pattern"), + 'REGEXP BINARY' => E::ts('Matches Pattern (case-sensitive)'), + 'NOT REGEXP BINARY' => E::ts("Doesn't Match Pattern (case-sensitive)"), 'BETWEEN' => E::ts('Is Between'), 'NOT BETWEEN' => E::ts('Not Between'), 'IS EMPTY' => E::ts('Is Empty'), diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js index 01947260a024e6a5f1861c30632ac6d9b20c9858..1b9adf9ffdf061767f97eab3a020c733d691f98c 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js @@ -55,7 +55,7 @@ modules.push({text: label, id: key}); }, []), 'text'); this.getTags = function() { - return {results: formatForSelect2(CRM.crmSearchAdmin.tags, 'id', 'name', ['color', 'description'])}; + return {results: formatForSelect2(CRM.crmSearchAdmin.tags, 'id', 'label', ['color', 'description'])}; }; this.getPrimaryEntities = function() { diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.component.js index 532541bcc6ab7c15675820ef8102dca01194b60b..ef28cde5517c7b92c95be19fe78287b35cc9853a 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.component.js @@ -32,8 +32,10 @@ this.getField = searchMeta.getField; this.fields = function() { - var selectFields = ctrl.crmSearchAdmin.getSelectFields(); - var permissionField = [{ + let selectFields = ctrl.crmSearchAdmin.getSelectFields(); + // Use machine names not labels for option matching + selectFields.forEach((field) => field.id = field.id.replace(':label', ':name')); + let permissionField = [{ text: ts('Current User Permission'), id: 'check user permission', description: ts('Check permission of logged-in user') diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.component.js index 0527d1a1c45873e9d0d81c839443f16aab938a1f..a17d18c02d81b90e29bdb2bd2a9eead7d42cbc35 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.component.js @@ -64,9 +64,9 @@ } }; - this.makeTag = function(name) { + this.makeTag = function(label) { crmApi4('Tag', 'create', { - values: {name: name, color: ctrl.color, is_selectable: true, used_for: ['civicrm_saved_search']} + values: {label: label, color: ctrl.color, is_selectable: true, used_for: ['civicrm_saved_search']} }, 0).then(function(tag) { ctrl.allTags.push(tag); ctrl.toggleTag(tag); diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.html index 31711443dc46e993d6f5682e7a3b2cfe2ea25415..26e52e3bf07232528f8f712347cee4ba4e9c7f9c 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.html +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminTags.html @@ -16,14 +16,14 @@ <a href ng-click="$ctrl.makeTag($ctrl.search)">{{ $ctrl.search }}</a> </div> </li> - <li ng-repeat="tag in $ctrl.allTags | filter:{name: $ctrl.search, is_selectable: true}"> + <li ng-repeat="tag in $ctrl.allTags | filter:{label: $ctrl.search, is_selectable: true}"> <a href ng-click="$ctrl.toggleTag(tag)"> <i class="crm-i fa-check" style="visibility: {{ $ctrl.hasTag(tag) ? 'visible' : 'hidden' }}"></i> <span class="crm-search-admin-tag-color" style="background-color: {{:: tag.color }}"></span> - {{:: tag.name }} + {{:: tag.label }} </a> </li> </ul> <span class="badge" ng-repeat="id in $ctrl.tagIds" style="{{:: $ctrl.getStyle(id) }}"> - {{:: $ctrl.getTag(id).name }} + {{:: $ctrl.getTag(id).label }} </span> diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js index bf4e16ab77e5c882635b35f2b9218141b75865c9..366bb69105649a50b477cefd356d910946403cf1 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js @@ -161,7 +161,7 @@ this.changeArg = function(index) { var val = ctrl.args[index].value; // Delete empty value - if (index && !val && ctrl.args.length > ctrl.fn.params[0].min_expr) { + if (index && !val && val !== 0 && ctrl.args.length > ctrl.fn.params[0].min_expr) { ctrl.args.splice(index, 1); } ctrl.writeExpr(); @@ -176,7 +176,7 @@ this.writeExpr = function() { if (ctrl.fnName) { var args = _.transform(ctrl.args, function(args, arg, index) { - if (arg.value || arg.flag_before) { + if (arg.value || arg.value === 0 || arg.flag_before) { var prefix = arg.flag_before || arg.name ? (index ? ' ' : '') + (arg.flag_before || arg.name) + (arg.value ? ' ' : '') : (index ? ', ' : ''); args.push(prefix + (arg.type === 'string' ? JSON.stringify(arg.value) : arg.value)); } diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js index 3111e4a8b5282fccec4f4dfdcdd3b23f90eeba57..008b19bb54bbf7b070b7aa8730b300f035223b06 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminCssRules.component.js @@ -28,9 +28,12 @@ this.styles.strikethrough = ts('Strikethrough'); this.fields = function() { - var allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let selectFields = ctrl.crmSearchAdmin.getSelectFields(); + // Use machine names not labels for option matching + selectFields.forEach((field) => field.id = field.id.replace(':label', ':name')); return { - results: ctrl.crmSearchAdmin.getSelectFields().concat(allFields) + results: selectFields.concat(allFields) }; }; diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js index 6a7d439f9e90d9cd9c78abb1fed518e8e0afc899..323b09c7734a289637419daddba0efc9e09a8f42 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchAdminIcons.component.js @@ -16,9 +16,12 @@ this.getField = searchMeta.getField; this.fields = function() { - var allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let allFields = ctrl.crmSearchAdmin.getAllFields(':name', ['Field', 'Custom', 'Extra', 'Pseudo']); + let selectFields = ctrl.crmSearchAdmin.getSelectFields(); + // Use machine names not labels for option matching + selectFields.forEach((field) => field.id = field.id.replace(':label', ':name')); return { - results: ctrl.crmSearchAdmin.getSelectFields().concat(allFields) + results: selectFields.concat(allFields) }; }; diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js index 102e2bc36f78541ca6ff04d4b6c74ada81cae0ca..8225a2f7e8ba8002a170424cdc7e19ff1e4e752f 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js @@ -125,7 +125,7 @@ this.getTemplate = function() { var field = ctrl.field || {}; - if (_.includes(['LIKE', 'NOT LIKE', 'REGEXP', 'NOT REGEXP'], ctrl.op)) { + if (_.includes(['LIKE', 'NOT LIKE', 'REGEXP', 'NOT REGEXP', 'REGEXP BINARY', 'NOT REGEXP BINARY'], ctrl.op)) { return '~/crmSearchTasks/crmSearchInput/text.html'; } diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html index f5c7508be3e60f83e8176ea8763a6dbdb6015e7f..5fdfa72670bfe1e2d627d90e5fe0b61891da3ee3 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/date.html @@ -10,7 +10,7 @@ <div class="form-group" ng-switch="$ctrl.dateType"> <div class="form-group" ng-switch-when="fixed"> - <input class="form-control" crm-ui-datepicker="{time: $ctrl.field.data_type === 'Timestamp'}" ng-model="$ctrl.value" ng-required="!$ctrl.field.nullable" ng-if="!$ctrl.isMulti()"> + <input class="form-control" crm-ui-datepicker="{time: $ctrl.field.data_type === 'Timestamp', start_date_years: 100, end_date_years: 100}" ng-model="$ctrl.value" ng-required="!$ctrl.field.nullable" ng-if="!$ctrl.isMulti()"> <input class="form-control" crm-multi-select-date ng-model="$ctrl.value" ng-required="!$ctrl.field.nullable" ng-if="$ctrl.isMulti()"> </div> diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js index bace4279079c1173f41048c81475d43bd52c46d5..ed1ac2f9c2283dc044417be0ff71136f3df71845 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.ctrl.js @@ -14,16 +14,16 @@ crmApi4({ tags: ['Tag', 'get', { - select: ['id', 'name', 'color', 'description', 'is_selectable', 'parent_id'], + select: ['id', 'label', 'color', 'description', 'is_selectable', 'parent_id'], where: [ ['is_tagset', '=', false], ['used_for:name', 'CONTAINS', this.entity], ['OR', [['parent_id', 'IS NULL'], ['parent_id.is_tagset', '=', false]]] ], - orderBy: {name: 'ASC'} + orderBy: {label: 'ASC'} }], tagsets: ['Tag', 'get', { - select: ['id', 'name'], + select: ['id', 'name', 'label'], where: [['is_tagset', '=', true], ['used_for:name', 'CONTAINS', this.entity]] }], }).then(function(result) { @@ -36,7 +36,7 @@ var sorted = _.transform(rawTags, function(sorted, tag) { sorted[tag.id] = { id: tag.id, - text: tag.name, + text: tag.label, description: tag.description, color: tag.color, disabled: !tag.is_selectable, diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html index 51363c6e9d3bfaf1512b1256b7fe80d9c9ae4d9f..d1bb6a09d8f2ef0a1cbbcee36141a32b05061bbc 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskTag.html @@ -28,7 +28,7 @@ > </div> <div ng-repeat="tagset in $ctrl.tagsets" class="form-inline"> - <label>{{:: tagset.name }}</label> + <label>{{:: tagset.label }}</label> <input ng-model="$ctrl.selectedTagsetTags[tagset.name]" ng-list diff --git a/civicrm/ext/search_kit/css/crmSearchAdmin.css b/civicrm/ext/search_kit/css/crmSearchAdmin.css index 375f63358b05228b10576b128ad26a3ee7a0ca3e..02a8e323f6925c1883c15a553a3199ff59095513 100644 --- a/civicrm/ext/search_kit/css/crmSearchAdmin.css +++ b/civicrm/ext/search_kit/css/crmSearchAdmin.css @@ -156,7 +156,7 @@ } #bootstrap-theme.crm-search .api4-operator { - width: 110px; + width: 235px; } #bootstrap-theme.crm-search input[type=number] { diff --git a/civicrm/ext/search_kit/info.xml b/civicrm/ext/search_kit/info.xml index 8bcdf3101c766c63a674abdc25c1d9d465331343..b1280f7000e7de2728e749472b23fa412c8480ad 100644 --- a/civicrm/ext/search_kit/info.xml +++ b/civicrm/ext/search_kit/info.xml @@ -14,14 +14,14 @@ <url desc="Issues">https://lab.civicrm.org/dev/report/-/issues</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2021-01-06</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>stable</develStage> <tags> <tag>mgmt:required</tag> </tags> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <comments>Click on the chat link above to discuss development, report problems or ask questions.</comments> <classloader> diff --git a/civicrm/ext/search_kit/managed/Navigation_search_kit.mgd.php b/civicrm/ext/search_kit/managed/Navigation_search_kit.mgd.php index e132bcb8aaae146fbb6a90026f42113e83cc02e4..dbaaae9add4940b7418f4476dcdadda546c52f88 100644 --- a/civicrm/ext/search_kit/managed/Navigation_search_kit.mgd.php +++ b/civicrm/ext/search_kit/managed/Navigation_search_kit.mgd.php @@ -1,13 +1,9 @@ <?php use CRM_Search_ExtensionUtil as E; -$menuItems = []; -$domains = \Civi\Api4\Domain::get(FALSE) - ->addSelect('id') - ->execute(); -foreach ($domains as $domain) { - $menuItems[] = [ - 'name' => 'Navigation_search_kit_domain_' . $domain['id'], +return [ + [ + 'name' => 'Navigation_search_kit', 'entity' => 'Navigation', 'cleanup' => 'always', 'update' => 'unmodified', @@ -27,10 +23,8 @@ foreach ($domains as $domain) { 'is_active' => TRUE, 'has_separator' => 2, 'weight' => 13, - 'domain_id' => $domain['id'], ], 'match' => ['domain_id', 'name'], ], - ]; -} -return $menuItems; + ], +]; diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDisplayTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDisplayTest.php index a6033fc823a52166ce96f921faada6df753df797..a92c2218cc165f862af02839efbe6c3c76cae760 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDisplayTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDisplayTest.php @@ -74,10 +74,12 @@ class SearchDisplayTest extends \PHPUnit\Framework\TestCase implements HeadlessI ->addValue('label', 'My test search') ->execute()->first(); // Name will be created from munged label - $this->assertEquals('My_test_search', $savedSearch0['name']); - // Name will have _1, _2, etc. appended to ensure it's unique - $this->assertEquals('My_test_search_1', $savedSearch1['name']); - $this->assertEquals('My_test_search_2', $savedSearch2['name']); + $this->assertEquals('My_test_search', $savedSearch0['name'], "SavedSearch 0"); + // Name will have _r appended to ensure it's unique, where r is a string of + // random chars. + $this->assertEquals('My_test_search_', substr($savedSearch1['name'], 0, 15), "SavedSearch 1"); + $this->assertEquals('My_test_search_', substr($savedSearch2['name'], 0, 15), "SavedSearch 2"); + $this->assertNotSame($savedSearch1['name'], $savedSearch2['name'], "SavedSearch 1,2"); $display0 = SearchDisplay::create() ->addValue('saved_search_id', $savedSearch0['id']) @@ -95,11 +97,12 @@ class SearchDisplayTest extends \PHPUnit\Framework\TestCase implements HeadlessI ->addValue('type', 'table') ->execute()->first(); // Name will be created from munged label - $this->assertEquals('My_test_display', $display0['name']); - // Name will have _1 appended to ensure it's unique to savedSearch0 - $this->assertEquals('My_test_display_1', $display1['name']); - // This is for a different saved search so doesn't need a number appended - $this->assertEquals('My_test_display', $display2['name']); + $this->assertEquals('My_test_display', $display0['name'], "SearchDisplay 0"); + // Name will have _r appended (r is random string) to ensure it's unique to + // savedSearch0. + $this->assertEquals('My_test_display_', substr($display1['name'], 0, 16), "SearchDisplay 1"); + // This is for a different saved search so doesn't need a suffix appended + $this->assertEquals('My_test_display', $display2['name'], "SearchDisplay 2"); } } diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php index 6f15b6a4b8b72545fc39713ba6843ce991c6a88e..9a1d211b7e1b2f8c65ab7f71d690e3b6953f2de6 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchDownloadTest.php @@ -62,6 +62,11 @@ class SearchDownloadTest extends \PHPUnit\Framework\TestCase implements Headless 'type' => 'field', 'rewrite' => '[duration] [subject]', ], + // This column ought to be removed by the download action + [ + 'type' => 'links', + 'links' => [], + ], [ 'key' => 'details', 'label' => 'Details', diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php index 9a90a0910c42be6bc25f9dbf3a80816ebc357bf6..9d36159ea814c4ec20dbab4124aba82ae08a01c5 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchExportTest.php @@ -81,6 +81,10 @@ class SearchExportTest extends \PHPUnit\Framework\TestCase implements HeadlessIn // Readonly fields should not be included $this->assertArrayNotHasKey('created_date', $export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['values']); $this->assertArrayNotHasKey('modified_date', $export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['values']); + // Match criteria + $this->assertEquals(['name'], $export['SavedSearch_TestSearchToExport']['params']['match']); + sort($export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['match']); + $this->assertEquals(['name', 'saved_search_id'], $export['SavedSearch_TestSearchToExport_SearchDisplay_TestDisplayToExport']['params']['match']); // Add a second display SearchDisplay::create(FALSE) diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php index 0dba79e9594a21cbd5f063fe097f0c5f72f5be1d..d25f36ced94f23deccb40a4cf0d6f60e900ebf07 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunTest.php @@ -83,7 +83,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -197,7 +197,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -270,7 +270,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -356,7 +356,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -466,7 +466,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -556,7 +556,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => FALSE, @@ -802,7 +802,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { 'saved_search_id' => '$id', 'name' => $displayName, 'type' => 'table', - 'label' => '', + 'label' => 'TestDisplay', 'acl_bypass' => TRUE, 'settings' => [ 'limit' => 20, @@ -979,7 +979,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'list', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -1496,7 +1496,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -1861,7 +1861,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -1914,7 +1914,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, @@ -1952,7 +1952,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -2072,7 +2072,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'actions' => TRUE, 'pager' => [], @@ -2162,7 +2162,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { ], 'display' => [ 'type' => 'table', - 'label' => '', + 'label' => 'tesdDisplay', 'settings' => [ 'limit' => 20, 'pager' => TRUE, diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php index 2cf32ba633b5e0fabd4ca0ab2eed12ab967350a1..ac81e735ed8b44319630826a93f476873ae8d87d 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchRunWithCustomFieldTest.php @@ -502,4 +502,90 @@ class SearchRunWithCustomFieldTest extends CustomTestBase { $this->assertEquals('Dewey', $result[0]['columns'][0]['val']); } + public function testJoinWithCustomFieldEndingIn_() { + $subject = uniqid(__FUNCTION__); + + $contact = Contact::create(FALSE) + ->execute()->single(); + + // CustomGroup based on Activity Type + CustomGroup::create(FALSE) + ->addValue('extends', 'Activity') + ->addValue('title', 'testactivity2') + ->addChain('field', CustomField::create() + ->addValue('custom_group_id', '$id') + ->addValue('label', 'testactivity_') + ->addValue('data_type', 'Boolean') + ->addValue('html_type', 'Radio') + ) + ->execute(); + + $sampleData = [ + ['activity_type_id:name' => 'Meeting', 'testactivity2.testactivity_' => TRUE], + ]; + $this->saveTestRecords('Activity', [ + 'defaults' => ['subject' => $subject, 'source_contact_id', $contact['id']], + 'records' => $sampleData, + ]); + + $params = [ + 'checkPermissions' => FALSE, + 'return' => 'page:1', + 'savedSearch' => [ + 'api_entity' => 'Contact', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'GROUP_CONCAT(DISTINCT Contact_ActivityContact_Activity_01.testactivity2.testactivity_:label) AS GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label', + ], + 'orderBy' => [], + 'where' => [['contact_type:name', '=', 'Individual']], + 'groupBy' => ['id'], + 'join' => [ + ['Activity AS Contact_ActivityContact_Activity_01', 'INNER', 'ActivityContact', + ['id', '=', 'Contact_ActivityContact_Activity_01.contact_id'], + ['Contact_ActivityContact_Activity_01.record_type_id:name', '=', '"Activity Source"'], + ['Contact_ActivityContact_Activity_01.activity_type_id:name', '=', '"Meeting"'], + ], + ], + 'having' => [], + ], + ], + 'display' => [ + 'type' => 'table', + 'label' => '', + 'settings' => [ + 'actions' => TRUE, + 'pager' => [], + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'id', + 'dataType' => 'Integer', + 'label' => 'Contact ID', + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label', + 'dataType' => 'Boolean', + 'label' => '(List) Contact Activities: testactivity2: testactivity_', + 'sortable' => TRUE, + ], + ], + 'sort' => [ + ['id', 'ASC'], + ], + ], + ], + 'afform' => NULL, + ]; + + $result = civicrm_api4('SearchDisplay', 'run', $params); + + $this->assertArrayHasKey('GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label', $result[0]['data']); + $this->assertEquals('Yes', $result[0]['data']['GROUP_CONCAT_Contact_ActivityContact_Activity_01_testactivity2_testactivity__label'][0]); + } + } diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php index e628fa87c527935520c49686a8e824d0b2211cdf..feff968ec6916c0ae186ac052d901a1c1c8f97f2 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchSegment/SearchSegmentTest.php @@ -6,6 +6,7 @@ use Civi\Api4\Contact; use Civi\Api4\Contribution; use Civi\Api4\CustomField; use Civi\Api4\CustomGroup; +use Civi\Api4\Individual; use Civi\Api4\Relationship; use Civi\Api4\SearchSegment; use Civi\Test\HeadlessInterface; @@ -245,7 +246,7 @@ class SearchSegmentTest extends \PHPUnit\Framework\TestCase implements HeadlessI ['birth_date' => 'now - 33 year - 1 month'], [], ]; - Contact::save(FALSE) + Individual::save(FALSE) ->setRecords($sampleData) ->addChain('rel', Relationship::create() ->addValue('relationship_type_id', 1) @@ -274,6 +275,11 @@ class SearchSegmentTest extends \PHPUnit\Framework\TestCase implements HeadlessI ]) ->execute(); + $field = Individual::getFields(FALSE) + ->addWhere('name', '=', 'segment_Age_Range') + ->execute()->single(); + $this->assertEquals('Age Range', $field['label']); + $params = [ 'checkPermissions' => FALSE, 'return' => 'page:1', diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml index f4157a5233c5b9f678df4896565b4c771e36c9a9..14bffbc677394ec17420cd5b200e8f0069e54f7a 100644 --- a/civicrm/ext/sequentialcreditnotes/info.xml +++ b/civicrm/ext/sequentialcreditnotes/info.xml @@ -14,14 +14,14 @@ <url desc="Support">https://lab.civicrm.org/extensions/sequentialcreditnotes</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-01-28</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <mixins> <mixin>setting-php@1.0.0</mixin> diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php index d6b7615a10af7ed5138ccc297e6ca1f90dae7235..ff208b3c45a3ea96977d18a7deaaa2c14bd10c3b 100644 --- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php +++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php @@ -63,16 +63,16 @@ class CRM_Standaloneusers_Upgrader extends CRM_Extension_Upgrader_Base { $baseTpl = [ 'workflow_name' => 'password_reset', 'msg_title' => 'Password reset', - 'msg_subject' => 'Password reset link for {domain.name}', + 'msg_subject' => '{ts}Password reset link for{/ts} {domain.name}', 'msg_text' => <<<TXT - A password reset link was requested for this account. If this wasn\'t you (and nobody else can access this email account) you can safely ignore this email. + {ts}A password reset link was requested for this account. If this wasn\'t you (and nobody else can access this email account) you can safely ignore this email.{/ts} {\$resetUrlPlaintext} {domain.name} TXT, 'msg_html' => <<<HTML - <p>A password reset link was requested for this account. If this wasn\'t you (and nobody else can access this email account) you can safely ignore this email.</p> + <p>{ts}A password reset link was requested for this account. If this wasn\'t you (and nobody else can access this email account) you can safely ignore this email.{/ts}</p> <p><a href="{\$resetUrlHtml}">{\$resetUrlHtml}</a></p> diff --git a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/PasswordReset.php b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/PasswordReset.php index e02928d0e1d7b4fdfccf4ce5ba1e8a30a2c371b5..6e71dd1cde22fe263c546f90219915cfd984a52c 100644 --- a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/PasswordReset.php +++ b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/PasswordReset.php @@ -20,7 +20,7 @@ class PasswordReset extends AbstractAction { * @var string * @required */ - protected string $token; + protected $token; /** * New password. @@ -28,7 +28,7 @@ class PasswordReset extends AbstractAction { * @var string * @required */ - protected string $password; + protected $password; public function _run(Result $result) { diff --git a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php index 101d21067587f620a32c65024ed35d7bf0434348..6205d79078c0abad418d04c3908f88eb5df6e470 100644 --- a/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php +++ b/civicrm/ext/standaloneusers/Civi/Api4/Action/User/SendPasswordReset.php @@ -30,7 +30,7 @@ class SendPasswordReset extends AbstractAction { * @var string * @default '' */ - protected string $identifier; + protected $identifier; public function _run(Result $result) { $endNoSoonerThan = 0.25 + microtime(TRUE); diff --git a/civicrm/ext/standaloneusers/ang/afformEditRole.aff.php b/civicrm/ext/standaloneusers/ang/afformEditRole.aff.php index 589005d657b405fd35576abf2cda6fd29f7f0935..07420f89beea08eee2c2ba4e8c52828827bac33e 100644 --- a/civicrm/ext/standaloneusers/ang/afformEditRole.aff.php +++ b/civicrm/ext/standaloneusers/ang/afformEditRole.aff.php @@ -8,15 +8,4 @@ return [ 'server_route' => 'civicrm/admin/role', 'permission' => ['access CiviCRM'], 'redirect' => 'civicrm/admin/roles', - 'create_submission' => TRUE, - 'requires' => [], - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.php b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.php index 40704a85bdd61948e05c837d3df1bdacbe378878..2c8ce2c33ba038e77724dc1065b20dcd25b2380e 100644 --- a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.php +++ b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.php @@ -3,20 +3,9 @@ use CRM_Standaloneusers_ExtensionUtil as E; return [ 'type' => 'form', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Edit User account'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-list-alt', 'server_route' => 'civicrm/admin/user', 'permission' => ['cms:administer users'], 'redirect' => '/civicrm/admin/users', - 'create_submission' => TRUE, - 'navigation' => NULL, ]; diff --git a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php index b7226f6d47a73605097e09ef3f527a960d646b4b..c2bf7bc7b75b3aacf8009f47aeebac3c9689981f 100644 --- a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php +++ b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.php @@ -3,21 +3,10 @@ use CRM_Standaloneusers_ExtensionUtil as E; return [ 'type' => 'search', - 'requires' => [], - 'entity_type' => NULL, - 'join_entity' => NULL, 'title' => E::ts('Administer User Accounts'), - 'description' => '', - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, 'icon' => 'fa-users', 'server_route' => 'civicrm/admin/users', 'permission' => ['cms:administer users'], - 'redirect' => NULL, - 'create_submission' => FALSE, 'navigation' => [ 'parent' => 'Users and Permissions', 'label' => E::ts('User Accounts'), diff --git a/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.php b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.php index 2bd4e2da044bd441738125d16d3253b4366928a0..85fd811028da81ef9d8915fcbc94bc23f60e22c7 100644 --- a/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.php +++ b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.php @@ -13,14 +13,4 @@ return [ 'label' => E::ts('User Roles'), 'weight' => 0, ], - 'requires' => [], - 'is_dashlet' => FALSE, - 'is_public' => FALSE, - 'is_token' => FALSE, - 'entity_type' => NULL, - 'join_entity' => NULL, - 'contact_summary' => NULL, - 'summary_contact_type' => NULL, - 'redirect' => NULL, - 'create_submission' => NULL, ]; diff --git a/civicrm/ext/standaloneusers/info.xml b/civicrm/ext/standaloneusers/info.xml index 5598dd1ff1509fda470b07145ef57024a4e0fc5e..07a87434b32ceeae328a9f9466292d3672024b1e 100644 --- a/civicrm/ext/standaloneusers/info.xml +++ b/civicrm/ext/standaloneusers/info.xml @@ -14,11 +14,11 @@ <url desc="Support">http://FIXME</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2022-11-11</releaseDate> - <version>5.67.3</version> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.67</ver> + <ver>5.68</ver> </compatibility> <requires> <ext>org.civicrm.search_kit</ext> diff --git a/civicrm/ext/user_dashboard/ang/afsearchUserDashboard.aff.php b/civicrm/ext/user_dashboard/ang/afsearchUserDashboard.aff.php new file mode 100644 index 0000000000000000000000000000000000000000..acb8944bc934ab033d1bbeaf7a0b71684d47aea7 --- /dev/null +++ b/civicrm/ext/user_dashboard/ang/afsearchUserDashboard.aff.php @@ -0,0 +1,32 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +$afform = [ + 'type' => 'search', + 'title' => E::ts('User Dashboard'), + 'server_route' => 'civicrm/user', + 'permission' => ['access Contact Dashboard'], + 'layout' => '', + // temporary, remove after merging https://github.com/civicrm/civicrm-core/pull/27783 + 'requires' => ['af', 'afCore', 'crmSearchDisplayTable'], +]; + +// Add displays for every SavedSearch tagged "UserDashboard" +$searchDisplays = civicrm_api4('SearchDisplay', 'get', [ + 'checkPermissions' => FALSE, + 'select' => ['name', 'label', 'type:name', 'saved_search_id.name'], + 'where' => [ + ['saved_search_id.is_current', '=', TRUE], + ['saved_search_id.tags:name', 'IN', ['UserDashboard']], + ], + 'orderBy' => ['name' => 'ASC'], +]); +foreach ($searchDisplays as $display) { + $afform['layout'] .= <<<HTML + <div af-fieldset="" class="af-container-style-pane" af-title="$display[label]"> + <{$display['type:name']} search-name="{$display['saved_search_id.name']}" display-name="$display[name]"></{$display['type:name']}> + </div> + HTML; +} + +return $afform; diff --git a/civicrm/ext/user_dashboard/info.xml b/civicrm/ext/user_dashboard/info.xml new file mode 100644 index 0000000000000000000000000000000000000000..e2690a85a179ef516147f9f6c875f88347618017 --- /dev/null +++ b/civicrm/ext/user_dashboard/info.xml @@ -0,0 +1,36 @@ +<?xml version="1.0"?> +<extension key="user_dashboard" type="module"> + <file>user_dashboard</file> + <name>User Dashboard</name> + <description>Adds a page for users to see their contributions, memberships, etc.</description> + <license>AGPL-3.0</license> + <maintainer> + <author>CiviCRM</author> + <email>info@civicrm.org</email> + </maintainer> + <urls> + <url desc="Main Extension Page">http://FIXME</url> + <url desc="Documentation">http://FIXME</url> + <url desc="Support">http://FIXME</url> + <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> + </urls> + <releaseDate>2023-12-07</releaseDate> + <version>5.68.0</version> + <develStage>alpha</develStage> + <compatibility> + <ver>5.68</ver> + </compatibility> + <comments>This extension is still experimental</comments> + <classloader> + <psr0 prefix="CRM_" path="."/> + <psr4 prefix="Civi\" path="Civi"/> + </classloader> + <civix> + <namespace>CRM/UserDashboard</namespace> + <format>23.02.1</format> + <angularModule>crmUserDashboard</angularModule> + </civix> + <mixins> + <mixin>mgd-php@1.0.0</mixin> + </mixins> +</extension> diff --git a/civicrm/ext/user_dashboard/managed/Dashboard_Tag.mgd.php b/civicrm/ext/user_dashboard/managed/Dashboard_Tag.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..753a40b9e93303fb556bc3493ca270a63152fcf6 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/Dashboard_Tag.mgd.php @@ -0,0 +1,27 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +return [ + [ + 'name' => 'Dashboard_Tag', + 'entity' => 'Tag', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'label' => E::ts('User Dashboard'), + 'name' => 'UserDashboard', + 'description' => E::ts('Search will appear on the User Dashboard page'), + 'is_reserved' => TRUE, + 'used_for' => [ + 'civicrm_saved_search', + ], + 'color' => '#5d677b', + ], + 'match' => [ + 'name', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..65538659cc3eb31d4ec8b2061905e8bddff256f1 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Activities.mgd.php @@ -0,0 +1,175 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Activities', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Activities', + 'label' => E::ts('User Dashboard - Activities'), + 'api_entity' => 'Activity', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'subject', + 'activity_type_id:label', + 'GROUP_CONCAT(DISTINCT Activity_ActivityContact_Contact_01.sort_name) AS GROUP_CONCAT_Activity_ActivityContact_Contact_01_sort_name', + 'GROUP_CONCAT(DISTINCT Activity_ActivityContact_Contact_02.sort_name) AS GROUP_CONCAT_Activity_ActivityContact_Contact_02_sort_name', + 'activity_date_time', + 'status_id:label', + ], + 'orderBy' => [], + 'where' => [ + [ + 'status_id:name', + '!=', + 'Completed', + ], + ], + 'groupBy' => [ + 'id', + ], + 'join' => [ + [ + 'Contact AS Activity_ActivityContact_Contact_01', + 'LEFT', + 'ActivityContact', + [ + 'id', + '=', + 'Activity_ActivityContact_Contact_01.activity_id', + ], + [ + 'Activity_ActivityContact_Contact_01.record_type_id:name', + '=', + '"Activity Source"', + ], + ], + [ + 'Contact AS Activity_ActivityContact_Contact_02', + 'LEFT', + 'ActivityContact', + [ + 'id', + '=', + 'Activity_ActivityContact_Contact_02.activity_id', + ], + [ + 'Activity_ActivityContact_Contact_02.record_type_id:name', + '=', + '"Activity Targets"', + ], + ], + [ + 'Contact AS Activity_ActivityContact_Contact_03', + 'INNER', + 'ActivityContact', + [ + 'id', + '=', + 'Activity_ActivityContact_Contact_03.activity_id', + ], + [ + 'Activity_ActivityContact_Contact_03.record_type_id:name', + '=', + '"Activity Assignees"', + ], + [ + 'Activity_ActivityContact_Contact_03.id', + '=', + '"user_contact_id"', + ], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Activities_SearchDisplay_UserDashboard_Activities', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Activities', + 'label' => E::ts('Your Assigned Activities'), + 'saved_search_id.name' => 'UserDashboard_Activities', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'expose_limit' => TRUE, + 'hide_single' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'activity_type_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'subject', + 'dataType' => 'String', + 'label' => E::ts('Subject'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Activity_ActivityContact_Contact_01_sort_name', + 'dataType' => 'String', + 'label' => E::ts('Added by'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'GROUP_CONCAT_Activity_ActivityContact_Contact_02_sort_name', + 'dataType' => 'String', + 'label' => E::ts('With'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'activity_date_time', + 'dataType' => 'Timestamp', + 'label' => E::ts('Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..34c4d43b317ce1a6f6942b8f961a5bc8fa588474 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Groups.mgd.php @@ -0,0 +1,149 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Groups', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Groups', + 'label' => E::ts('User Dashboard - Groups'), + 'api_entity' => 'Group', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'frontend_title', + 'Group_GroupContact_Contact_01.status:label', + 'MAX(Group_SubscriptionHistory_group_id_01.date) AS MAX_Group_SubscriptionHistory_group_id_01_date', + ], + 'orderBy' => [], + 'where' => [ + [ + 'Group_GroupContact_Contact_01.id', + '=', + 'user_contact_id', + ], + [ + 'visibility:name', + '=', + 'Public Pages', + ], + [ + 'is_active', + '=', + TRUE, + ], + ], + 'groupBy' => [ + 'id', + 'Group_GroupContact_Contact_01.id', + ], + 'join' => [ + [ + 'Contact AS Group_GroupContact_Contact_01', + 'LEFT', + 'GroupContact', + [ + 'id', + '=', + 'Group_GroupContact_Contact_01.group_id', + ], + ], + [ + 'SubscriptionHistory AS Group_SubscriptionHistory_group_id_01', + 'LEFT', + [ + 'id', + '=', + 'Group_SubscriptionHistory_group_id_01.group_id', + ], + [ + 'Group_SubscriptionHistory_group_id_01.contact_id', + '=', + '"user_contact_id"', + ], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Groups_SearchDisplay_UserDashboard_Groups', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Groups', + 'label' => E::ts('Your Group(s)'), + 'saved_search_id.name' => 'UserDashboard_Groups', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [ + [ + 'Group_GroupContact_Contact_01.status', + 'ASC', + ], + ], + 'limit' => 20, + 'pager' => [ + 'expose_limit' => TRUE, + 'hide_single' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'frontend_title', + 'dataType' => 'String', + 'label' => E::ts('Group'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'Group_GroupContact_Contact_01.status:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MAX_Group_SubscriptionHistory_group_id_01_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Since'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'cssRules' => [ + [ + 'disabled', + 'Group_GroupContact_Contact_01.status', + '=', + 'Removed', + ], + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..9b9f696c7bd786f632fa9aaeb3856f945269a529 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/SavedSearch_UserDashboard_Pledges.mgd.php @@ -0,0 +1,146 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviPledge')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Pledges', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Pledges', + 'label' => E::ts('User Dashboard - Pledges'), + 'api_entity' => 'Pledge', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'amount', + 'SUM(Pledge_PledgePayment_pledge_id_01.actual_amount) AS SUM_Pledge_PledgePayment_pledge_id_01_actual_amount', + 'financial_type_id:label', + 'create_date', + 'MIN(Pledge_PledgePayment_pledge_id_02.scheduled_date) AS MIN_Pledge_PledgePayment_pledge_id_02_scheduled_date', + 'MAX(Pledge_PledgePayment_pledge_id_02.scheduled_amount) AS MAX_Pledge_PledgePayment_pledge_id_02_scheduled_amount', + 'status_id:label', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [ + 'id', + ], + 'join' => [ + [ + 'PledgePayment AS Pledge_PledgePayment_pledge_id_01', + 'LEFT', + ['id', '=', 'Pledge_PledgePayment_pledge_id_01.pledge_id'], + ['Pledge_PledgePayment_pledge_id_01.status_id:name', '=', '"Completed"'], + ], + [ + 'PledgePayment AS Pledge_PledgePayment_pledge_id_02', + 'LEFT', + ['id', '=', 'Pledge_PledgePayment_pledge_id_02.pledge_id'], + ['Pledge_PledgePayment_pledge_id_02.status_id:name', '!=', '"Completed"'], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Pledges_SearchDisplay_UserDashboard_Pledges', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Pledges', + 'label' => E::ts('Your Pledges'), + 'saved_search_id.name' => 'UserDashboard_Pledges', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'amount', + 'dataType' => 'Money', + 'label' => E::ts('Pledged'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'SUM_Pledge_PledgePayment_pledge_id_01_actual_amount', + 'dataType' => 'Money', + 'label' => E::ts('Total Paid'), + 'sortable' => TRUE, + 'empty_value' => '0', + ], + [ + 'type' => 'field', + 'key' => 'financial_type_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Pledged For'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'create_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Pledge Made'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MIN_Pledge_PledgePayment_pledge_id_02_scheduled_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Next Pay Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'MAX_Pledge_PledgePayment_pledge_id_02_scheduled_amount', + 'dataType' => 'Money', + 'label' => E::ts('Next Amount'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..d5b5638feb784af65d0c411ae12d1973da463abf --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_Contributions.mgd.php @@ -0,0 +1,114 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviContribute')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Contributions', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Contributions', + 'label' => E::ts('User Dashboard - Contributions'), + 'api_entity' => 'Contribution', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'total_amount', + 'financial_type_id:label', + 'contribution_status_id:label', + 'receive_date', + 'receipt_date', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Contributions_SearchDisplay_UserDashboard_Contributions', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Contributions', + 'label' => E::ts('Your Contribution(s)'), + 'saved_search_id.name' => 'UserDashboard_Contributions', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'total_amount', + 'dataType' => 'String', + 'label' => E::ts('Total Amount'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'financial_type_id:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'receive_date', + 'dataType' => 'Date', + 'label' => E::ts('Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'receipt_date', + 'dataType' => 'Date', + 'label' => E::ts('Receipt Sent'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'contribution_status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_Events.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_Events.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..c1cb1087cdf6dfadb2bc0f69e354a6d810ee72f5 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_Events.mgd.php @@ -0,0 +1,106 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviEvent')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Events', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Events', + 'label' => E::ts('User Dashboard - Events'), + 'api_entity' => 'Participant', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'event_id.title', + 'role_id:label', + 'status_id:label', + 'event_id.start_date', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Events_SearchDisplay_UserDashboard_Events', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Events', + 'label' => E::ts('Your Event(s)'), + 'saved_search_id.name' => 'UserDashboard_Events', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'event_id.title', + 'dataType' => 'String', + 'label' => E::ts('Event'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'event_id.start_date', + 'dataType' => 'Date', + 'label' => E::ts('Event Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'role_id:label', + 'dataType' => 'String', + 'label' => E::ts('Role'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..3604070c83cdcdcfef72f6546ba1862b8eeb6bc4 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_Memberships.mgd.php @@ -0,0 +1,114 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviMember')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Memberships', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Memberships', + 'label' => E::ts('User Dashboard - Memberships'), + 'api_entity' => 'Membership', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'membership_type_id:label', + 'status_id:label', + 'start_date', + 'end_date', + 'join_date', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Memberships_SearchDisplay_UserDashboard_Memberships', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Memberships', + 'label' => E::ts('Your Membership(s)'), + 'saved_search_id.name' => 'UserDashboard_Memberships', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'membership_type_id:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'join_date', + 'dataType' => 'Date', + 'label' => E::ts('Member Since'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'start_date', + 'dataType' => 'Date', + 'label' => E::ts('Start Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'end_date', + 'dataType' => 'Date', + 'label' => E::ts('End Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Status'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..4098795f142b6ec32310f84cb366889bb4389206 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_PCPs.mgd.php @@ -0,0 +1,98 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +if (!CRM_Core_Component::isEnabled('CiviContribute')) { + return []; +} + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_PCPs', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_PCPs', + 'label' => E::ts('User Dashboard - PCPs'), + 'api_entity' => 'PCP', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'title', + 'status_id:label', + 'page_id.frontend_title', + ], + 'orderBy' => [], + 'where' => [ + ['contact_id', '=', 'user_contact_id'], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_PCPs_SearchDisplay_UserDashboard_PCPs', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_PCPs', + 'label' => E::ts('Personal Campaign Pages'), + 'saved_search_id.name' => 'UserDashboard_PCPs', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'title', + 'dataType' => 'String', + 'label' => E::ts('Title'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'status_id:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'page_id.frontend_title', + 'dataType' => 'String', + 'label' => E::ts('Campaign'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php b/civicrm/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..85c7a653dc35ac7899b0510d0b112aa34a9bb699 --- /dev/null +++ b/civicrm/ext/user_dashboard/managed/UserDashboard_Relationships.mgd.php @@ -0,0 +1,143 @@ +<?php +use CRM_UserDashboard_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_UserDashboard_Relationships', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Relationships', + 'label' => E::ts('User Dashboard - Relationships'), + 'api_entity' => 'RelationshipCache', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'near_relation:label', + 'RelationshipCache_Contact_far_contact_id_01.display_name', + 'start_date', + 'RelationshipCache_Contact_far_contact_id_01.address_primary.city', + 'RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label', + 'RelationshipCache_Contact_far_contact_id_01.email_primary.email', + 'RelationshipCache_Contact_far_contact_id_01.phone_primary.phone', + ], + 'orderBy' => [], + 'where' => [ + ['near_contact_id', '=', 'user_contact_id'], + ['is_current', '=', TRUE], + ], + 'groupBy' => [], + 'join' => [ + [ + 'Contact AS RelationshipCache_Contact_far_contact_id_01', + 'LEFT', + ['far_contact_id', '=', 'RelationshipCache_Contact_far_contact_id_01.id'], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_UserDashboard_Relationships_SearchDisplay_UserDashboard_Relationships', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'UserDashboard_Relationships', + 'label' => E::ts('Your Contacts / Organizations'), + 'saved_search_id.name' => 'UserDashboard_Relationships', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 20, + 'pager' => [ + 'hide_single' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 1, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'near_relation:label', + 'dataType' => 'String', + 'label' => E::ts('Relationship'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.display_name', + 'dataType' => 'String', + 'label' => E::ts('With'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_sub_type:icon', + 'side' => 'left', + ], + [ + 'field' => 'RelationshipCache_Contact_far_contact_id_01.contact_type:icon', + 'side' => 'left', + ], + ], + ], + [ + 'type' => 'field', + 'key' => 'start_date', + 'dataType' => 'Date', + 'label' => E::ts('Since'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.city', + 'dataType' => 'String', + 'label' => E::ts('City'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('State/Prov'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.email_primary.email', + 'dataType' => 'String', + 'label' => E::ts('Email'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'RelationshipCache_Contact_far_contact_id_01.phone_primary.phone', + 'dataType' => 'String', + 'label' => E::ts('Phone'), + 'sortable' => TRUE, + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/user_dashboard/user_dashboard.civix.php b/civicrm/ext/user_dashboard/user_dashboard.civix.php new file mode 100644 index 0000000000000000000000000000000000000000..3f00bdefdefea45cef53503f823be64a86d2a720 --- /dev/null +++ b/civicrm/ext/user_dashboard/user_dashboard.civix.php @@ -0,0 +1,200 @@ +<?php + +// AUTO-GENERATED FILE -- Civix may overwrite any changes made to this file + +/** + * The ExtensionUtil class provides small stubs for accessing resources of this + * extension. + */ +class CRM_UserDashboard_ExtensionUtil { + const SHORT_NAME = 'user_dashboard'; + const LONG_NAME = 'user_dashboard'; + const CLASS_PREFIX = 'CRM_UserDashboard'; + + /** + * Translate a string using the extension's domain. + * + * If the extension doesn't have a specific translation + * for the string, fallback to the default translations. + * + * @param string $text + * Canonical message text (generally en_US). + * @param array $params + * @return string + * Translated text. + * @see ts + */ + public static function ts($text, $params = []): string { + if (!array_key_exists('domain', $params)) { + $params['domain'] = [self::LONG_NAME, NULL]; + } + return ts($text, $params); + } + + /** + * Get the URL of a resource file (in this extension). + * + * @param string|NULL $file + * Ex: NULL. + * Ex: 'css/foo.css'. + * @return string + * Ex: 'http://example.org/sites/default/ext/org.example.foo'. + * Ex: 'http://example.org/sites/default/ext/org.example.foo/css/foo.css'. + */ + public static function url($file = NULL): string { + if ($file === NULL) { + return rtrim(CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME), '/'); + } + return CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME, $file); + } + + /** + * Get the path of a resource file (in this extension). + * + * @param string|NULL $file + * Ex: NULL. + * Ex: 'css/foo.css'. + * @return string + * Ex: '/var/www/example.org/sites/default/ext/org.example.foo'. + * Ex: '/var/www/example.org/sites/default/ext/org.example.foo/css/foo.css'. + */ + public static function path($file = NULL) { + // return CRM_Core_Resources::singleton()->getPath(self::LONG_NAME, $file); + return __DIR__ . ($file === NULL ? '' : (DIRECTORY_SEPARATOR . $file)); + } + + /** + * Get the name of a class within this extension. + * + * @param string $suffix + * Ex: 'Page_HelloWorld' or 'Page\\HelloWorld'. + * @return string + * Ex: 'CRM_Foo_Page_HelloWorld'. + */ + public static function findClass($suffix) { + return self::CLASS_PREFIX . '_' . str_replace('\\', '_', $suffix); + } + +} + +use CRM_UserDashboard_ExtensionUtil as E; + +/** + * (Delegated) Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config + */ +function _user_dashboard_civix_civicrm_config($config = NULL) { + static $configured = FALSE; + if ($configured) { + return; + } + $configured = TRUE; + + $extRoot = __DIR__ . DIRECTORY_SEPARATOR; + $include_path = $extRoot . PATH_SEPARATOR . get_include_path(); + set_include_path($include_path); + // Based on <compatibility>, this does not currently require mixin/polyfill.php. +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function _user_dashboard_civix_civicrm_install() { + _user_dashboard_civix_civicrm_config(); + // Based on <compatibility>, this does not currently require mixin/polyfill.php. +} + +/** + * (Delegated) Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function _user_dashboard_civix_civicrm_enable(): void { + _user_dashboard_civix_civicrm_config(); + // Based on <compatibility>, this does not currently require mixin/polyfill.php. +} + +/** + * Inserts a navigation menu item at a given place in the hierarchy. + * + * @param array $menu - menu hierarchy + * @param string $path - path to parent of this item, e.g. 'my_extension/submenu' + * 'Mailing', or 'Administer/System Settings' + * @param array $item - the item to insert (parent/child attributes will be + * filled for you) + * + * @return bool + */ +function _user_dashboard_civix_insert_navigation_menu(&$menu, $path, $item) { + // If we are done going down the path, insert menu + if (empty($path)) { + $menu[] = [ + 'attributes' => array_merge([ + 'label' => $item['name'] ?? NULL, + 'active' => 1, + ], $item), + ]; + return TRUE; + } + else { + // Find an recurse into the next level down + $found = FALSE; + $path = explode('/', $path); + $first = array_shift($path); + foreach ($menu as $key => &$entry) { + if ($entry['attributes']['name'] == $first) { + if (!isset($entry['child'])) { + $entry['child'] = []; + } + $found = _user_dashboard_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item); + } + } + return $found; + } +} + +/** + * (Delegated) Implements hook_civicrm_navigationMenu(). + */ +function _user_dashboard_civix_navigationMenu(&$nodes) { + if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) { + _user_dashboard_civix_fixNavigationMenu($nodes); + } +} + +/** + * Given a navigation menu, generate navIDs for any items which are + * missing them. + */ +function _user_dashboard_civix_fixNavigationMenu(&$nodes) { + $maxNavID = 1; + array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) { + if ($key === 'navID') { + $maxNavID = max($maxNavID, $item); + } + }); + _user_dashboard_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL); +} + +function _user_dashboard_civix_fixNavigationMenuItems(&$nodes, &$maxNavID, $parentID) { + $origKeys = array_keys($nodes); + foreach ($origKeys as $origKey) { + if (!isset($nodes[$origKey]['attributes']['parentID']) && $parentID !== NULL) { + $nodes[$origKey]['attributes']['parentID'] = $parentID; + } + // If no navID, then assign navID and fix key. + if (!isset($nodes[$origKey]['attributes']['navID'])) { + $newKey = ++$maxNavID; + $nodes[$origKey]['attributes']['navID'] = $newKey; + $nodes[$newKey] = $nodes[$origKey]; + unset($nodes[$origKey]); + $origKey = $newKey; + } + if (isset($nodes[$origKey]['child']) && is_array($nodes[$origKey]['child'])) { + _user_dashboard_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']); + } + } +} diff --git a/civicrm/ext/user_dashboard/user_dashboard.php b/civicrm/ext/user_dashboard/user_dashboard.php new file mode 100644 index 0000000000000000000000000000000000000000..5cd4495aa745a45b4bff6a816088800317a93c58 --- /dev/null +++ b/civicrm/ext/user_dashboard/user_dashboard.php @@ -0,0 +1,80 @@ +<?php + +require_once 'user_dashboard.civix.php'; +use CRM_UserDashboard_ExtensionUtil as E; + +/** + * Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config/ + */ +function user_dashboard_civicrm_config(&$config): void { + _user_dashboard_civix_civicrm_config($config); +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function user_dashboard_civicrm_install(): void { + _user_dashboard_civix_civicrm_install(); +} + +/** + * Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function user_dashboard_civicrm_enable(): void { + _user_dashboard_civix_civicrm_enable(); +} + +/** + * Tag SavedSearches with the "UserDashboard" tag. + * + * The reason for using this hook is that it's write-once (just during insert), + * and after that the user can freely tag and untag searches. + * + * If the tag was part of the .mgd.php file for each search then it would "stick" and + * the user would not be able to remove tags without their changes reverting on every managed reconcile. + * Also, adding it to the .mgd.php file requires hacking the exported api call with a 'chain', etc. + * + * @implements CRM_Utils_Hook::post() + */ +function user_dashboard_civicrm_post($action, $entity, $id, $savedSearch) { + if ($entity !== 'SavedSearch' || $action !== 'create' || !str_starts_with($savedSearch->name, 'UserDashboard_')) { + return; + } + + // Transition note: the legacy dashboard used a setting ('user_dashboard_options') + // to control which panes are enabled. + // This new extension uses a tag. + // For the next year or so, we'll conditionally tag the searches in this extension based on that setting. + // When the transition is complete, the setting can be deleted and this class can be simplified to unconditionally + // tag all SavedSearches in this extension. + $legacySetting = Civi\Api4\Setting::get(FALSE) + ->addSelect('user_dashboard_options:name') + ->execute() + ->first(); + + // If the legacy setting corresponding to this pane is enabled, tag it + $settingNames = [ + 'UserDashboard_Activities' => 'Assigned Activities', + 'UserDashboard_Groups' => 'Groups', + 'UserDashboard_Pledges' => 'CiviPledge', + 'UserDashboard_Contributions' => 'CiviContribute', + 'UserDashboard_Events' => 'CiviEvent', + 'UserDashboard_Memberships' => 'CiviMember', + 'UserDashboard_PCPs' => 'PCP', + 'UserDashboard_Relationships' => 'Permissioned Orgs', + ]; + + $settingName = $settingNames[$savedSearch->name] ?? NULL; + + if (!$settingName || in_array($settingName, $legacySetting['value'], TRUE)) { + Civi\Api4\EntityTag::save(FALSE) + ->addRecord(['entity_table' => 'civicrm_saved_search', 'entity_id' => $id, 'tag_id:name' => 'UserDashboard']) + ->execute(); + } +} diff --git a/civicrm/js/Common.js b/civicrm/js/Common.js index f1bb53494466215f0db779d7ee3d086af0460fdb..852540fab88815ef2064782075477a7b36fab0f8 100644 --- a/civicrm/js/Common.js +++ b/civicrm/js/Common.js @@ -538,7 +538,23 @@ if (!CRM.vars) CRM.vars = {}; }); } - function getStaticOptionMarkup(staticItems) { + function renderQuickAddMarkup(quickAddLinks) { + if (!quickAddLinks || !quickAddLinks.length) { + return ''; + } + let markup = '<div class="crm-entityref-links crm-entityref-quick-add">'; + CRM.config.quickAdd.forEach((link) => { + if (quickAddLinks.includes(link.path)) { + markup += ' <a class="crm-hover-button" href="' + _.escape(CRM.url(link.path)) + '">' + + '<i class="crm-i ' + _.escape(link.icon) + '" aria-hidden="true"></i> ' + + _.escape(link.title) + '</a>'; + } + }); + markup += '</div>'; + return markup; + } + + function renderStaticOptionMarkup(staticItems) { if (!staticItems.length) { return ''; } @@ -559,9 +575,11 @@ if (!CRM.vars) CRM.vars = {}; } select2Options = select2Options || {}; return $(this).each(function() { - var $el = $(this).off('.crmEntity'), - staticItems = getStaticOptions(select2Options.static), - multiple = !!select2Options.multiple; + const $el = $(this).off('.crmEntity'); + let staticItems = getStaticOptions(select2Options.static), + quickAddLinks = select2Options.quickAdd, + multiple = !!select2Options.multiple, + key = apiParams.key || 'id'; $el.crmSelect2(_.extend({ ajax: { @@ -604,18 +622,25 @@ if (!CRM.vars) CRM.vars = {}; } }, formatInputTooShort: function() { - var txt = _.escape($.fn.select2.defaults.formatInputTooShort.call(this)); - txt += getStaticOptionMarkup(staticItems); - return txt; + let html = _.escape($.fn.select2.defaults.formatInputTooShort.call(this)); + html += renderStaticOptionMarkup(staticItems); + html += renderQuickAddMarkup(quickAddLinks); + return html; + }, + formatNoMatches: function() { + let html = _.escape($.fn.select2.defaults.formatNoMatches); + html += renderQuickAddMarkup(quickAddLinks); + return html; } }, select2Options)); - $el.on('select2-open.crmEntity', function() { + $el.on('select2-open.crmEntity', function(){ var $el = $(this); $('#select2-drop') .off('.crmEntity') - .on('click.crmEntity', '.crm-entityref-links-static a', function(e) { - var id = $(this).attr('href').substr(1), + // Add static item to selection when clicking static links + .on('click.crmEntity', '.crm-entityref-links-static a', function() { + let id = $(this).attr('href').substring(1), item = _.findWhere(staticItems, {id: id}); $el.select2('close'); if (multiple) { @@ -628,6 +653,34 @@ if (!CRM.vars) CRM.vars = {}; $el.select2('data', item, true); } return false; + }) + // Pop-up Afform when clicking quick-add links + .on('click.crmEntity', '.crm-entityref-quick-add a', function() { + let url = $(this).attr('href'); + $el.select2('close'); + CRM.loadForm(url).on('crmFormSuccess', (e, data) => { + // Quick-add Afform has been submitted, parse submission data for id of created entity + const response = data.submissionResponse && data.submissionResponse[0]; + let createdId; + if (typeof response === 'object') { + // Loop through entities created by the afform (there should be only one) + Object.keys(response).forEach((entity) => { + if (Array.isArray(response[entity]) && response[entity][0] && response[entity][0][key]) { + createdId = response[entity][0][key]; + } + }); + } + // Update field value with new id and the widget will automatically fetch the label + if (createdId) { + if (multiple && $el.val()) { + // Select2 v3 uses a string instead of array for multiple values + $el.val($el.val() + ',' + createdId).change(); + } else { + $el.val('' + createdId).change(); + } + } + }); + return false; }); }); }); diff --git a/civicrm/mixin/setting-admin@1/mixin.php b/civicrm/mixin/setting-admin@1/mixin.php new file mode 100644 index 0000000000000000000000000000000000000000..7cfd42999b30ca606f373a806d8bf979ebcec58f --- /dev/null +++ b/civicrm/mixin/setting-admin@1/mixin.php @@ -0,0 +1,214 @@ +<?php + +/** + * The "setting-admin" mixin defines a standard idiom for managing extension settings: + * + * 1. Create a permission "administer {myext}" ("Administer {My Extension}"). + * 2. Create a page "civicrm/admin/setting/{myext}" (via `CRM_Admin_Form_Generic`) + * 3. Assign all settings from "{myext}" to appear on the page. + * 4. Create a link "Administer > System Settings" to "{My Extension} Settings" + * + * (The values of "{myext}" and "{My Extension}" come from info.xml's `<file>` and `<name>`.) + * + * If you don't like the defaults, then there are a few override points: + * + * - If you manually create permission "administer {myext}", then your label/description takes precedence. + * - If you manually register route "civicrm/admin/setting/{myext}", then your definition takes precedence. + * - If you manually configure a setting with `settings_page`, then that setting will move to the other page. + * (To make a hidden setting, specify `settings_page => []`.) + * - If you manually add "civicrm/admin/setting/{myext}" to the menu, then your link takes precedence. + * + * Additionally, there is experimental support for overrides in info.xml. (Respected by v1.0.0 but not guaranteed future.) + * + * <civix><setting-page-title>My Custom Title</setting-page-title></civix> + * + * @mixinName setting-admin + * @mixinVersion 1.1.0 + * @since 5.68 + */ + +namespace Civi\Mixin\SettingAdminV1; + +use Civi; + +class About { + + /** + * @var \CRM_Extension_MixInfo + */ + private $mixInfo; + + /** + * @var \CRM_Extension_Info + */ + private $info; + + /** + * @param \CRM_Extension_MixInfo $mixInfo + */ + public static function instance(\CRM_Extension_MixInfo $mixInfo): About { + $about = new About(); + $about->mixInfo = $mixInfo; + $about->info = \CRM_Extension_System::singleton()->getMapper()->keyToInfo($mixInfo->longName); + return $about; + } + + public function getPath(): string { + return 'civicrm/admin/setting/' . $this->mixInfo->shortName; + } + + public function getPerm(): string { + return 'administer ' . $this->mixInfo->shortName; + } + + public function getLabel(): string { + return $this->info->label ? _ts($this->info->label, ['domain' => $this->info->key]) : $this->info->key; + } + + public function getPageTitle(): string { + // Changing the title any other way is slightly annoying because you have to override both route+nav. + // It might be nice if one (route or menu) reliably inherited its title from the other... + if (!empty($this->info->civix['setting-page-title'])) { + return $this->info->civix['setting-page-title']; + // Could call _ts(..., [domain=>...]), but translation appears to happen at another level, + // and double-translation might confuse multilingual. + } + return ts('%1 Settings', [1 => $this->getLabel()]); + } + + public function getRoute(): array { + return [ + 'title' => $this->getPageTitle(), + 'page_callback' => 'CRM_Admin_Form_Generic', + 'access_arguments' => [['administer CiviCRM', $this->getPerm()], 'or'], + 'adminGroup' => 'System Settings', + 'desc' => _ts($this->info->description ?: ''), + ]; + } + + public function getNavigation(): array { + return [ + 'label' => $this->getPageTitle(), + 'name' => sprintf('%s_setting_admin', $this->mixInfo->shortName), + 'url' => $this->getPath() . '?reset=1', + // 'icon' => 'crm-i fa-wrench', // None of the other "System Settings" have icons, so we don't. + // 'permission' => ['administer CiviCRM', $this->getPerm()], + 'permission' => "administer CiviCRM,{$this->getPerm()}", + 'permission_operator' => 'OR', + ]; + } + +} + +class Nav { + + /** + * Visit all items in the nav-tree. + * + * @param array $items + * @param callable $callback + * function(array &$item): mixed + * To short-circuit execution, the callback should return a non-null value. + * @return string|null + * Return NULL by default. If the walk was short-circuited, then return that value. + */ + public static function walk(&$items, callable $callback) { + foreach ($items as &$item) { + $result = $callback($item); + if ($result !== NULL) { + return $result; + } + if (!empty($item['child'])) { + $result = static::walk($item['child'], $callback); + if ($result !== NULL) { + return $result; + } + } + } + return NULL; + } + +} + +/** + * @param \CRM_Extension_MixInfo $mixInfo + * @param \CRM_Extension_BootCache $bootCache + */ +return function ($mixInfo, $bootCache) { + + // Register the setting page ("civicrm/admin/setting/{myext}"). + Civi::dispatcher()->addListener('&hook_civicrm_alterMenu', function (array &$items) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $about = About::instance($mixInfo); + if (!isset($items[$about->getPath()])) { + $items[$about->getPath()] = $about->getRoute(); + } + }, -1000); + + // Define a permission "administer {myext}" + Civi::dispatcher()->addListener('&hook_civicrm_permission', function (array &$permissions) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $about = About::instance($mixInfo); + $perm = 'administer ' . $mixInfo->shortName; + if (!isset($permissions[$perm])) { + $permissions[$perm] = ts('%1: Administer settings', [1 => $about->getLabel()]); + } + }, -1000); + + // Any settings with "group=={myext}" should be added to our setting page (unless overridden). + // By default, 'weight' is based on the order-of-declaration (spaced out with increments of 10). + Civi::dispatcher()->addListener('&hook_civicrm_alterSettingsMetaData', function(array &$settingsMetaData) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $weight = 1000; + $weightInterval = 10; + + foreach ($settingsMetaData as &$setting) { + if (($setting['group'] ?? '') === $mixInfo->shortName) { + if (!array_key_exists('settings_pages', $setting)) { + $setting['settings_pages'][$mixInfo->shortName] = [ + 'weight' => $weight, + ]; + $weight += $weightInterval; + } + } + } + }, -1000); + + // Add navigation-item ('civicrm/admin/setting/{myext}') unless you've already done so. + Civi::dispatcher()->addListener('&hook_civicrm_navigationMenu', function (&$menu) use ($mixInfo) { + if (!$mixInfo->isActive()) { + return; + } + + $about = About::instance($mixInfo); + $newItem = $about->getNavigation() + ['active' => 1]; + + // Skip if we're already in the menu. (Ignore optional suffix `?reset=1`) + $found = Nav::walk($menu, function(&$item) use ($about) { + if (!isset($item['attributes']['url'])) { + return NULL; + } + return strpos($item['attributes']['url'], $about->getPath()) === 0 ? 'found' : NULL; + }); + if ($found) { + return; + } + + Nav::walk($menu, function(&$item) use ($newItem) { + if ($item['attributes']['name'] === 'System Settings') { + $item['child'][] = ['attributes' => $newItem]; + return 'done'; + } + }); + }, -1000); + +}; diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md index 8cf541b3bc90bb301a81e74b1a6426d7ef3a6df3..4403e7ec6c65e49239e1c9e03d39c0186259d274 100644 --- a/civicrm/release-notes.md +++ b/civicrm/release-notes.md @@ -15,32 +15,16 @@ Other resources for identifying changes are: * https://github.com/civicrm/civicrm-joomla * https://github.com/civicrm/civicrm-wordpress -## CiviCRM 5.67.3 +## CiviCRM 5.68.0 -Released November 30, 2023 +Released December 6, 2023 -- **[Synopsis](release-notes/5.67.3.md#synopsis)** -- **[Bugs resolved](release-notes/5.67.3.md#bugs)** -- **[Credits](release-notes/5.67.3.md#credits)** -- **[Feedback](release-notes/5.67.3.md#feedback)** - -## CiviCRM 5.67.2 - -Released November 28, 2023 - -- **[Synopsis](release-notes/5.67.2.md#synopsis)** -- **[Bugs resolved](release-notes/5.67.2.md#bugs)** -- **[Credits](release-notes/5.67.2.md#credits)** -- **[Feedback](release-notes/5.67.2.md#feedback)** - -## CiviCRM 5.67.1 - -Released November 15, 2023 - -- **[Synopsis](release-notes/5.67.1.md#synopsis)** -- **[Bugs resolved](release-notes/5.67.1.md#bugs)** -- **[Credits](release-notes/5.67.1.md#credits)** -- **[Feedback](release-notes/5.67.1.md#feedback)** +- **[Synopsis](release-notes/5.68.0.md#synopsis)** +- **[Features](release-notes/5.68.0.md#features)** +- **[Bugs resolved](release-notes/5.68.0.md#bugs)** +- **[Miscellany](release-notes/5.68.0.md#misc)** +- **[Credits](release-notes/5.68.0.md#credits)** +- **[Feedback](release-notes/5.68.0.md#feedback)** ## CiviCRM 5.67.0 diff --git a/civicrm/release-notes/5.67.0.md b/civicrm/release-notes/5.67.0.md index 2bfa4124add1c3ac7e3fe0496cbf3d2a25271124..afc2705a7523384a0d7489d36ed2d7ea8ea042fc 100644 --- a/civicrm/release-notes/5.67.0.md +++ b/civicrm/release-notes/5.67.0.md @@ -126,9 +126,8 @@ Released November 1, 2023 - **[PHP 8.1] Registered Templates: Undefined array key "weight" ([dev/core#4716](https://lab.civicrm.org/dev/core/-/issues/4716): - [27939](https://github.com/civicrm/civicrm-core/pull/27939), - [27949](https://github.com/civicrm/civicrm-core/pull/27949), and - [27983](https://github.com/civicrm/civicrm-core/pull/27983))** + [27939](https://github.com/civicrm/civicrm-core/pull/27939) and + [27949](https://github.com/civicrm/civicrm-core/pull/27949))** The action links (e.g. edit, preview, etc.) on price fields, duplicate matching rules, and report templates now have weights assigned in code, @@ -694,9 +693,6 @@ Released November 1, 2023 - **Fix last notices on Online event registration by removing variables ([27489](https://github.com/civicrm/civicrm-core/pull/27489))** -- **(RC Regression) Fix extraneous price-set validation on participant form - ([27965](https://github.com/civicrm/civicrm-core/pull/27965))** - ### CiviGrant - **CiviGrant - Cleanup and simplify grant form, remove unused tab code @@ -980,9 +976,6 @@ Released November 1, 2023 - **PHPStorm - Add PHPSTORM_META about test functions ([27663](https://github.com/civicrm/civicrm-core/pull/27663))** -- **Logging - Prevent new warnings on PHP 8.1.25+ - ([dev/core#4739](https://lab.civicrm.org/dev/core/-/issues/4739): [27981](https://github.com/civicrm/civicrm-core/pull/27981))** - ## <a name="credits"></a>Credits This release was developed by the following code authors: diff --git a/civicrm/release-notes/5.67.1.md b/civicrm/release-notes/5.67.1.md deleted file mode 100644 index 108d92f9f34e93cdcb73c5a096289c6873965906..0000000000000000000000000000000000000000 --- a/civicrm/release-notes/5.67.1.md +++ /dev/null @@ -1,48 +0,0 @@ -# CiviCRM 5.67.1 - -Released November 15, 2023 - -- **[Synopsis](#synopsis)** -- **[Bugs resolved](#bugs)** -- **[Credits](#credits)** -- **[Feedback](#feedback)** - -## <a name="synopsis"></a>Synopsis - -| *Does this version...?* | | -| --------------------------------------------------------------- | -------- | -| Change the database schema? | no | -| **Alter the API?** | **yes** | -| Require attention to configuration options? | no | -| Fix problems installing or upgrading to a previous version? | no | -| Introduce features? | no | -| **Fix bugs?** | **yes** | -| Fix security vulnerabilities? | no | - -## <a name="bugs"></a>Bugs resolved - -* **_APIv3_: Call to "civicrm_api3_create_error" may fail within some Scheduled Jobs ([dev/core#4751](https://lab.civicrm.org/dev/core/-/issues/4751): [#28079](https://github.com/civicrm/civicrm-core/pull/28079))** -* **_APIv4_: Fix filter by "tags" on Contact-related pseudo-entities ("Individual", etc) ([#28103](https://github.com/civicrm/civicrm-core/pull/28103))** -* **_CiviEvent_: Fix validation of checksum on self-service transfers ([dev/core#4768](https://lab.civicrm.org/dev/core/-/issues/4768): [#28128](https://github.com/civicrm/civicrm-core/pull/28128))** -* **_PHP 8_: Fix "TypeError" when using ckeditor4 and other (less common) entry-points ([#27996](https://github.com/civicrm/civicrm-core/pull/27996))** -* **_Quick Search_: Fix redirect to "Advanced Search" (with pre-populated criteria) ([dev/core#4624](https://lab.civicrm.org/dev/core/-/issues/4624): [#28072](https://github.com/civicrm/civicrm-core/pull/28072))** -* **_Quick Search_: Fix support for setting "Autocomplete Contact Search" ([dev/core#4759](https://lab.civicrm.org/dev/core/-/issues/4759): [#28121](https://github.com/civicrm/civicrm-core/pull/28121))** -* **_Search Kit_: Fix error affecting queries with `IN` operator ([dev/core#4773](https://lab.civicrm.org/dev/core/-/issues/4773): [#28124](https://github.com/civicrm/civicrm-core/pull/28124))** -* **_Search Kit_: Fix crash when handling certain entities (ECK) ([#27993](https://github.com/civicrm/civicrm-core/pull/27993))** -* **_Deprecations_: Tweak text of recent notice about old Angular settings ([#28040](https://github.com/civicrm/civicrm-core/pull/28040))** -* **_Deprecations_: Fix new warnings about hyperlink weights in CiviMail ([#28085](https://github.com/civicrm/civicrm-core/pull/28085))** - -## <a name="credits"></a>Credits - -This release was developed by the following authors and reviewers: - -Wikimedia Foundation - Eileen McNaughton; Megaphone Technology Consulting - Jon Goldberg; -JMA Consulting - Seamus Lee; Francesc Bassas i Bullich; Dave D; Coop SymbioTIC - Mathieu -Lutfy; CiviCRM - Tim Otten, Coleman Watts; chriscant; angusfretwell; AGH Strategies - -Alice Frumin - -## <a name="feedback"></a>Feedback - -These release notes are edited by Tim Otten and Andie Hunt. If you'd like to -provide feedback on them, please login to https://chat.civicrm.org/civicrm and -contact `@agh1`. diff --git a/civicrm/release-notes/5.67.2.md b/civicrm/release-notes/5.67.2.md deleted file mode 100644 index 8e4e81b5d0ca040544937e179bb21aa99982d894..0000000000000000000000000000000000000000 --- a/civicrm/release-notes/5.67.2.md +++ /dev/null @@ -1,45 +0,0 @@ -# CiviCRM 5.67.2 - -Released November 28, 2023 - -- **[Synopsis](#synopsis)** -- **[Bugs resolved](#bugs)** -- **[Credits](#credits)** -- **[Feedback](#feedback)** - -## <a name="synopsis"></a>Synopsis - -| *Does this version...?* | | -| --------------------------------------------------------------- | -------- | -| Change the database schema? | no | -| Alter the API? | no | -| Require attention to configuration options? | no | -| Fix problems installing or upgrading to a previous version? | no | -| Introduce features? | no | -| **Fix bugs?** | **yes** | -| Fix security vulnerabilities? | no | - -## <a name="bugs"></a>Bugs resolved - -* **_CiviContribute_: Field "Contribution date" does not appear in "Edit" mode ([dev/financial#221](https://lab.civicrm.org/dev/financial/-/issues/221): [#28243](https://github.com/civicrm/civicrm-core/pull/28243))** -* **_CiviContribute_: With "Admin UI" extension, some actions don't work ([#28189](https://github.com/civicrm/civicrm-core/pull/28189))** -* **_CiviEvent_: Registration screen with multiple profiles does not display correctly ([dev/core#4766](https://lab.civicrm.org/dev/core/-/issues/4766): [#28246](https://github.com/civicrm/civicrm-core/pull/28246))** -* **_CiviMail_: Improper bounce-messages should fail gracefully ([dev/core#4780](https://lab.civicrm.org/dev/core/-/issues/4780): [#28192](https://github.com/civicrm/civicrm-core/pull/28192))** -* **_Custom Fields_: Certain custom fields do not display correctly ([dev/core#4799](https://lab.civicrm.org/dev/core/-/issues/4799): [#28283](https://github.com/civicrm/civicrm-core/pull/28283))** -* **_Import (et al)_: Fix new and extraneous notice for certain users ([#28325](https://github.com/civicrm/civicrm-core/pull/28325))** -* **_Inbound Mail_: Fix new (but inconsistent) metadata ([#28244](https://github.com/civicrm/civicrm-core/pull/28244))** -* **_Search Kit_: Fix missing label for `GROUP_CONCAT` function ([#28187](https://github.com/civicrm/civicrm-core/pull/28187))** - -## <a name="credits"></a>Credits - -This release was developed by the following authors and reviewers: - -Wikimedia Foundation - Eileen McNaughton; Squiffle Consulting - Aidan Saunders; Megaphone -Technology Consulting - Brienne Kordis; Lighthouse Consulting and Design - Brian -Shaughnessy; Dave D; CiviCRM - Coleman Watts; Agileware - Justin Freeman - -## <a name="feedback"></a>Feedback - -These release notes are edited by Tim Otten and Andie Hunt. If you'd like to -provide feedback on them, please login to https://chat.civicrm.org/civicrm and -contact `@agh1`. diff --git a/civicrm/release-notes/5.67.3.md b/civicrm/release-notes/5.67.3.md deleted file mode 100644 index 1678843f3fec29771f807c76f2a2c0b57bc8a4fd..0000000000000000000000000000000000000000 --- a/civicrm/release-notes/5.67.3.md +++ /dev/null @@ -1,43 +0,0 @@ -# CiviCRM 5.67.3 - -Released November 30, 2023 - -- **[Synopsis](#synopsis)** -- **[Bugs resolved](#bugs)** -- **[Credits](#credits)** -- **[Feedback](#feedback)** - -## <a name="synopsis"></a>Synopsis - -| *Does this version...?* | | -| --------------------------------------------------------------- | -------- | -| Change the database schema? | no | -| Alter the API? | no | -| Require attention to configuration options? | no | -| Fix problems installing or upgrading to a previous version? | no | -| Introduce features? | no | -| **Fix bugs?** | **yes** | -| Fix security vulnerabilities? | no | - -## <a name="bugs"></a>Bugs resolved - -* **_CiviMail_: Fix processing of inbound messages (bounces, unsubscribes, etc) ([dev/core#4775](https://lab.civicrm.org/dev/core/-/issues/4775), [dev/core#4816](https://lab.civicrm.org/dev/core/-/issues/4816): [#28355](https://github.com/civicrm/civicrm-core/pull/28355))** - - For mailings sent with 5.67.0-5.67.2, inbound messages may be incorrectly ignored. After upgrading to 5.67.3+, you may reprocess messages: - - * Login to your mail server. - * Move recent messages from the "Ignored" folder to the regular "Inbox" folder. - * Allow scheduled jobs to rerun. - -## <a name="credits"></a>Credits - -This release was developed by the following authors and reviewers: - -Wikimedia Foundation - Eileen McNaughton; Korlon - Stuart Gaston; Digitalcourage - Detlev -Sieber; CiviCRM - Tim Otten; CiviCoop - Jaap Jansma; Agileware - Justin Freeman - -## <a name="feedback"></a>Feedback - -These release notes are edited by Tim Otten and Andie Hunt. If you'd like to -provide feedback on them, please login to https://chat.civicrm.org/civicrm and -contact `@agh1`. diff --git a/civicrm/release-notes/5.68.0.md b/civicrm/release-notes/5.68.0.md new file mode 100644 index 0000000000000000000000000000000000000000..6f3da914601653afaa14bc468eb46e0f1f63a526 --- /dev/null +++ b/civicrm/release-notes/5.68.0.md @@ -0,0 +1,907 @@ +# CiviCRM 5.68.0 + +Released December 6, 2023 + +- **[Synopsis](#synopsis)** +- **[Security advisories](#security)** +- **[Features](#features)** +- **[Bugs resolved](#bugs)** +- **[Miscellany](#misc)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +|:--------------------------------------------------------------- |:-------:| +| Fix security vulnerabilities? | no | +| **Change the database schema?** | **yes** | +| **Alter the API?** | **yes** | +| **Require attention to configuration options?** | **yes** | +| Fix problems installing or upgrading to a previous version? | no | +| **Introduce features?** | **yes** | +| **Fix bugs?** | **yes** | + + +## <a name="features"></a>Features + +### Core CiviCRM + +- **Allow blank message templates + ([27806](https://github.com/civicrm/civicrm-core/pull/27806))** + + Makes it so one can have empty message templates. + +- **Blank out the text version of the offline receipt template + ([27733](https://github.com/civicrm/civicrm-core/pull/27733) and + [27739](https://github.com/civicrm/civicrm-core/pull/27739))** + + Discontinues the text version of the offline event receipt. Instead of having + the end user enter an html and text version of the same email, the text + version is now autogenerated based on the html version. Adds a upgrade message + to warn the end user about this change. + +- **Add custom field type Hidden + ([27235](https://github.com/civicrm/civicrm-core/pull/27235))** + + Adds a "hidden" custom field type which can collect data on forms without + being seen (e.g. by storing a value from the url or set by javascript) + +- **QuickSearch - Add Current Employer option + ([27766](https://github.com/civicrm/civicrm-core/pull/27766))** + + Adds a "Current Employer" search option to QuickSearch. + +- **Feature request: New contact buttons on the API 4 autocomplete widget + ([dev/core#4484](https://lab.civicrm.org/dev/core/-/issues/4484): + [27754](https://github.com/civicrm/civicrm-core/pull/27754))** + + Adds the option to include create contact functionality when configuring an + APIv4 autocomplete widget. + +- **Allow to specify API4 job entity in Edit Job form + ([27849](https://github.com/civicrm/civicrm-core/pull/27849))** + + Changes the edit scheduled job form entity field from a magic field to a text + field. + +- **🔡 SearchKit, add case-sensitive pattern matching search operators using + REGEXP BINARY and NOT REGEXP BINARY + ([27511](https://github.com/civicrm/civicrm-core/pull/27511))** + + Makes it so one can use case-sensitive pattern matching search operators in + SearchKit using REGEXP BINARY and NOT REGEXP BINARY. + +- **SearchKit - Optionally remember filter values when user revisits search + ([27737](https://github.com/civicrm/civicrm-core/pull/27737))** + + Adds a "Remember Filters" SearchKit administrator setting which when checked + saves end user filter values. + +- **SearchKit - Increase date range for in-place edit + ([27935](https://github.com/civicrm/civicrm-core/pull/27935))** + + Increases min/max datepicker limits in SearchKit. + +- **Expose URL for mailing trackable link for filters in FormBuilder + ([27723](https://github.com/civicrm/civicrm-core/pull/27723))** + + Improves FormBuilder by exposing the mailing trackable link url. + +- **ManagedEntity - Replicate multi-domain entities when multisite is enabled + ([27876](https://github.com/civicrm/civicrm-core/pull/27876))** + + Makes it easier to add menu items from extensions (multisite or not). + +- **Setting Admin - Add mixin to autogenerate a settings form + ([27569](https://github.com/civicrm/civicrm-core/pull/27569))** + + Makes it easier for extension developers to add a settings form to an + extension. + +- **Update civicrm_state_province.tpl + ([27784](https://github.com/civicrm/civicrm-core/pull/27784) and + [27799](https://github.com/civicrm/civicrm-core/pull/27799))** + + Updates Norwegian provinces. + +- **Add translation tags + ([27767](https://github.com/civicrm/civicrm-core/pull/27767))** + + Adds translation tags to MessageTemplate. + +- **Tags - Add label field, enable tags as Managed Entities + ([27752](https://github.com/civicrm/civicrm-core/pull/27752))** + + Adds a label field to the tag entity. + +- **demo data needs updating for tag changes + ([dev/core#4710](https://lab.civicrm.org/dev/core/-/issues/4710): + [27866](https://github.com/civicrm/civicrm-core/pull/27866))** + + Updates tag demo data to have labels. + +- **Basic/Advanced search and CiviReport filters showing `name` in tag dropdown + instead of `label` + ([dev/core#4727](https://lab.civicrm.org/dev/core/-/issues/4727): + [27924](https://github.com/civicrm/civicrm-core/pull/27924))** + + Ensures search and report filters show tag label instead of name. + +- **Add user_dashboard core extension (alpha) + ([27792](https://github.com/civicrm/civicrm-core/pull/27792))** + + Adds a `user dashboard` extension. If you enable the new "User Dashboard" + extension, `civicrm/user` gives you an Afform of configurable Search Displays. + +- **Civi-Import change the description + ([dev/core#4714](https://lab.civicrm.org/dev/core/-/issues/4714): + [27933](https://github.com/civicrm/civicrm-core/pull/27933))** + + Improves wording of the CiviImport extension description. + +### CiviEvent + +- **Add event.self_cancel_xfer tokens + ([27785](https://github.com/civicrm/civicrm-core/pull/27785))** + + Makes `{event.allow_selfcancelxfer}` token available (can be used as + `{event.allow_selfcancelxfer|boolean}`. + +- **SearchKit - Add Event.remaining_participants calculated field + ([27839](https://github.com/civicrm/civicrm-core/pull/27839))** + + Adds calculated field `Event.remaining_participants` to SearchKit. + +### CiviMail + +- **CiviMail - Speed up generation of VERP URLs + ([27652](https://github.com/civicrm/civicrm-core/pull/27652))** + + Performance improvement when generating VERP urls. + +### CiviPetition + +- **Add label & color to CiviPetition 'Unconfirmed' tag + ([27979](https://github.com/civicrm/civicrm-core/pull/27979))** + + Adds translation and color to CiviPetition 'Unconfirmed' tag. + +- **CRM_Campaign_BAO_Petition::confirmSignature: call pre/post hooks + ([27978](https://github.com/civicrm/civicrm-core/pull/27978))** + + Makes it so extension developers can hook into the `confirmSignature` process. + +### Joomla Integration + +- **Remove sidebar (at least for Joomla 4) + ([dev/joomla#45](https://lab.civicrm.org/dev/joomla/-/issues/45): + [27252](https://github.com/civicrm/civicrm-core/pull/27252))** + + Makes the Joomla sidebar default to closed. + +## <a name="bugs"></a>Bugs resolved + +### Core CiviCRM + +- **Number field input validation does not respect decimal separator setting + ([dev/core#4154](https://lab.civicrm.org/dev/core/-/issues/4154): + [28371](https://github.com/civicrm/civicrm-core/pull/28371), + [27958](https://github.com/civicrm/civicrm-core/pull/27958) and + [27917](https://github.com/civicrm/civicrm-core/pull/27917))** + + Fixes locale-formatted number custom field inputs. + +- **Afform: Adding forms to menu is not compatible with Customize Navigation + Menu (Work Towards + [dev/core#4364](https://lab.civicrm.org/dev/core/-/issues/4364): + [27832](https://github.com/civicrm/civicrm-core/pull/27832) and + [27814](https://github.com/civicrm/civicrm-core/pull/27814))** + + Ensure navigation menu weights don't reset weights when updating a managed + entity. + +- **SearchKit - Fix Search Segments for contact type entities + ([28396](https://github.com/civicrm/civicrm-core/pull/28396))** + +- **SearchKit - Fix toolbar display when not using pager + ([28409](https://github.com/civicrm/civicrm-core/pull/28409))** + +- **Searchkit column styles and icons not working properly with all conditionals + for custom fields + ([dev/core#4638](https://lab.civicrm.org/dev/core/-/issues/4638): + [27863](https://github.com/civicrm/civicrm-core/pull/27863))** + +- **Custom Field display code assumes option values are numeric + ([dev/core#4709](https://lab.civicrm.org/dev/core/-/issues/4709): + [27865](https://github.com/civicrm/civicrm-core/pull/27865))** + +- **Menu missing - error in console + ([dev/core#4729](https://lab.civicrm.org/dev/core/-/issues/4729): + [27921](https://github.com/civicrm/civicrm-core/pull/27921))and + [dev/core#4778](https://lab.civicrm.org/dev/core/-/issues/4778): + [28153](https://github.com/civicrm/civicrm-core/pull/28153))** + +- **SearchKit/Form Builder: re-positioning menu links column in table display + breaks csv download + ([dev/core#4731](https://lab.civicrm.org/dev/core/-/issues/4731): + [27943](https://github.com/civicrm/civicrm-core/pull/27943))** + +- **New individual popup to create one on-the-fly is popping up the cms user + account creation form not the usual profile popup + ([dev/core#4736](https://lab.civicrm.org/dev/core/-/issues/4736): + [27960](https://github.com/civicrm/civicrm-core/pull/27960))** + +- **Activity.getFields crashes + ([dev/core#4737](https://lab.civicrm.org/dev/core/-/issues/4737): + [27966](https://github.com/civicrm/civicrm-core/pull/27966))** + + APIv4 getFields crashes with no tags. + +- **Ability to assign a tagset tag to a contact has gone missing if label is + different from name + ([dev/core#4740](https://lab.civicrm.org/dev/core/-/issues/4740): + [28145](https://github.com/civicrm/civicrm-core/pull/28145))** + +- **Activity type label has gone missing when editing case activity + ([dev/core#4755](https://lab.civicrm.org/dev/core/-/issues/4755): + [28036](https://github.com/civicrm/civicrm-core/pull/28036))** + +- **Search Preferences -> Autocomplete Contact Search selections not respected + ([dev/core#4759](https://lab.civicrm.org/dev/core/-/issues/4759): + [28121](https://github.com/civicrm/civicrm-core/pull/28121))** + + Ensures "Autocomplete Contact Search" preferences are respected in menubar + quicksearch. + +- **ACL revamp causes crashes on many SearchKit queries in 5.67 + ([dev/core#4773](https://lab.civicrm.org/dev/core/-/issues/4773): + [28124](https://github.com/civicrm/civicrm-core/pull/28124))** + +- **SearchKit - Fix field transformation UI to handle number 0 + ([28018](https://github.com/civicrm/civicrm-core/pull/28018))** + +- **SearchKit - Fix missing label on group concat distinct dropdown + ([28187](https://github.com/civicrm/civicrm-core/pull/28187))** + +- **APIv4 - Prevent fatal errors when getOptions returns an empty array + ([27793](https://github.com/civicrm/civicrm-core/pull/27793))** + +- **APIv4 - Allow is_active field to default to '0' + ([27853](https://github.com/civicrm/civicrm-core/pull/27853))** + +- **APIv4 - Fix index interfering with HAVING + ([28137](https://github.com/civicrm/civicrm-core/pull/28137))** + +- **APIv4 - Fix missing tag filer on Individual,Organization,Household + ([28103](https://github.com/civicrm/civicrm-core/pull/28103))** + +- **APIv4 - Ensure 'search_fields' defaults to 'label_field' for Entity.get + ([27993](https://github.com/civicrm/civicrm-core/pull/27993))** + +- **APIv4 - Smarter matching params in Managed export action + ([27942](https://github.com/civicrm/civicrm-core/pull/27942))** + + Does a better job of setting the match param when exporting managed + entities. + +- **Afform - Remove redundant status checks + ([27927](https://github.com/civicrm/civicrm-core/pull/27927))** + +- **Afform - Improve error handling during form submission + ([27899](https://github.com/civicrm/civicrm-core/pull/27899))** + +- **Afform - Add default values to metadata + ([27861](https://github.com/civicrm/civicrm-core/pull/27861))** + +- **Update the parameters passed to the hook_QueueTaskError + ([28130](https://github.com/civicrm/civicrm-core/pull/28130))** + +- **Ensure api/v3/utils.php required before civicrm_api3_create_error 5.68 + ([28079](https://github.com/civicrm/civicrm-core/pull/28079))** + +- **Releaser - Only update core extensions for stable versions + ([27922](https://github.com/civicrm/civicrm-core/pull/27922))** + +- **Improve template handling in report + ([27912](https://github.com/civicrm/civicrm-core/pull/27912))** + + xss bug fix. + +- **CustomGroup - Allow increasing max_multiple + ([27916](https://github.com/civicrm/civicrm-core/pull/27916))** + + Fixes a bug in the CustomGroup form code that wouldn't allow max_mutliple to + be increased for multi-record custom groups. + +- **Switch templates to use correctly named variable + ([27498](https://github.com/civicrm/civicrm-core/pull/27498))** + +- **CRM_Core_DAO::copyValues() deduplicate pseudo-constant fields + ([27762](https://github.com/civicrm/civicrm-core/pull/27762))** + +- **Use purify over escape for price set fields + ([27938](https://github.com/civicrm/civicrm-core/pull/27938))** + +- **Tweak money/numeric error messages to not mention point (could be a comma) + ([27881](https://github.com/civicrm/civicrm-core/pull/27881))** + +- **Remove discussion about format from html box on email form + ([27734](https://github.com/civicrm/civicrm-core/pull/27734))** + +- **CRM_Core_BAO_Domain - Deprecate unused functions + ([27875](https://github.com/civicrm/civicrm-core/pull/27875))** + +- **SearchUI - Move 'Experimental' menu from top level to underneath 'Search' + ([27871](https://github.com/civicrm/civicrm-core/pull/27871))** + +- **Make civicrm_acl.is_active required and default=1 + ([27846](https://github.com/civicrm/civicrm-core/pull/27846))** + +- **ManagedEntities - Recreate deleted records at discretion of update policy + ([27844](https://github.com/civicrm/civicrm-core/pull/27844))** + +- **Remove es6 polyfill + ([27648](https://github.com/civicrm/civicrm-core/pull/27648))** + +- **Move assigning customGroup to offline participant template out of the form + layer ([27596](https://github.com/civicrm/civicrm-core/pull/27596))** + +- **Searchdisplay issue with contact join activity and _ on the end of custom + field ([27666](https://github.com/civicrm/civicrm-core/pull/27666))** + +- **Email attachments with unicode filename get munged + ([dev/core#4700](https://lab.civicrm.org/dev/core/-/issues/4700): + [27791](https://github.com/civicrm/civicrm-core/pull/27791))** + +- **Update smarty localize for Smarty3 + ([27776](https://github.com/civicrm/civicrm-core/pull/27776))** + +- **Trim text emails when checking if empty + ([27738](https://github.com/civicrm/civicrm-core/pull/27738))** + +- **Clarify access of `buildComponentForm` + ([27845](https://github.com/civicrm/civicrm-core/pull/27845))** + +- **Managed - Minor schema fixes + ([27835](https://github.com/civicrm/civicrm-core/pull/27835))** + +- **Stop weird action override on confirm form + ([27891](https://github.com/civicrm/civicrm-core/pull/27891))** + +- **Suppress pay now on user dashboard if none configured + ([27954](https://github.com/civicrm/civicrm-core/pull/27954))** + +- **Fix use of `$form` for `$this` in previously shared, previously static + function ([27925](https://github.com/civicrm/civicrm-core/pull/27925))** + +- **Schedule Job fails with a fatal error if configured with an absolute date + ([28113](https://github.com/civicrm/civicrm-core/pull/28113))** + +- **standaloneusers: remove property type declarations to make php7.3 compat + ([27992](https://github.com/civicrm/civicrm-core/pull/27992))** + +- **QuickSearch - Fix redirect to adv search with prepopulated criteria + ([28072](https://github.com/civicrm/civicrm-core/pull/28072))** + +- **Fix Smarty3 support & Smarty-any notices in pledge search/dashboard + ([27963](https://github.com/civicrm/civicrm-core/pull/27963))** + +- **Smarty3 & php8.x fixes on New Contact (organization) + ([27951](https://github.com/civicrm/civicrm-core/pull/27951))** + +- **Smarty3 compatibilty with Contribution Amount tab + ([27782](https://github.com/civicrm/civicrm-core/pull/27782))** + +- **Standalone Smarty3 support + ([27778](https://github.com/civicrm/civicrm-core/pull/27778))** + +- **Smarty3 - fix space breaking syntax + ([28002](https://github.com/civicrm/civicrm-core/pull/28002))** + +- **PHP 8.x: fix TypeError in config hook + ([27996](https://github.com/civicrm/civicrm-core/pull/27996))** + +- **Php 8.2 notice fix on soft credit report + ([27887](https://github.com/civicrm/civicrm-core/pull/27887))** + +- **do not show disabled financial types in select for manage events + ([23299](https://github.com/civicrm/civicrm-core/pull/23299))** + +- **Replace smarty.get with assigned snippet_type in tpl + ([27674](https://github.com/civicrm/civicrm-core/pull/27674))** + +- **Minor variable consolidation, reduce notices + ([27901](https://github.com/civicrm/civicrm-core/pull/27901))** + +- **Stop assigning ispricelifetime - used in previously shared usage + ([27890](https://github.com/civicrm/civicrm-core/pull/27890))** + +- **Report notice fix - batch id + ([27885](https://github.com/civicrm/civicrm-core/pull/27885))** + +- **Switch to a token for billingName & address + ([27692](https://github.com/civicrm/civicrm-core/pull/27692))** + +- **Extract addOnBehalfFields, ensure variables always assigned + ([27851](https://github.com/civicrm/civicrm-core/pull/27851))** + +- **Fix tax total not showing on thank you + ([28171](https://github.com/civicrm/civicrm-core/pull/28171))** + +- **Fix notice on New Pledge form + ([27773](https://github.com/civicrm/civicrm-core/pull/27773))** + +- **Message templates not always sent + ([dev/core#4839](https://lab.civicrm.org/dev/core/-/issues/4839): + [28522](https://github.com/civicrm/civicrm-core/pull/28522))** + +- **Fix reference to wrong value + ([28244](https://github.com/civicrm/civicrm-core/pull/28244))** + +- **Sorting of "matching field" dropdown on contact import is messed up for + "related contact info" + ([dev/core#4563](https://lab.civicrm.org/dev/core/-/issues/4563): + [28375](https://github.com/civicrm/civicrm-core/pull/28375))** + +- **Autocomplete-Select options not saving/displaying properly + ([dev/core#4799](https://lab.civicrm.org/dev/core/-/issues/4799): + [28283](https://github.com/civicrm/civicrm-core/pull/28283))** + +- **UserJob - Fix deprecated syntax in addSelectWhereClause + ([28325](https://github.com/civicrm/civicrm-core/pull/28325))** + +- **On Import in Non English Mode do not import field in saved field mapping is + not correctly set as default when re-using import + ([dev/core#4726](https://lab.civicrm.org/dev/core/-/issues/4726): + [28332](https://github.com/civicrm/civicrm-core/pull/28332))** + +- **Fix incoming bounce processing + ([28354](https://github.com/civicrm/civicrm-core/pull/28354))** + +- **Contact ID is no longer available in Advanced Search + ([dev/core#4820](https://lab.civicrm.org/dev/core/-/issues/4820): + [28378](https://github.com/civicrm/civicrm-core/pull/28378))** + +### CiviCase + +- **Regression - CiviCase and CiviCRM 5.67.0 - Unable to load any Activities + ([dev/core#4769](https://lab.civicrm.org/dev/core/-/issues/4769): + [28133](https://github.com/civicrm/civicrm-core/pull/28133))** + +- **Case tagsets showing name not label + ([dev/core#4730](https://lab.civicrm.org/dev/core/-/issues/4730): + [27968](https://github.com/civicrm/civicrm-core/pull/27968))** + +- **Case Activity: use select2 for Medium field + ([27879](https://github.com/civicrm/civicrm-core/pull/27879))** + +### CiviContribute + +- **Contribution fails mid-donation with geocoding, "on behalf of", and no + state/province + ([dev/core#4724](https://lab.civicrm.org/dev/core/-/issues/4724): + [27896](https://github.com/civicrm/civicrm-core/pull/27896))** + +- **Geocoding failures kill contributions + ([dev/core#2929](https://lab.civicrm.org/dev/core/-/issues/2929): + [27897](https://github.com/civicrm/civicrm-core/pull/27897) and + [27977](https://github.com/civicrm/civicrm-core/pull/27977))** + +- **Supporter Profile is a required field + ([dev/core#4488](https://lab.civicrm.org/dev/core/-/issues/4488): + [27059](https://github.com/civicrm/civicrm-core/pull/27059))** + + Ensures when editing contribution pages, if you click on the personal campaign + tab and save (without changes) you get a warning about supporter profile being + required field. + +- **CiviCRM core exception when trying to import contributions + ([dev/core#4554](https://lab.civicrm.org/dev/core/-/issues/4554): + [28051](https://github.com/civicrm/civicrm-core/pull/28051))** + +- **Clone/ copy contribution page doesn't work when admin UI is enabled + ([dev/core#4783](https://lab.civicrm.org/dev/core/-/issues/4783): + [28189](https://github.com/civicrm/civicrm-core/pull/28189))** + +- **E_WARNING for "file" on civicontribute component settings + ([27969](https://github.com/civicrm/civicrm-core/pull/27969))** + +- **Notice fixes on price field options + ([27984](https://github.com/civicrm/civicrm-core/pull/27984))** + +- **Php8.x fixes on Main online contribution page + ([27836](https://github.com/civicrm/civicrm-core/pull/27836))** + +- **php8.2 fix undeclared properties on backoffice contribution form + ([27829](https://github.com/civicrm/civicrm-core/pull/27829))** + +- **Fix message within exception (PayPalIPN) + ([27759](https://github.com/civicrm/civicrm-core/pull/27759))** + +- **Fix source html displaying when editing price option + ([28090](https://github.com/civicrm/civicrm-core/pull/28090))** + +- **Remove one more ref to undefined property `contributeMode` + ([27884](https://github.com/civicrm/civicrm-core/pull/27884))** + +- **Fix online contribution form Confirm page to get text from processor + ([27848](https://github.com/civicrm/civicrm-core/pull/27848))** + +- **Fix offline contribution page handling of money fields + ([27952](https://github.com/civicrm/civicrm-core/pull/27952))** + +- **Fix recursive display of payment_reminders + ([27774](https://github.com/civicrm/civicrm-core/pull/27774))** + +- **Use api to get price set metadata - Online Contribution Page + ([27902](https://github.com/civicrm/civicrm-core/pull/27902))** + +- **Standardise price field metadata on Main contribution page + ([27889](https://github.com/civicrm/civicrm-core/pull/27889))** + +- **Move financial acl check on Main contribution page to the financial acl + extension ([27797](https://github.com/civicrm/civicrm-core/pull/27797))** + +- **Add ContributionFormTrait + ([27801](https://github.com/civicrm/civicrm-core/pull/27801))** + +- **Add weight to premium config (tab on contribution page edit) + ([28237](https://github.com/civicrm/civicrm-core/pull/28237))** + +- **Contribution date no longer has a time on the form + ([dev/financial#221](https://lab.civicrm.org/dev/financial/-/issues/221): + [28243](https://github.com/civicrm/civicrm-core/pull/28243))** + +### CiviEvent + +- **Event Info displays "registration is closed", but it requires login + ([dev/core#4704](https://lab.civicrm.org/dev/core/-/issues/4704): + [27873](https://github.com/civicrm/civicrm-core/pull/27873))** + + Display 'registration is closed' only if users can register. + +- **Event self-service transfer always gives "You do not have sufficient + permission"([dev/core#4768](https://lab.civicrm.org/dev/core/-/issues/4768): + [28128](https://github.com/civicrm/civicrm-core/pull/28128))** + +- **PHP8.2 undefined property fix event summary report + ([27888](https://github.com/civicrm/civicrm-core/pull/27888))** + +- **Add check for deprecated token in event online receipt + ([28029](https://github.com/civicrm/civicrm-core/pull/28029))** + +- **Move participant-form-specific defaults back to participant form + ([27613](https://github.com/civicrm/civicrm-core/pull/27613))** + +- **Switch all participant token listing to TokenProcessor, add deprecation + ([27543](https://github.com/civicrm/civicrm-core/pull/27543))** + +- **event title xss fix + ([27911](https://github.com/civicrm/civicrm-core/pull/27911))** + +- **Participant - Translate untranslated string + ([27837](https://github.com/civicrm/civicrm-core/pull/27837))** + +- **Fix notice (smarty) in Event fee tab + ([27743](https://github.com/civicrm/civicrm-core/pull/27743))** + +- **Multiple Profiles on an Event registration display incorrectly + ([dev/core#4766](https://lab.civicrm.org/dev/core/-/issues/4766): + [28246](https://github.com/civicrm/civicrm-core/pull/28246))** + +- **Copy event fails with DB Error: already exists; Saving new reminder hangs + ([dev/core#4761](https://lab.civicrm.org/dev/core/-/issues/4761): + [28352](https://github.com/civicrm/civicrm-core/pull/28352))** + +### CiviGrant + +- **Can't view/edit grants + ([dev/core#4828](https://lab.civicrm.org/dev/core/-/issues/4828): + [28437](https://github.com/civicrm/civicrm-core/pull/28437))** + +### CiviMail + +- **when processing bounce emails, don't exit on fatal error if verp unverified + ([dev/core#4780](https://lab.civicrm.org/dev/core/-/issues/4780): + [28192](https://github.com/civicrm/civicrm-core/pull/28192))** + +- **CiviMail - Update path metadata + ([27962](https://github.com/civicrm/civicrm-core/pull/27962))** + +- **Angular - Always load CiviMail modules if component is enabled + ([27857](https://github.com/civicrm/civicrm-core/pull/27857))** + +- **Add weights to CRM_Mailing_BAO_Mailing::getContactMailingSelector + ([28085](https://github.com/civicrm/civicrm-core/pull/28085))** + +### Drupal Integration + +- **Deprecated function: Optional parameter $from declared before required + parameter $element + ([dev/core#4695](https://lab.civicrm.org/dev/core/-/issues/4695): + [675](https://github.com/civicrm/civicrm-drupal/pull/675))** + +- **Fix Deprecated string interpolation issue in civicrm.module + ([674](https://github.com/civicrm/civicrm-drupal/pull/674))** + +## <a name="misc"></a>Miscellany + +- **Tag `getSubmittedValue()` as externally supported + ([27786](https://github.com/civicrm/civicrm-core/pull/27786))** + +- **Extend normal form for delete action + ([27745](https://github.com/civicrm/civicrm-core/pull/27745))** + +- **Core/ext - Update releaseDate when setting new version + ([27914](https://github.com/civicrm/civicrm-core/pull/27914))** + +- **Make function private, non static, after universe search + ([27929](https://github.com/civicrm/civicrm-core/pull/27929))** + +- **Move pledge block function back to the only form that calls it + ([27936](https://github.com/civicrm/civicrm-core/pull/27936))** + +- **karma.conf.js - Switch from PhantomJS to ChromeHeadless + ([27941](https://github.com/civicrm/civicrm-core/pull/27941))** + +- **Move the locale default getting from the money() function to the + getFormatter function + ([27970](https://github.com/civicrm/civicrm-core/pull/27970))** + +- **Provide utility methods for creating an iCal file + ([26980](https://github.com/civicrm/civicrm-core/pull/26980))** + +- **Standardise deprecations + ([27976](https://github.com/civicrm/civicrm-core/pull/27976))** + +- **Afform - Unify 'is_dashlet', 'is_token' & 'contact_summary' as 'placement' + ([27755](https://github.com/civicrm/civicrm-core/pull/27755))** + +- **phpstorm - Generate hints for Civi::paths(), Civi::url(), + CRM_Utils_System::url() + ([27779](https://github.com/civicrm/civicrm-core/pull/27779))** + +- **APIv4 - Add helper function and type hints + ([27864](https://github.com/civicrm/civicrm-core/pull/27864))** + +- **Preliminary cleanup - remove function overrides that do not override + ([27886](https://github.com/civicrm/civicrm-core/pull/27886))** + +- **Stop passing variable no longer in signature + ([27765](https://github.com/civicrm/civicrm-core/pull/27765))** + +- **PHP8.x Stop sharing EventFee::preProcess from Registration form + ([27577](https://github.com/civicrm/civicrm-core/pull/27577))** + +- **Switch from html2text to soundasleep/html2text + ([27694](https://github.com/civicrm/civicrm-core/pull/27694))** + +- **Unshare form function + ([27892](https://github.com/civicrm/civicrm-core/pull/27892))** + +- **delete one more trackingFields reference + ([27726](https://github.com/civicrm/civicrm-core/pull/27726))** + +- **Remove irrelevant code from previously shared form + ([27787](https://github.com/civicrm/civicrm-core/pull/27787))** + +- **Split shared function with mostly unshared code + ([27795](https://github.com/civicrm/civicrm-core/pull/27795))** + +- **Remove non-variable variables from previously-shared code + ([27905](https://github.com/civicrm/civicrm-core/pull/27905))** + +- **Remove unreachable code from previously shared function + ([27906](https://github.com/civicrm/civicrm-core/pull/27906))** + +- **Remove no-longer-used parameters from function signature + ([27831](https://github.com/civicrm/civicrm-core/pull/27831))** + +- **Remove always-true if + ([27919](https://github.com/civicrm/civicrm-core/pull/27919))** + +- **[PHP 8.2] fix undefined property in CRM_Event_Form_SelfSvcUpdate + ([27769](https://github.com/civicrm/civicrm-core/pull/27769))** + +- **CRM_Utils_Array::value - remove "todo" which we don't actually want to do + ([27812](https://github.com/civicrm/civicrm-core/pull/27812))** + +- **Add @deprecated annotation to CRM_Utils_Array::value + ([27959](https://github.com/civicrm/civicrm-core/pull/27959))** + +- **[REF] CRM/Contribute - Refactor unnecessary uses of CRM_Utils_Array::value + ([27820](https://github.com/civicrm/civicrm-core/pull/27820))** + +- **[REF] CRM/Campaign - Refactor unnecessary uses of CRM_Utils_Array::value + ([27822](https://github.com/civicrm/civicrm-core/pull/27822))** + +- **[REF] CRM/Admin - Refactor unnecessary uses of CRM_Utils_Array::value + ([27823](https://github.com/civicrm/civicrm-core/pull/27823))** + +- **[REF] Civi - Refactor unnecessary uses of CRM_Utils_Array::value + ([27895](https://github.com/civicrm/civicrm-core/pull/27895))** + +- **[REF] Apiv3 - Refactor unnecessary uses of CRM_Utils_Array::value + ([27898](https://github.com/civicrm/civicrm-core/pull/27898))** + +- **[REF] CRM/Report - Refactor unnecessary uses of CRM_Utils_Array::value + ([27816](https://github.com/civicrm/civicrm-core/pull/27816))** + +- **[REF] CRM/Event - Refactor unnecessary uses of CRM_Utils_Array::value + ([27821](https://github.com/civicrm/civicrm-core/pull/27821))** + +- **[REF] Flexmailer - Refactor unnecessary use of CRM_Utils_Array::value + ([27828](https://github.com/civicrm/civicrm-core/pull/27828))** + +- **[REF] CRM/Price - Refactor unnecessary uses of CRM_Utils_Array::value + ([27824](https://github.com/civicrm/civicrm-core/pull/27824))** + +- **[REF] CRM/Utils - Refactor unnecessary uses of CRM_Utils_Array::value + ([27819](https://github.com/civicrm/civicrm-core/pull/27819))** + +- **[REF] CRM/Core - Refactor unnecessary uses of CRM_Utils_Array::value + ([27817](https://github.com/civicrm/civicrm-core/pull/27817))** + +- **[REF] CRM/Activity - Refactor unnecessary uses of CRM_Utils_Array::value + ([27825](https://github.com/civicrm/civicrm-core/pull/27825))** + +- **[REF] CRM/Mailing - Refactor unnecessary uses of CRM_Utils_Array::value + ([27826](https://github.com/civicrm/civicrm-core/pull/27826))** + +- **[REF] CRM/Contact - Refactor unnecessary uses of CRM_Utils_Array::value + ([27818](https://github.com/civicrm/civicrm-core/pull/27818))** + +- **[REF] CRM/Misc - Refactor unnecessary uses of CRM_Utils_Array::value + ([27827](https://github.com/civicrm/civicrm-core/pull/27827))** + +- **[REF] Unshared processRecurringContribution + ([27850](https://github.com/civicrm/civicrm-core/pull/27850))** + +- **[REF] ParticipantStatusType - Switch to writeRecord + ([27855](https://github.com/civicrm/civicrm-core/pull/27855))** + +- **[REF] Extract add soft credit fields + ([27847](https://github.com/civicrm/civicrm-core/pull/27847))** + +- **[REF] ManagedEntities - Remove unused function + ([27843](https://github.com/civicrm/civicrm-core/pull/27843))** + +- **[REF] civicrm_admin_ui blocks links from oauth-client + (Work Towards [dev/core#4674](https://lab.civicrm.org/dev/core/-/issues/4674): + [27869](https://github.com/civicrm/civicrm-core/pull/27869))** + +- **[REF] Repeating entity form code cleanup + ([27328](https://github.com/civicrm/civicrm-core/pull/27328))** + +- **[REF] CRM_Core_Pseudoconstant - Cleanup static arrays & functions + ([27840](https://github.com/civicrm/civicrm-core/pull/27840))** + +- **[REF] Remove domain references from managed entities + ([27915](https://github.com/civicrm/civicrm-core/pull/27915))** + +- **[REF] CRM_Event_PseudoConstant - Cleanup redundant caching + ([27838](https://github.com/civicrm/civicrm-core/pull/27838))** + +- **[REF] AngularManager - Skip extra lookups. Document function. + ([27807](https://github.com/civicrm/civicrm-core/pull/27807))** + +- **[REF] AfformScanner - Update code comments & type hints + ([27808](https://github.com/civicrm/civicrm-core/pull/27808))** + +- **[REF] Fix Smarty Notices on Dedupe Rules screen by setting weight + ([27804](https://github.com/civicrm/civicrm-core/pull/27804))** + +- **[REF] testRegexpOperators fails on `max` + ([dev/core#4747](https://lab.civicrm.org/dev/core/-/issues/4747): + [27990](https://github.com/civicrm/civicrm-core/pull/27990))** + +- **[REF] Fix notice error on undefined array key perm + ([27796](https://github.com/civicrm/civicrm-core/pull/27796))** + +- **[REF] Remove getEmailAddress method which cannot work + ([27757](https://github.com/civicrm/civicrm-core/pull/27757))** + +- **[REF][PHP8.2] Replace dynmaic property with variable + ([27756](https://github.com/civicrm/civicrm-core/pull/27756))** + +- **[REF] Fix up Message template gencode to work with Smarty 3 + ([27727](https://github.com/civicrm/civicrm-core/pull/27727))** + +- **[NFC] Docblocks - Remove 'experimental' comments and other copy-edits + ([27802](https://github.com/civicrm/civicrm-core/pull/27802))** + +- **(NFC) MenuXmlTest - Improve debug output. Use richer helpers. + ([28073](https://github.com/civicrm/civicrm-core/pull/28073))** + +- **[NFC] More descriptive deprecation notice for Angular settings + ([28040](https://github.com/civicrm/civicrm-core/pull/28040))** + +- **(NFC) phpunit.xml.dist - Drop stale reference to old suite + ([27859](https://github.com/civicrm/civicrm-core/pull/27859))** + +- **[NFC] Cleanup array syntax in tests directory + ([27809](https://github.com/civicrm/civicrm-core/pull/27809))** + +- **[NFC] Afform - Test cleanup + ([27803](https://github.com/civicrm/civicrm-core/pull/27803))** + +- **[NFC] Make null really null + ([27758](https://github.com/civicrm/civicrm-core/pull/27758))** + +- **[NFC] Remove unused var + ([27751](https://github.com/civicrm/civicrm-core/pull/27751))** + +- **(NFC) setting-admin@1 - Fix the `@since` metadata + ([28170](https://github.com/civicrm/civicrm-core/pull/28170))** + +- **Update the list of required extensions to install during test db populate + ([27961](https://github.com/civicrm/civicrm-core/pull/27961))** + +- **Further fixes to ContributionPageTest + ([27948](https://github.com/civicrm/civicrm-core/pull/27948))** + +- **Smarty3 Clean up test class - remove ref to internal tplParams + ([27775](https://github.com/civicrm/civicrm-core/pull/27775))** + +- **Minor clean up in test class, add initial ContributionFormTrait + ([27947](https://github.com/civicrm/civicrm-core/pull/27947))** + +- **Fix test on secondary membership contribution to use full form flow + ([27928](https://github.com/civicrm/civicrm-core/pull/27928))** + +- **Remove test call to PaypalPro sandbox from tests + ([27953](https://github.com/civicrm/civicrm-core/pull/27953))** + +- **Fix MainTest to test form metadata function, not old unused function + ([27900](https://github.com/civicrm/civicrm-core/pull/27900))** + +- **Declare strict types in CiviUnitTestCase + ([26002](https://github.com/civicrm/civicrm-core/pull/26002))** + +- **Fix Contribution MainTest to set payment processor properties better + ([27893](https://github.com/civicrm/civicrm-core/pull/27893))** + +- **Document and test unique behavior of CRM_Utils_Array::value() + ([27830](https://github.com/civicrm/civicrm-core/pull/27830))** + +- **Move financial acl test to extension + ([27810](https://github.com/civicrm/civicrm-core/pull/27810))** + +- **Stop calling `CRM_Contribute_Form_Contribution::testSubmit()`, quiet + deprecation ([27811](https://github.com/civicrm/civicrm-core/pull/27811))** + +- **Fix Participant form test to correctly test html version + ([27763](https://github.com/civicrm/civicrm-core/pull/27763))** + +## <a name="credits"></a>Credits + +This release was developed by the following code authors: + +AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Artful Robot - Rich +Lott; ASMAC (American Society of Music Arrangers and Composers) - Jeff Kellem; +BrightMinded Ltd - Bradley Taylor; CiviCoop - Jaap Jansma; CiviCRM - Coleman +Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy, +Samuel Vanhove; Dave D; Erik Midtsveen; Freeform Solutions - Herb van den Dool; +Fuzion - Jitendra Purohit; Jens Schuppe; JMA Consulting - Monish Deb, Seamus +Lee; Lemniscus - Noah Miller; Lighthouse Consulting and Design - Brian +Shaughnessy; Luna Design - Andrew Wasson; Megaphone Technology Consulting - Jon +Goldberg; MJW Consulting - Matthew Wire; Nicol Wistreich; PHD Computer +Consultants Ltd - Chris Cant; ranjit-git; Reflexive Communications - Sandor +Semsey; Squiffle Consulting - Aidan Saunders; SYSTOPIA - Johannes Franz; Third +Sector Design - Kurund Jalmi; Wikimedia Foundation - Damilare Adedoyin, Eileen +McNaughton; Wildsight - Lars Sander-Green + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +AGH Strategies - Alice Frumin; ALL IN APPLI admin; Andrew Thompson; Benjamin W; +Davis Media Access - Darrick Servis; Francesc Bassas i Bullich; Fuzion - Peter +Davis; Jens Schuppe; OPEN - dewy; Semper IT - Karin Gerritsen; Third Sector +Design - William Mortada; Tom Rosenbloom; WebmasterBouclier; + +## <a name="feedback"></a>Feedback + +These release notes are edited by Alice Frumin and Andie Hunt. If you'd like +to provide feedback on them, please log in to https://chat.civicrm.org/civicrm +and contact `@agh1`. diff --git a/civicrm/setup/src/Setup/SmartyUtil.php b/civicrm/setup/src/Setup/SmartyUtil.php index ec0e775b52d4c1ad84d2c5a513cb97464f130d55..a076ddb32f155e7b3fd7ced734b2955b88dd4dc2 100644 --- a/civicrm/setup/src/Setup/SmartyUtil.php +++ b/civicrm/setup/src/Setup/SmartyUtil.php @@ -27,7 +27,8 @@ class SmartyUtil { require_once implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'Smarty', 'plugins', 'block.localize.php']); $smarty->register_block('localize', 'smarty_block_localize'); $smarty->assign('gencodeXmlDir', "$srcPath/xml"); - + require_once implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'CodeGen', 'Util', 'MessageTemplates.php']); + \CRM_Core_CodeGen_Util_MessageTemplates::assignSmartyVariables($smarty); return $smarty; } diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql index 866689384bd7917be4e0747b64cbfa82b2a9de2e..31c74fb7dc7441275193cc983355d32dfdb9ef75 100644 --- a/civicrm/sql/civicrm.mysql +++ b/civicrm/sql/civicrm.mysql @@ -238,11 +238,11 @@ ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMA -- *******************************************************/ CREATE TABLE `civicrm_managed` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Surrogate Key', - `module` varchar(127) NOT NULL COMMENT 'Name of the module which declared this object', - `name` varchar(127) COMMENT 'Symbolic name used by the module to identify the object', + `module` varchar(255) NOT NULL COMMENT 'Name of the module which declared this object (soft FK to civicrm_extension.full_name)', + `name` varchar(255) NOT NULL COMMENT 'Symbolic name used by the module to identify the object', `entity_type` varchar(64) NOT NULL COMMENT 'API entity type', - `entity_id` int unsigned NOT NULL COMMENT 'Foreign key to the referenced item.', - `cleanup` varchar(32) COMMENT 'Policy on when to cleanup entity (always, never, unused)', + `entity_id` int unsigned COMMENT 'Soft foreign key to the referenced item.', + `cleanup` varchar(16) NOT NULL DEFAULT 'always' COMMENT 'Policy on when to cleanup entity (always, never, unused)', `entity_modified_date` timestamp NULL DEFAULT NULL COMMENT 'When the managed entity was changed from its original settings.', PRIMARY KEY (`id`), INDEX `UI_managed_module_name`(module, name), @@ -446,7 +446,7 @@ CREATE TABLE `civicrm_acl` ( `object_id` int unsigned COMMENT 'The ID of the object controlled by this ACL entry', `acl_table` varchar(64) COMMENT 'If this is a grant/revoke entry, what table are we granting?', `acl_id` int unsigned COMMENT 'ID of the ACL or ACL group being granted/revoked', - `is_active` tinyint COMMENT 'Is this property active?', + `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?', `priority` int NOT NULL DEFAULT 0, PRIMARY KEY (`id`), INDEX `index_acl_id`(acl_id) @@ -1864,7 +1864,8 @@ ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMA -- *******************************************************/ CREATE TABLE `civicrm_tag` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Tag ID', - `name` varchar(64) NOT NULL COMMENT 'Name of Tag.', + `name` varchar(64) NOT NULL COMMENT 'Unique machine name', + `label` varchar(64) NOT NULL COMMENT 'User-facing tag name', `description` varchar(255) COMMENT 'Optional verbose description of the tag.', `parent_id` int unsigned DEFAULT NULL COMMENT 'Optional parent id for this tag.', `is_selectable` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this tag selectable / displayed', @@ -1873,7 +1874,7 @@ CREATE TABLE `civicrm_tag` ( `used_for` varchar(64) DEFAULT NULL, `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this tag', `color` varchar(255) DEFAULT NULL COMMENT 'Hex color value e.g. #ffffff', - `created_date` datetime COMMENT 'Date and time that tag was created.', + `created_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time that tag was created.', PRIMARY KEY (`id`), UNIQUE INDEX `UI_name`(name), CONSTRAINT FK_civicrm_tag_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_tag`(`id`), @@ -2982,7 +2983,7 @@ CREATE TABLE `civicrm_dashboard_contact` ( `dashboard_id` int unsigned NOT NULL COMMENT 'Dashboard ID', `contact_id` int unsigned NOT NULL COMMENT 'Contact ID', `column_no` int DEFAULT 0 COMMENT 'column no for this widget', - `is_active` tinyint DEFAULT 0 COMMENT 'Is this widget active?', + `is_active` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this widget active?', `weight` int DEFAULT 0 COMMENT 'Ordering of the widgets.', PRIMARY KEY (`id`), UNIQUE INDEX `index_dashboard_id_contact_id`(dashboard_id, contact_id), diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql index 3e45b5714f159ffb5cb1047826bc347efcdf430d..1409daaf07968c37d92eeb8ddeed2cf967948f57 100644 --- a/civicrm/sql/civicrm_data.mysql +++ b/civicrm/sql/civicrm_data.mysql @@ -2665,19 +2665,18 @@ INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES (3947, 1161, "06", "Buskerud"), (3948, 1161, "20", "Finnmark"), (3949, 1161, "04", "Hedmark"), -(3950, 1161, "12", "Hordaland"), (3951, 1161, "15", "Møre og Romsdal"), (3952, 1161, "18", "Nordland"), (3953, 1161, "17", "Nord-Trøndelag"), (3954, 1161, "05", "Oppland"), (3955, 1161, "03", "Oslo"), (3956, 1161, "11", "Rogaland"), -(3957, 1161, "14", "Sogn og Fjordane"), -(3958, 1161, "16", "Sør-Trøndelag"), -(3959, 1161, "06", "Telemark"), -(3960, 1161, "19", "Troms"), -(3961, 1161, "10", "Vest-Agder"), -(3962, 1161, "07", "Vestfold"), +(3957, 1161, "16", "Sør-Trøndelag"), +(3958, 1161, "06", "Telemark"), +(3959, 1161, "19", "Troms"), +(3960, 1161, "10", "Vest-Agder"), +(3961, 1161, "07", "Vestfold"), +(3962, 1161, "46", "Vestland"), (3963, 1161, "01", "Østfold"), (3964, 1161, "22", "Jan Mayen"), (3965, 1161, "21", "Svalbard"), @@ -4712,12 +4711,12 @@ INSERT INTO civicrm_relationship_type (`contact_type_a`,`contact_type_b`,`descri ("Individual","Individual","Immediate workplace supervisor","0","Supervised by","Supervisor","Supervised by","Supervisor") ; -INSERT INTO civicrm_tag (`description`,`name`,`parent_id`,`used_for`) VALUES -("Any not-for-profit organization.","Non-profit",NULL,"civicrm_contact"), -("For-profit organization.","Company",NULL,"civicrm_contact"), -("Any governmental entity.","Government Entity",NULL,"civicrm_contact"), -("High-value supporter of our organization.","Major Donor",NULL,"civicrm_contact"), -("Active volunteers.","Volunteer",NULL,"civicrm_contact") +INSERT INTO civicrm_tag (`color`,`description`,`label`,`name`,`parent_id`,`used_for`) VALUES +("#0bcb21","Any not-for-profit organization.","Non-profit","Non_profit",NULL,"civicrm_contact"), +("#2260c3","For-profit organization.","Company","Company",NULL,"civicrm_contact"), +("#cd4b13","Any governmental entity.","Government Entity","Government_Entity",NULL,"civicrm_contact"), +("#0cdae9","High-value supporter of our organization.","Major Donor","Major_Donor",NULL,"civicrm_contact"), +("#f0dc00","Active volunteers.","Volunteer","Volunteer",NULL,"civicrm_contact") ; INSERT INTO civicrm_mailing_component (`body_html`,`body_text`,`component_type`,`is_active`,`is_default`,`name`,`subject`) VALUES @@ -6913,7 +6912,7 @@ INSERT INTO civicrm_option_value INSERT INTO civicrm_msg_template (msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved) VALUES - + ('Cases - Send Copy of an Activity', '{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject} @@ -7205,7 +7204,7 @@ INSERT INTO civicrm_msg_template </table> </body> </html> -', 'case_activity', @tpl_ovid_case_activity, 0, 1) , +', 'case_activity', @tpl_ovid_case_activity, 0, 1) , ('Contributions - Duplicate Organization Alert', '{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name} @@ -7411,7 +7410,7 @@ INSERT INTO civicrm_msg_template </table> </body> </html> -', 'contribution_dupalert', @tpl_ovid_contribution_dupalert, 0, 1) , +', 'contribution_dupalert', @tpl_ovid_contribution_dupalert, 0, 1) , ('Contributions - Receipt (off-line)', '{ts}Contribution Receipt{/ts} - {contact.display_name} @@ -8281,7 +8280,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_offline_receipt', @tpl_ovid_contribution_offline_receipt, 0, 1) , +', 'contribution_offline_receipt', @tpl_ovid_contribution_offline_receipt, 0, 1) , ('Contributions - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name} @@ -9577,7 +9576,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_online_receipt', @tpl_ovid_contribution_online_receipt, 0, 1) , +', 'contribution_online_receipt', @tpl_ovid_contribution_online_receipt, 0, 1) , ('Contributions - Invoice', '{if $title} @@ -10357,7 +10356,7 @@ INSERT INTO civicrm_msg_template </div> </body> </html> -', 'contribution_invoice_receipt', @tpl_ovid_contribution_invoice_receipt, 0, 1) , +', 'contribution_invoice_receipt', @tpl_ovid_contribution_invoice_receipt, 0, 1) , ('Contributions - Recurring Start and End Notification', '{ts}Recurring Contribution Notification{/ts} - {contact.display_name} @@ -10757,7 +10756,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_recurring_notify', @tpl_ovid_contribution_recurring_notify, 0, 1) , +', 'contribution_recurring_notify', @tpl_ovid_contribution_recurring_notify, 0, 1) , ('Contributions - Recurring Cancellation Notification', '{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name} @@ -10831,7 +10830,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_recurring_cancelled', @tpl_ovid_contribution_recurring_cancelled, 0, 1) , +', 'contribution_recurring_cancelled', @tpl_ovid_contribution_recurring_cancelled, 0, 1) , ('Contributions - Recurring Billing Updates', '{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name} @@ -11009,7 +11008,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_recurring_billing', @tpl_ovid_contribution_recurring_billing, 0, 1) , +', 'contribution_recurring_billing', @tpl_ovid_contribution_recurring_billing, 0, 1) , ('Contributions - Recurring Updates', '{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name} @@ -11099,7 +11098,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'contribution_recurring_edit', @tpl_ovid_contribution_recurring_edit, 0, 1) , +', 'contribution_recurring_edit', @tpl_ovid_contribution_recurring_edit, 0, 1) , ('Personal Campaign Pages - Admin Notification', '{ts}Personal Campaign Page Notification{/ts} - {contact.display_name} @@ -11333,7 +11332,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'pcp_notify', @tpl_ovid_pcp_notify, 0, 1) , +', 'pcp_notify', @tpl_ovid_pcp_notify, 0, 1) , ('Personal Campaign Pages - Supporter Status Change Notification', '{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name} @@ -11539,7 +11538,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'pcp_status_change', @tpl_ovid_pcp_status_change, 0, 1) , +', 'pcp_status_change', @tpl_ovid_pcp_status_change, 0, 1) , ('Personal Campaign Pages - Supporter Welcome', '{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name} @@ -11855,7 +11854,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'pcp_supporter_notify', @tpl_ovid_pcp_supporter_notify, 0, 1) , +', 'pcp_supporter_notify', @tpl_ovid_pcp_supporter_notify, 0, 1) , ('Personal Campaign Pages - Owner Notification', '{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name} @@ -11961,7 +11960,7 @@ INSERT INTO civicrm_msg_template </table> </body> </html> -', 'pcp_owner_notify', @tpl_ovid_pcp_owner_notify, 0, 1) , +', 'pcp_owner_notify', @tpl_ovid_pcp_owner_notify, 0, 1) , ('Additional Payment Receipt or Refund Notification', '{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name} @@ -12691,244 +12690,11 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 0, 1) , +', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 0, 1) , ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name} -', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} -{$event.confirm_email_text} -{/if} - -{if !empty($isOnWaitlist)} -=============================================================================== - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} - -=============================================================================== - -{elseif !empty($isRequireApproval)} -=============================================================================== - -{ts}Your registration has been submitted.{/ts} - -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -=============================================================================== - -{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} - -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - - -=============================================================================== - -{ts}Event Information and Location{/ts} - -=============================================================================== - -{event.title} -{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if} - -{if "{participant.role_id:label}" neq \'Attendee\'} -{ts}Participant Role{/ts}: {participant.role_id:label} -{/if} - -{if !empty($isShowLocation)} -{event.location} -{/if}{*End of isShowLocation condition*} - -{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}} -{ts}Event Contacts:{/ts} - -{if {event.loc_block_id.phone_id.phone|boolean}} -{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.phone_2_id.phone|boolean}} -{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.email_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_id.email} -{/if} -{if {event.loc_block_id.email_2_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if} -{/if} - - -{if {event.is_public|boolean}} -{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar entry for this event.{/ts} {$icalFeed} -{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Add event to Google Calendar{/ts} {$gCalendar} -{/if} - -{if {contact.email_primary.email|boolean}} - -=============================================================================== - -{ts}Registered Email{/ts} - -=============================================================================== - -{contact.email_primary.email} -{/if} -{if {event.is_monetary|boolean}} {* This section for Paid events only.*} - -=============================================================================== - -{event.fee_label} -=============================================================================== - -{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset} - -{if $value neq \'skip\'} -{if {event.is_monetary|boolean}} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ------------------------------------------------------------------------------ - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{if $isShowTax && {contribution.tax_amount|boolean}} -{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture} -{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture} -{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture} -{/if} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:"%10s"}{/if} - -{foreach from=$value item=line} -{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if} -{/foreach} -{/if} -{/foreach} - -{if $isShowTax && {contribution.tax_amount|boolean}} -{if $totalAmount and $totalTaxAmount} -{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency} -{/if} - -{foreach from=$dataArray item=value key=priceset} -{if $priceset || $priceset == 0} -{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{/if} -{/foreach} -{/if} -{/if} - -{if !empty($amount) && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} - -{if {contribution.tax_amount|boolean}} -{ts}Total Tax Amount{/ts}: {contribution.tax_amount} -{/if} -{if {event.is_monetary|boolean}} - -{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{ts}Balance{/ts}: {contribution.balance_amount} -{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{/if} - -{if !empty($pricesetFieldsCount)} - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq \'skip\'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1} - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - -{if {participant.register_date|boolean}} -{ts}Registration Date{/ts}: {participant.register_date} -{/if} -{if {contribution.receive_date|boolean}} -{ts}Transaction Date{/ts}: {contribution.receive_date} -{/if} -{if {contribution.financial_type_id|boolean}} -{ts}Financial Type{/ts}: {contribution.financial_type_id:label} -{/if} -{if {contribution.trxn_id|boolean}} -{ts}Transaction #{/ts}: {contribution.trxn_id} -{/if} -{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}} -{ts}Paid By{/ts}: {contribution.payment_instrument_id:label} -{/if} -{if {contribution.check_number|boolean}} -{ts}Check Number{/ts}: {contribution.check_number} -{/if} -{if !empty($billingName)} - -=============================================================================== - -{ts}Billing Name and Address{/ts} - -=============================================================================== - -{$billingName} -{$address} -{/if} - -{if !empty($credit_card_type)} -=========================================================== -{ts}Credit Card Information{/ts} - -=============================================================================== - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if !empty($customGroup)} -{foreach from=$customGroup item=value key=customName} -============================================================================== - -{$customName} -============================================================================== - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - -', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> @@ -13310,7 +13076,7 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -13318,8 +13084,8 @@ INSERT INTO civicrm_msg_template </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} @@ -13371,240 +13137,7 @@ INSERT INTO civicrm_msg_template </html> ', 'event_offline_receipt', @tpl_ovid_event_offline_receipt, 1, 0), ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name} -', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} -{$event.confirm_email_text} -{/if} - -{if !empty($isOnWaitlist)} -=============================================================================== - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} - -=============================================================================== - -{elseif !empty($isRequireApproval)} -=============================================================================== - -{ts}Your registration has been submitted.{/ts} - -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -=============================================================================== - -{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} - -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - - -=============================================================================== - -{ts}Event Information and Location{/ts} - -=============================================================================== - -{event.title} -{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if} - -{if "{participant.role_id:label}" neq \'Attendee\'} -{ts}Participant Role{/ts}: {participant.role_id:label} -{/if} - -{if !empty($isShowLocation)} -{event.location} -{/if}{*End of isShowLocation condition*} - -{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}} -{ts}Event Contacts:{/ts} - -{if {event.loc_block_id.phone_id.phone|boolean}} -{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.phone_2_id.phone|boolean}} -{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.email_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_id.email} -{/if} -{if {event.loc_block_id.email_2_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if} -{/if} - - -{if {event.is_public|boolean}} -{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar entry for this event.{/ts} {$icalFeed} -{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Add event to Google Calendar{/ts} {$gCalendar} -{/if} - -{if {contact.email_primary.email|boolean}} - -=============================================================================== - -{ts}Registered Email{/ts} - -=============================================================================== - -{contact.email_primary.email} -{/if} -{if {event.is_monetary|boolean}} {* This section for Paid events only.*} - -=============================================================================== - -{event.fee_label} -=============================================================================== - -{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset} - -{if $value neq \'skip\'} -{if {event.is_monetary|boolean}} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ------------------------------------------------------------------------------ - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{if $isShowTax && {contribution.tax_amount|boolean}} -{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture} -{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture} -{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture} -{/if} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:"%10s"}{/if} - -{foreach from=$value item=line} -{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if} -{/foreach} -{/if} -{/foreach} - -{if $isShowTax && {contribution.tax_amount|boolean}} -{if $totalAmount and $totalTaxAmount} -{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency} -{/if} - -{foreach from=$dataArray item=value key=priceset} -{if $priceset || $priceset == 0} -{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{/if} -{/foreach} -{/if} -{/if} - -{if !empty($amount) && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} - -{if {contribution.tax_amount|boolean}} -{ts}Total Tax Amount{/ts}: {contribution.tax_amount} -{/if} -{if {event.is_monetary|boolean}} - -{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{ts}Balance{/ts}: {contribution.balance_amount} -{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{/if} - -{if !empty($pricesetFieldsCount)} - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq \'skip\'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1} - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - -{if {participant.register_date|boolean}} -{ts}Registration Date{/ts}: {participant.register_date} -{/if} -{if {contribution.receive_date|boolean}} -{ts}Transaction Date{/ts}: {contribution.receive_date} -{/if} -{if {contribution.financial_type_id|boolean}} -{ts}Financial Type{/ts}: {contribution.financial_type_id:label} -{/if} -{if {contribution.trxn_id|boolean}} -{ts}Transaction #{/ts}: {contribution.trxn_id} -{/if} -{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}} -{ts}Paid By{/ts}: {contribution.payment_instrument_id:label} -{/if} -{if {contribution.check_number|boolean}} -{ts}Check Number{/ts}: {contribution.check_number} -{/if} -{if !empty($billingName)} - -=============================================================================== - -{ts}Billing Name and Address{/ts} - -=============================================================================== - -{$billingName} -{$address} -{/if} - -{if !empty($credit_card_type)} -=========================================================== -{ts}Credit Card Information{/ts} - -=============================================================================== - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if !empty($customGroup)} -{foreach from=$customGroup item=value key=customName} -============================================================================== - -{$customName} -============================================================================== - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - -', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +', '', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> @@ -13986,7 +13519,7 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -13994,8 +13527,8 @@ INSERT INTO civicrm_msg_template </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} @@ -14045,7 +13578,7 @@ INSERT INTO civicrm_msg_template </body> </html> -', 'event_offline_receipt', @tpl_ovid_event_offline_receipt, 0, 1) , +', 'event_offline_receipt', @tpl_ovid_event_offline_receipt, 0, 1) , ('Events - Registration Confirmation and Receipt (on-line)', '{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name} @@ -14235,7 +13768,7 @@ You were registered by: {$payer.name} {if !empty($checkNumber)} {ts}Check Number{/ts}: {$checkNumber} {/if} -{if !empty($billingName)} +{if {contribution.address_id.display|boolean}} =============================================================================== @@ -14243,8 +13776,8 @@ You were registered by: {$payer.name} =============================================================================== -{$billingName} -{$address} +{contribution.address_id.name} +{contribution.address_id.display} {/if} {if !empty($credit_card_type)} @@ -14706,7 +14239,7 @@ You were registered by: {$payer.name} </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -14714,8 +14247,8 @@ You were registered by: {$payer.name} </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} @@ -14989,7 +14522,7 @@ You were registered by: {$payer.name} {if !empty($checkNumber)} {ts}Check Number{/ts}: {$checkNumber} {/if} -{if !empty($billingName)} +{if {contribution.address_id.display|boolean}} =============================================================================== @@ -14997,8 +14530,8 @@ You were registered by: {$payer.name} =============================================================================== -{$billingName} -{$address} +{contribution.address_id.name} +{contribution.address_id.display} {/if} {if !empty($credit_card_type)} @@ -15460,7 +14993,7 @@ You were registered by: {$payer.name} </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -15468,8 +15001,8 @@ You were registered by: {$payer.name} </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} @@ -15555,7 +15088,7 @@ You were registered by: {$payer.name} </body> </html> -', 'event_online_receipt', @tpl_ovid_event_online_receipt, 0, 1) , +', 'event_online_receipt', @tpl_ovid_event_online_receipt, 0, 1) , ('Events - Receipt only', 'Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name} @@ -16071,7 +15604,7 @@ Total: {$total|crmMoney:$currency|string_format:"%10s"} If you have questions about the status of your registration or purchase please feel free to contact us. </body> </html> -', 'event_registration_receipt', @tpl_ovid_event_registration_receipt, 0, 1) , +', 'event_registration_receipt', @tpl_ovid_event_registration_receipt, 0, 1) , ('Events - Registration Cancellation Notice', '{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name} @@ -16425,7 +15958,7 @@ Total: {$total|crmMoney:$currency|string_format:"%10s"} </body> </html> -', 'participant_cancelled', @tpl_ovid_participant_cancelled, 0, 1) , +', 'participant_cancelled', @tpl_ovid_participant_cancelled, 0, 1) , ('Events - Registration Confirmation Invite', '{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name} @@ -16903,7 +16436,7 @@ Click this link to go to a web page where you can confirm your registration onli </body> </html> -', 'participant_confirm', @tpl_ovid_participant_confirm, 0, 1) , +', 'participant_confirm', @tpl_ovid_participant_confirm, 0, 1) , ('Events - Pending Registration Expiration Notice', '{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name} @@ -17271,7 +16804,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'participant_expired', @tpl_ovid_participant_expired, 0, 1) , +', 'participant_expired', @tpl_ovid_participant_expired, 0, 1) , ('Events - Registration Transferred Notice', '{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name} @@ -17621,7 +17154,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'participant_transferred', @tpl_ovid_participant_transferred, 0, 1) , +', 'participant_transferred', @tpl_ovid_participant_transferred, 0, 1) , ('Tell-a-Friend Email', '{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts} @@ -17733,7 +17266,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'friend', @tpl_ovid_friend, 0, 1) , +', 'friend', @tpl_ovid_friend, 0, 1) , ('Memberships - Signup and Renewal Receipts (off-line)', '{if $receiptType EQ \'membership signup\'} @@ -18521,7 +18054,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'membership_offline_receipt', @tpl_ovid_membership_offline_receipt, 0, 1) , +', 'membership_offline_receipt', @tpl_ovid_membership_offline_receipt, 0, 1) , ('Memberships - Receipt (on-line)', '{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name} @@ -19294,7 +18827,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </th> </tr> {foreach from=$customPost item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -19303,7 +18835,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -20082,7 +19613,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </th> </tr> {foreach from=$customPost item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -20091,7 +19621,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -20099,7 +19628,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'membership_online_receipt', @tpl_ovid_membership_online_receipt, 0, 1) , +', 'membership_online_receipt', @tpl_ovid_membership_online_receipt, 0, 1) , ('Memberships - Auto-renew Cancellation Notification', '{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name} @@ -20269,7 +19798,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'membership_autorenew_cancelled', @tpl_ovid_membership_autorenew_cancelled, 0, 1) , +', 'membership_autorenew_cancelled', @tpl_ovid_membership_autorenew_cancelled, 0, 1) , ('Memberships - Auto-renew Billing Updates', '{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name} @@ -20449,7 +19978,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </body> </html> -', 'membership_autorenew_billing', @tpl_ovid_membership_autorenew_billing, 0, 1) , +', 'membership_autorenew_billing', @tpl_ovid_membership_autorenew_billing, 0, 1) , ('Test-drive - Receipt Header', '[TEST] @@ -20485,7 +20014,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </td> </tr> </table> -', 'test_preview', @tpl_ovid_test_preview, 0, 1) , +', 'test_preview', @tpl_ovid_test_preview, 0, 1) , ('Pledges - Acknowledgement', '{ts}Thank you for your Pledge{/ts} - {contact.display_name} @@ -20811,7 +20340,7 @@ or need to modify your payment schedule.{/ts}</p> </body> </html> -', 'pledge_acknowledge', @tpl_ovid_pledge_acknowledge, 0, 1) , +', 'pledge_acknowledge', @tpl_ovid_pledge_acknowledge, 0, 1) , ('Pledges - Payment Reminder', '{ts}Pledge Payment Reminder{/ts} - {contact.display_name} @@ -21093,7 +20622,7 @@ or need to modify your payment schedule.{/ts}</p> </body> </html> -', 'pledge_reminder', @tpl_ovid_pledge_reminder, 0, 1) , +', 'pledge_reminder', @tpl_ovid_pledge_reminder, 0, 1) , ('Profiles - Admin Notification', '{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name} @@ -21265,7 +20794,7 @@ or need to modify your payment schedule.{/ts}</p> </body> </html> -', 'uf_notify', @tpl_ovid_uf_notify, 0, 1) , +', 'uf_notify', @tpl_ovid_uf_notify, 0, 1) , ('Petition - signature added', 'Thank you for signing {survey.title} - {contact.display_name} @@ -21289,7 +20818,7 @@ Thank you for signing {survey.title}. {capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q="sid={survey.id}" a=1 fe=1 h=1}{/capture} {include file="CRM/common/SocialNetwork.tpl" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true} -', 'petition_sign', @tpl_ovid_petition_sign, 0, 1) , +', 'petition_sign', @tpl_ovid_petition_sign, 0, 1) , ('Petition - need verification', 'Confirmation of signature needed for {$petition.title} - {contact.display_name} @@ -21340,7 +20869,6 @@ Email confirmation page: <a href="{$petition.confirmUrl}">{$petition.confirmUrl} <p>If you did not sign this petition, please ignore this message.</p> ', 'petition_confirmation_needed', @tpl_ovid_petition_confirmation_needed, 0, 1) ; - INSERT INTO civicrm_msg_template (msg_title, msg_subject, msg_text, msg_html, workflow_id, is_default, is_reserved) VALUES @@ -23580,4 +23108,4 @@ INSERT INTO `civicrm_report_instance` ( `domain_id`, `title`, `report_id`, `description`, `permission`, `form_values`) VALUES ( @domainID, 'Survey Details', 'survey/detail', 'Detailed report for canvassing, phone-banking, walk lists or other surveys.', 'access CiviReport', 'a:39:{s:6:"fields";a:2:{s:9:"sort_name";s:1:"1";s:6:"result";s:1:"1";}s:22:"assignee_contact_id_op";s:2:"eq";s:25:"assignee_contact_id_value";s:0:"";s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:17:"street_number_min";s:0:"";s:17:"street_number_max";s:0:"";s:16:"street_number_op";s:3:"lte";s:19:"street_number_value";s:0:"";s:14:"street_name_op";s:3:"has";s:17:"street_name_value";s:0:"";s:15:"postal_code_min";s:0:"";s:15:"postal_code_max";s:0:"";s:14:"postal_code_op";s:3:"lte";s:17:"postal_code_value";s:0:"";s:7:"city_op";s:3:"has";s:10:"city_value";s:0:"";s:20:"state_province_id_op";s:2:"in";s:23:"state_province_id_value";a:0:{}s:13:"country_id_op";s:2:"in";s:16:"country_id_value";a:0:{}s:12:"survey_id_op";s:2:"in";s:15:"survey_id_value";a:0:{}s:12:"status_id_op";s:2:"eq";s:15:"status_id_value";s:1:"1";s:11:"custom_1_op";s:2:"in";s:14:"custom_1_value";a:0:{}s:11:"custom_2_op";s:2:"in";s:14:"custom_2_value";a:0:{}s:17:"custom_3_relative";s:1:"0";s:13:"custom_3_from";s:0:"";s:11:"custom_3_to";s:0:"";s:11:"description";s:75:"Detailed report for canvassing, phone-banking, walk lists or other surveys.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:17:"access CiviReport";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}'); -UPDATE civicrm_domain SET version = '5.67.3'; +UPDATE civicrm_domain SET version = '5.68.0'; diff --git a/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php b/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php index 974fba7f4f4b73414051179e6d2ab630391bab58..4811b8825a24cc044181dfc037648542c586f53c 100644 --- a/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php @@ -6,23 +6,33 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_tag') ]) ->addValues([ [ - 'name' => ts('Non-profit'), + 'label' => ts('Non-profit'), + 'name' => 'Non_profit', 'description' => ts('Any not-for-profit organization.'), + 'color' => '#0bcb21', ], [ - 'name' => ts('Company'), + 'label' => ts('Company'), + 'name' => 'Company', 'description' => ts('For-profit organization.'), + 'color' => '#2260c3', ], [ - 'name' => ts('Government Entity'), + 'label' => ts('Government Entity'), + 'name' => 'Government_Entity', 'description' => ts('Any governmental entity.'), + 'color' => '#cd4b13', ], [ - 'name' => ts('Major Donor'), + 'label' => ts('Major Donor'), + 'name' => 'Major_Donor', 'description' => ts('High-value supporter of our organization.'), + 'color' => '#0cdae9', ], [ - 'name' => ts('Volunteer'), + 'label' => ts('Volunteer'), + 'name' => 'Volunteer', 'description' => ts('Active volunteers.'), + 'color' => '#f0dc00', ], ]); diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql index 809bc86cc1398d34f91c1ea1ffad19cc76f24c01..a8088ebac8ba37a481993170b54ce59ab96d0c39 100644 --- a/civicrm/sql/civicrm_generated.mysql +++ b/civicrm/sql/civicrm_generated.mysql @@ -1,15 +1,16 @@ --- MariaDB dump 10.19 Distrib 10.5.19-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.13 Distrib 5.7.37, for Linux (x86_64) -- --- Host: database Database: dmastercivicrm +-- Host: 127.0.0.1 Database: dmastercivi_ssc8b -- ------------------------------------------------------ --- Server version 10.4.20-MariaDB-1:10.4.20+maria~focal +-- Server version 5.7.37 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; +/*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; @@ -81,647 +82,647 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity` WRITE; /*!40000 ALTER TABLE `civicrm_activity` DISABLE KEYS */; INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES - (1,NULL,1,'Subject for Meeting','2023-01-10 03:50:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (2,NULL,2,'Subject for Phone Call','2023-03-17 02:02:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (3,NULL,2,'Subject for Phone Call','2023-06-13 07:07:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (4,NULL,1,'Subject for Meeting','2022-10-15 22:22:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (5,NULL,1,'Subject for Meeting','2023-06-30 02:06:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (6,NULL,22,'Subject for Print/Merge Document','2023-04-03 03:22:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (7,NULL,22,'Subject for Print/Merge Document','2022-11-11 21:57:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (8,NULL,1,'Subject for Meeting','2022-12-24 17:58:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (9,NULL,1,'Subject for Meeting','2023-02-03 17:52:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (10,NULL,1,'Subject for Meeting','2022-11-30 04:08:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (11,NULL,22,'Subject for Print/Merge Document','2023-06-03 13:25:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (12,NULL,22,'Subject for Print/Merge Document','2023-07-22 02:54:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (13,NULL,1,'Subject for Meeting','2023-06-16 08:28:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (14,NULL,9,'Subject for Tell a Friend','2023-03-20 23:03:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (15,NULL,9,'Subject for Tell a Friend','2023-10-06 05:34:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (16,NULL,22,'Subject for Print/Merge Document','2022-10-14 07:05:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (17,NULL,2,'Subject for Phone Call','2023-06-01 12:32:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (18,NULL,9,'Subject for Tell a Friend','2023-06-15 02:38:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (19,NULL,2,'Subject for Phone Call','2023-08-24 05:51:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (20,NULL,22,'Subject for Print/Merge Document','2023-02-12 19:22:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (21,NULL,2,'Subject for Phone Call','2023-09-07 19:42:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (22,NULL,22,'Subject for Print/Merge Document','2023-06-30 00:13:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (23,NULL,9,'Subject for Tell a Friend','2023-07-18 19:55:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (24,NULL,56,'Subject for Interview','2022-10-22 03:58:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (25,NULL,9,'Subject for Tell a Friend','2023-01-03 18:44:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (26,NULL,2,'Subject for Phone Call','2023-05-09 10:43:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (27,NULL,2,'Subject for Phone Call','2023-06-06 18:07:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (28,NULL,9,'Subject for Tell a Friend','2023-08-16 04:18:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (29,NULL,2,'Subject for Phone Call','2023-01-05 23:52:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:35','2023-10-07 01:51:35'), - (30,NULL,9,'Subject for Tell a Friend','2023-07-06 08:45:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (31,NULL,22,'Subject for Print/Merge Document','2022-12-19 09:47:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (32,NULL,9,'Subject for Tell a Friend','2023-07-21 13:08:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (33,NULL,22,'Subject for Print/Merge Document','2023-08-31 07:34:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (34,NULL,56,'Subject for Interview','2023-04-10 13:06:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (35,NULL,9,'Subject for Tell a Friend','2023-07-10 22:10:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (36,NULL,2,'Subject for Phone Call','2023-01-18 07:01:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (37,NULL,1,'Subject for Meeting','2023-09-29 02:04:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (38,NULL,9,'Subject for Tell a Friend','2023-02-25 02:46:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (39,NULL,1,'Subject for Meeting','2023-06-06 02:54:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (40,NULL,22,'Subject for Print/Merge Document','2023-05-20 22:16:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (41,NULL,1,'Subject for Meeting','2022-10-16 04:38:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (42,NULL,56,'Subject for Interview','2022-12-07 00:18:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (43,NULL,56,'Subject for Interview','2022-11-21 11:23:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (44,NULL,56,'Subject for Interview','2022-10-20 01:00:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (45,NULL,9,'Subject for Tell a Friend','2023-08-24 19:31:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (46,NULL,9,'Subject for Tell a Friend','2023-05-16 13:18:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (47,NULL,2,'Subject for Phone Call','2023-08-23 02:30:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (48,NULL,9,'Subject for Tell a Friend','2023-03-24 02:03:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (49,NULL,22,'Subject for Print/Merge Document','2023-08-28 10:03:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (50,NULL,1,'Subject for Meeting','2023-05-19 17:32:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (51,NULL,2,'Subject for Phone Call','2023-08-26 17:28:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (52,NULL,56,'Subject for Interview','2023-06-12 05:52:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (53,NULL,2,'Subject for Phone Call','2023-01-13 21:06:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (54,NULL,9,'Subject for Tell a Friend','2023-09-20 07:02:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (55,NULL,56,'Subject for Interview','2023-05-14 06:32:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (56,NULL,22,'Subject for Print/Merge Document','2023-07-14 20:47:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (57,NULL,22,'Subject for Print/Merge Document','2023-02-05 02:12:03',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (58,NULL,22,'Subject for Print/Merge Document','2022-12-12 03:01:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (59,NULL,56,'Subject for Interview','2023-07-22 22:20:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (60,NULL,9,'Subject for Tell a Friend','2023-05-13 22:19:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (61,NULL,22,'Subject for Print/Merge Document','2023-08-04 11:31:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (62,NULL,22,'Subject for Print/Merge Document','2023-04-21 13:57:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (63,NULL,9,'Subject for Tell a Friend','2023-08-15 03:16:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (64,NULL,56,'Subject for Interview','2023-03-17 10:02:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (65,NULL,9,'Subject for Tell a Friend','2023-03-28 09:31:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (66,NULL,56,'Subject for Interview','2023-02-01 21:30:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (67,NULL,56,'Subject for Interview','2022-10-23 23:14:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (68,NULL,9,'Subject for Tell a Friend','2023-01-10 23:06:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (69,NULL,56,'Subject for Interview','2023-04-23 14:00:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (70,NULL,56,'Subject for Interview','2023-06-16 14:53:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (71,NULL,9,'Subject for Tell a Friend','2023-06-21 07:01:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (72,NULL,56,'Subject for Interview','2023-09-11 20:35:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (73,NULL,56,'Subject for Interview','2023-02-11 21:25:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (74,NULL,1,'Subject for Meeting','2023-08-28 21:56:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (75,NULL,2,'Subject for Phone Call','2023-04-30 06:35:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (76,NULL,22,'Subject for Print/Merge Document','2023-05-26 19:24:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (77,NULL,22,'Subject for Print/Merge Document','2023-08-06 02:33:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (78,NULL,56,'Subject for Interview','2022-11-25 02:25:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (79,NULL,56,'Subject for Interview','2023-06-04 01:51:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (80,NULL,56,'Subject for Interview','2023-01-13 03:17:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (81,NULL,2,'Subject for Phone Call','2022-11-03 17:45:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (82,NULL,2,'Subject for Phone Call','2023-07-14 07:20:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (83,NULL,1,'Subject for Meeting','2023-06-30 03:22:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (84,NULL,9,'Subject for Tell a Friend','2023-01-03 18:11:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (85,NULL,1,'Subject for Meeting','2023-03-17 14:25:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (86,NULL,2,'Subject for Phone Call','2023-03-17 01:53:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (87,NULL,56,'Subject for Interview','2023-02-20 08:15:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (88,NULL,22,'Subject for Print/Merge Document','2023-01-30 07:27:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (89,NULL,22,'Subject for Print/Merge Document','2023-05-26 20:25:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (90,NULL,56,'Subject for Interview','2023-08-11 03:36:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (91,NULL,2,'Subject for Phone Call','2023-05-25 03:46:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (92,NULL,2,'Subject for Phone Call','2023-05-09 14:06:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (93,NULL,22,'Subject for Print/Merge Document','2023-10-01 02:26:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (94,NULL,56,'Subject for Interview','2023-09-14 04:28:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (95,NULL,1,'Subject for Meeting','2023-05-20 01:23:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (96,NULL,2,'Subject for Phone Call','2023-01-29 16:39:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (97,NULL,2,'Subject for Phone Call','2023-06-05 22:23:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (98,NULL,22,'Subject for Print/Merge Document','2022-12-31 15:48:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (99,NULL,2,'Subject for Phone Call','2023-04-21 22:30:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (100,NULL,9,'Subject for Tell a Friend','2022-12-08 10:36:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (101,NULL,1,'Subject for Meeting','2022-10-31 11:07:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (102,NULL,22,'Subject for Print/Merge Document','2023-03-08 06:30:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (103,NULL,2,'Subject for Phone Call','2022-10-08 09:27:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (104,NULL,56,'Subject for Interview','2022-11-24 21:30:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (105,NULL,2,'Subject for Phone Call','2023-09-15 05:57:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (106,NULL,56,'Subject for Interview','2023-05-24 05:31:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (107,NULL,2,'Subject for Phone Call','2023-06-17 02:48:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (108,NULL,9,'Subject for Tell a Friend','2023-08-07 23:09:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (109,NULL,2,'Subject for Phone Call','2023-07-10 06:46:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (110,NULL,9,'Subject for Tell a Friend','2023-04-23 12:10:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (111,NULL,56,'Subject for Interview','2022-10-24 22:12:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (112,NULL,9,'Subject for Tell a Friend','2023-03-30 06:56:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (113,NULL,1,'Subject for Meeting','2023-05-05 02:34:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (114,NULL,9,'Subject for Tell a Friend','2023-06-21 21:57:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (115,NULL,9,'Subject for Tell a Friend','2023-07-10 19:33:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (116,NULL,56,'Subject for Interview','2023-10-02 09:03:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (117,NULL,2,'Subject for Phone Call','2022-11-18 03:35:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (118,NULL,56,'Subject for Interview','2022-12-12 04:18:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (119,NULL,22,'Subject for Print/Merge Document','2023-08-19 21:00:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (120,NULL,22,'Subject for Print/Merge Document','2022-12-02 15:10:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (121,NULL,1,'Subject for Meeting','2023-01-13 07:04:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (122,NULL,2,'Subject for Phone Call','2023-06-14 13:40:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (123,NULL,1,'Subject for Meeting','2023-01-25 23:52:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (124,NULL,56,'Subject for Interview','2023-09-23 00:32:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (125,NULL,22,'Subject for Print/Merge Document','2022-10-31 03:46:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (126,NULL,22,'Subject for Print/Merge Document','2023-09-25 11:43:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (127,NULL,9,'Subject for Tell a Friend','2022-10-30 22:24:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (128,NULL,9,'Subject for Tell a Friend','2023-02-09 16:57:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (129,NULL,56,'Subject for Interview','2023-10-03 13:17:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (130,NULL,56,'Subject for Interview','2023-05-08 15:01:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (131,NULL,2,'Subject for Phone Call','2022-10-22 03:07:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (132,NULL,9,'Subject for Tell a Friend','2023-04-18 11:30:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (133,NULL,56,'Subject for Interview','2023-05-13 01:52:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (134,NULL,9,'Subject for Tell a Friend','2023-02-17 08:34:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (135,NULL,22,'Subject for Print/Merge Document','2023-09-10 22:43:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (136,NULL,2,'Subject for Phone Call','2023-02-01 08:18:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (137,NULL,1,'Subject for Meeting','2022-11-27 22:01:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (138,NULL,9,'Subject for Tell a Friend','2023-03-27 12:51:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (139,NULL,9,'Subject for Tell a Friend','2022-10-18 01:21:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (140,NULL,9,'Subject for Tell a Friend','2023-05-17 14:45:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (141,NULL,9,'Subject for Tell a Friend','2023-07-20 07:28:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (142,NULL,22,'Subject for Print/Merge Document','2023-09-19 20:49:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (143,NULL,22,'Subject for Print/Merge Document','2023-02-02 00:55:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (144,NULL,9,'Subject for Tell a Friend','2023-05-11 00:28:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (145,NULL,2,'Subject for Phone Call','2023-07-08 19:50:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (146,NULL,9,'Subject for Tell a Friend','2023-09-16 02:39:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (147,NULL,56,'Subject for Interview','2023-09-16 14:45:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (148,NULL,56,'Subject for Interview','2023-05-09 00:36:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (149,NULL,2,'Subject for Phone Call','2023-09-17 12:23:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (150,NULL,9,'Subject for Tell a Friend','2023-05-07 05:21:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (151,NULL,9,'Subject for Tell a Friend','2023-05-19 21:37:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:36','2023-10-07 01:51:36'), - (152,NULL,9,'Subject for Tell a Friend','2023-07-18 21:31:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (153,NULL,22,'Subject for Print/Merge Document','2023-07-20 05:36:32',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (154,NULL,22,'Subject for Print/Merge Document','2023-03-11 11:16:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (155,NULL,2,'Subject for Phone Call','2023-03-07 14:30:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (156,NULL,1,'Subject for Meeting','2022-11-25 15:02:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (157,NULL,2,'Subject for Phone Call','2022-12-10 13:52:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (158,NULL,2,'Subject for Phone Call','2023-08-04 09:03:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (159,NULL,2,'Subject for Phone Call','2023-03-29 20:31:58',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (160,NULL,1,'Subject for Meeting','2023-08-05 20:27:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (161,NULL,56,'Subject for Interview','2023-06-26 10:23:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (162,NULL,1,'Subject for Meeting','2023-01-08 13:10:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (163,NULL,56,'Subject for Interview','2023-04-17 06:42:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (164,NULL,22,'Subject for Print/Merge Document','2022-12-10 18:51:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (165,NULL,2,'Subject for Phone Call','2022-12-22 14:29:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (166,NULL,1,'Subject for Meeting','2023-04-21 15:00:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (167,NULL,56,'Subject for Interview','2023-07-18 11:00:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (168,NULL,1,'Subject for Meeting','2022-12-14 09:15:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (169,NULL,22,'Subject for Print/Merge Document','2022-10-11 18:59:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (170,NULL,2,'Subject for Phone Call','2022-12-20 11:57:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (171,NULL,9,'Subject for Tell a Friend','2022-11-27 20:00:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (172,NULL,2,'Subject for Phone Call','2023-07-25 20:03:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (173,NULL,9,'Subject for Tell a Friend','2023-05-03 09:10:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (174,NULL,56,'Subject for Interview','2023-01-18 04:24:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (175,NULL,9,'Subject for Tell a Friend','2023-02-22 20:05:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (176,NULL,22,'Subject for Print/Merge Document','2023-04-11 15:48:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (177,NULL,22,'Subject for Print/Merge Document','2023-09-20 17:13:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (178,NULL,22,'Subject for Print/Merge Document','2022-12-19 06:09:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (179,NULL,22,'Subject for Print/Merge Document','2022-12-13 09:34:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (180,NULL,1,'Subject for Meeting','2023-01-03 15:17:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (181,NULL,9,'Subject for Tell a Friend','2022-12-11 00:38:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (182,NULL,56,'Subject for Interview','2023-07-19 08:42:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (183,NULL,2,'Subject for Phone Call','2023-04-20 14:41:33',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (184,NULL,1,'Subject for Meeting','2023-07-17 07:13:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (185,NULL,56,'Subject for Interview','2022-12-10 04:38:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (186,NULL,9,'Subject for Tell a Friend','2023-10-06 08:33:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (187,NULL,9,'Subject for Tell a Friend','2023-09-14 04:39:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (188,NULL,22,'Subject for Print/Merge Document','2023-08-30 17:08:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (189,NULL,22,'Subject for Print/Merge Document','2022-12-31 05:31:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (190,NULL,1,'Subject for Meeting','2023-02-17 17:29:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (191,NULL,9,'Subject for Tell a Friend','2023-02-28 21:15:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (192,NULL,56,'Subject for Interview','2023-05-02 15:24:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (193,NULL,1,'Subject for Meeting','2023-02-13 16:10:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (194,NULL,22,'Subject for Print/Merge Document','2023-08-12 18:32:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (195,NULL,9,'Subject for Tell a Friend','2023-02-14 03:08:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (196,NULL,1,'Subject for Meeting','2023-06-23 20:50:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (197,NULL,56,'Subject for Interview','2023-07-23 12:25:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (198,NULL,2,'Subject for Phone Call','2023-04-15 05:57:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (199,NULL,9,'Subject for Tell a Friend','2023-04-21 22:47:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (200,NULL,9,'Subject for Tell a Friend','2023-04-20 21:33:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (201,NULL,1,'Subject for Meeting','2022-12-02 17:58:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (202,NULL,9,'Subject for Tell a Friend','2023-03-25 03:45:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (203,NULL,1,'Subject for Meeting','2023-07-30 16:26:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (204,NULL,56,'Subject for Interview','2023-06-18 21:21:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (205,NULL,56,'Subject for Interview','2023-06-22 21:37:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (206,NULL,2,'Subject for Phone Call','2023-04-09 17:24:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (207,NULL,2,'Subject for Phone Call','2023-01-29 22:01:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (208,NULL,22,'Subject for Print/Merge Document','2023-07-17 11:12:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (209,NULL,1,'Subject for Meeting','2023-01-11 08:49:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (210,NULL,1,'Subject for Meeting','2023-07-12 01:18:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (211,NULL,9,'Subject for Tell a Friend','2023-01-10 06:44:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (212,NULL,1,'Subject for Meeting','2023-08-18 07:17:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (213,NULL,1,'Subject for Meeting','2023-01-28 11:50:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (214,NULL,1,'Subject for Meeting','2022-12-30 21:42:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (215,NULL,1,'Subject for Meeting','2022-11-21 05:17:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (216,NULL,22,'Subject for Print/Merge Document','2022-12-22 15:31:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (217,NULL,22,'Subject for Print/Merge Document','2023-03-11 10:13:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (218,NULL,22,'Subject for Print/Merge Document','2023-07-20 14:29:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (219,NULL,1,'Subject for Meeting','2023-09-19 14:45:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (220,NULL,9,'Subject for Tell a Friend','2023-01-11 23:35:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (221,NULL,22,'Subject for Print/Merge Document','2023-03-01 03:26:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (222,NULL,1,'Subject for Meeting','2023-05-20 13:41:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (223,NULL,22,'Subject for Print/Merge Document','2023-02-14 16:33:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (224,NULL,9,'Subject for Tell a Friend','2023-04-04 21:04:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (225,NULL,22,'Subject for Print/Merge Document','2023-06-09 01:49:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (226,NULL,9,'Subject for Tell a Friend','2022-11-14 09:42:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (227,NULL,2,'Subject for Phone Call','2023-04-11 00:14:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (228,NULL,1,'Subject for Meeting','2023-01-07 22:36:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (229,NULL,2,'Subject for Phone Call','2023-07-29 21:15:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (230,NULL,56,'Subject for Interview','2023-04-19 06:54:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (231,NULL,56,'Subject for Interview','2023-01-15 10:26:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (232,NULL,22,'Subject for Print/Merge Document','2023-09-29 18:45:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (233,NULL,22,'Subject for Print/Merge Document','2022-10-20 12:16:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (234,NULL,1,'Subject for Meeting','2022-10-17 00:22:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (235,NULL,56,'Subject for Interview','2023-05-08 17:32:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (236,NULL,22,'Subject for Print/Merge Document','2022-11-05 00:48:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (237,NULL,1,'Subject for Meeting','2022-10-30 16:57:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (238,NULL,9,'Subject for Tell a Friend','2023-08-18 00:01:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (239,NULL,56,'Subject for Interview','2023-09-23 08:23:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (240,NULL,9,'Subject for Tell a Friend','2023-09-09 15:04:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (241,NULL,9,'Subject for Tell a Friend','2023-08-10 10:29:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (242,NULL,9,'Subject for Tell a Friend','2023-06-03 16:43:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (243,NULL,56,'Subject for Interview','2023-05-24 03:12:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (244,NULL,1,'Subject for Meeting','2023-08-29 09:08:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (245,NULL,1,'Subject for Meeting','2023-03-17 03:44:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (246,NULL,9,'Subject for Tell a Friend','2023-05-30 08:24:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (247,NULL,56,'Subject for Interview','2023-03-11 14:57:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (248,NULL,1,'Subject for Meeting','2023-08-23 14:34:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (249,NULL,56,'Subject for Interview','2023-05-20 18:36:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (250,NULL,1,'Subject for Meeting','2022-12-15 20:59:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (251,NULL,1,'Subject for Meeting','2023-07-11 13:59:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (252,NULL,2,'Subject for Phone Call','2023-09-13 16:52:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (253,NULL,9,'Subject for Tell a Friend','2023-10-06 06:15:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (254,NULL,2,'Subject for Phone Call','2023-03-26 15:09:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (255,NULL,22,'Subject for Print/Merge Document','2023-04-29 20:07:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (256,NULL,22,'Subject for Print/Merge Document','2023-04-13 15:32:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (257,NULL,2,'Subject for Phone Call','2023-10-05 15:04:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (258,NULL,9,'Subject for Tell a Friend','2022-10-13 23:50:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (259,NULL,22,'Subject for Print/Merge Document','2022-10-12 13:01:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (260,NULL,9,'Subject for Tell a Friend','2023-09-05 19:37:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (261,NULL,2,'Subject for Phone Call','2023-06-17 02:25:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (262,NULL,1,'Subject for Meeting','2022-10-23 16:24:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (263,NULL,22,'Subject for Print/Merge Document','2023-07-05 07:47:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (264,NULL,9,'Subject for Tell a Friend','2022-12-01 15:53:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (265,NULL,22,'Subject for Print/Merge Document','2023-07-15 03:55:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (266,NULL,1,'Subject for Meeting','2022-10-23 10:16:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (267,NULL,22,'Subject for Print/Merge Document','2023-10-06 13:55:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (268,NULL,2,'Subject for Phone Call','2023-06-28 03:05:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (269,NULL,2,'Subject for Phone Call','2023-02-12 07:57:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (270,NULL,22,'Subject for Print/Merge Document','2023-01-04 09:47:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (271,NULL,9,'Subject for Tell a Friend','2023-05-31 09:06:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (272,NULL,56,'Subject for Interview','2022-10-09 15:18:57',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (273,NULL,56,'Subject for Interview','2023-01-02 15:11:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (274,NULL,9,'Subject for Tell a Friend','2022-11-29 05:37:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (275,NULL,2,'Subject for Phone Call','2022-12-24 23:34:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (276,NULL,2,'Subject for Phone Call','2023-08-17 02:46:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:37','2023-10-07 01:51:37'), - (277,NULL,9,'Subject for Tell a Friend','2023-07-11 03:48:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (278,NULL,56,'Subject for Interview','2023-07-26 04:03:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (279,NULL,2,'Subject for Phone Call','2023-01-31 22:16:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (280,NULL,56,'Subject for Interview','2023-01-01 00:36:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (281,NULL,9,'Subject for Tell a Friend','2023-09-13 10:19:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (282,NULL,9,'Subject for Tell a Friend','2023-02-01 16:20:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (283,NULL,1,'Subject for Meeting','2022-12-17 16:05:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (284,NULL,22,'Subject for Print/Merge Document','2023-02-24 18:58:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (285,NULL,56,'Subject for Interview','2023-04-10 08:57:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (286,NULL,2,'Subject for Phone Call','2022-10-29 23:44:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (287,NULL,9,'Subject for Tell a Friend','2023-05-26 01:20:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (288,NULL,2,'Subject for Phone Call','2023-04-08 07:39:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (289,NULL,9,'Subject for Tell a Friend','2022-12-31 15:27:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (290,NULL,22,'Subject for Print/Merge Document','2023-03-24 11:57:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (291,NULL,22,'Subject for Print/Merge Document','2023-08-15 19:23:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (292,NULL,2,'Subject for Phone Call','2022-11-21 07:28:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (293,NULL,56,'Subject for Interview','2023-02-24 15:46:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (294,NULL,1,'Subject for Meeting','2022-12-15 16:09:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (295,NULL,22,'Subject for Print/Merge Document','2023-03-31 02:08:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (296,NULL,1,'Subject for Meeting','2022-10-26 01:37:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (297,NULL,9,'Subject for Tell a Friend','2023-08-06 04:52:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (298,NULL,56,'Subject for Interview','2023-08-22 11:51:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (299,NULL,2,'Subject for Phone Call','2022-11-30 05:11:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (300,NULL,2,'Subject for Phone Call','2023-09-21 17:55:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (301,NULL,1,'Subject for Meeting','2023-03-24 02:46:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (302,NULL,9,'Subject for Tell a Friend','2022-11-01 23:14:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (303,NULL,56,'Subject for Interview','2023-09-06 12:26:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (304,NULL,56,'Subject for Interview','2023-03-01 01:06:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (305,NULL,9,'Subject for Tell a Friend','2023-08-24 21:53:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (306,NULL,1,'Subject for Meeting','2023-03-13 07:22:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (307,NULL,56,'Subject for Interview','2023-08-29 06:57:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (308,NULL,22,'Subject for Print/Merge Document','2023-01-10 13:39:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (309,NULL,2,'Subject for Phone Call','2023-03-11 22:47:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (310,NULL,56,'Subject for Interview','2023-03-16 19:54:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (311,NULL,56,'Subject for Interview','2023-09-10 18:44:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (312,NULL,9,'Subject for Tell a Friend','2023-04-30 11:17:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (313,NULL,22,'Subject for Print/Merge Document','2023-05-16 09:24:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (314,NULL,22,'Subject for Print/Merge Document','2023-08-02 05:20:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (315,NULL,9,'Subject for Tell a Friend','2022-10-20 03:49:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (316,NULL,56,'Subject for Interview','2023-06-06 01:04:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (317,NULL,2,'Subject for Phone Call','2022-11-01 04:50:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (318,NULL,22,'Subject for Print/Merge Document','2022-10-17 15:08:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (319,NULL,2,'Subject for Phone Call','2023-09-17 23:48:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (320,NULL,9,'Subject for Tell a Friend','2023-04-05 09:42:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (321,NULL,56,'Subject for Interview','2023-03-03 19:55:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (322,NULL,9,'Subject for Tell a Friend','2023-05-10 19:20:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (323,NULL,2,'Subject for Phone Call','2023-01-31 18:23:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (324,NULL,9,'Subject for Tell a Friend','2023-09-19 02:32:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (325,NULL,56,'Subject for Interview','2023-05-16 21:52:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (326,NULL,56,'Subject for Interview','2023-07-19 03:20:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (327,NULL,56,'Subject for Interview','2023-08-21 23:06:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (328,NULL,22,'Subject for Print/Merge Document','2023-06-23 09:14:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (329,NULL,1,'Subject for Meeting','2023-04-15 18:21:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (330,NULL,1,'Subject for Meeting','2023-07-17 20:34:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (331,NULL,2,'Subject for Phone Call','2022-12-27 12:52:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (332,NULL,22,'Subject for Print/Merge Document','2022-10-28 17:28:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (333,NULL,1,'Subject for Meeting','2023-04-19 22:28:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (334,NULL,56,'Subject for Interview','2023-04-06 16:27:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (335,NULL,56,'Subject for Interview','2023-09-26 15:29:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (336,NULL,22,'Subject for Print/Merge Document','2023-10-02 01:11:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (337,NULL,56,'Subject for Interview','2022-10-15 21:25:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (338,NULL,1,'Subject for Meeting','2023-09-08 21:51:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (339,NULL,22,'Subject for Print/Merge Document','2023-06-30 18:19:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (340,NULL,9,'Subject for Tell a Friend','2023-06-24 10:38:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (341,NULL,22,'Subject for Print/Merge Document','2023-03-01 07:04:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (342,NULL,22,'Subject for Print/Merge Document','2022-10-27 16:53:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (343,NULL,1,'Subject for Meeting','2023-09-09 23:16:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (344,NULL,9,'Subject for Tell a Friend','2023-01-10 19:58:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (345,NULL,2,'Subject for Phone Call','2023-05-04 14:07:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (346,NULL,56,'Subject for Interview','2022-12-06 22:35:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (347,NULL,9,'Subject for Tell a Friend','2023-09-13 06:08:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (348,NULL,1,'Subject for Meeting','2023-07-29 21:36:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (349,NULL,1,'Subject for Meeting','2023-03-25 08:54:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (350,NULL,1,'Subject for Meeting','2022-12-12 07:41:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (351,NULL,1,'Subject for Meeting','2023-01-18 03:58:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (352,NULL,22,'Subject for Print/Merge Document','2023-09-10 09:28:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (353,NULL,56,'Subject for Interview','2022-10-28 02:06:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (354,NULL,2,'Subject for Phone Call','2023-03-26 20:22:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (355,NULL,56,'Subject for Interview','2023-06-23 01:36:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (356,NULL,22,'Subject for Print/Merge Document','2023-03-31 14:47:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (357,NULL,9,'Subject for Tell a Friend','2023-08-15 11:19:03',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (358,NULL,9,'Subject for Tell a Friend','2023-08-06 22:23:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (359,NULL,22,'Subject for Print/Merge Document','2022-12-13 01:47:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (360,NULL,2,'Subject for Phone Call','2023-02-26 10:44:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (361,NULL,2,'Subject for Phone Call','2023-01-24 04:48:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (362,NULL,1,'Subject for Meeting','2023-01-18 02:49:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (363,NULL,2,'Subject for Phone Call','2023-07-28 16:07:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (364,NULL,1,'Subject for Meeting','2023-04-12 02:18:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (365,NULL,22,'Subject for Print/Merge Document','2023-04-13 07:06:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (366,NULL,9,'Subject for Tell a Friend','2023-04-08 20:35:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (367,NULL,22,'Subject for Print/Merge Document','2022-10-29 23:48:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (368,NULL,9,'Subject for Tell a Friend','2022-11-26 03:34:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (369,NULL,9,'Subject for Tell a Friend','2023-05-21 08:46:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (370,NULL,9,'Subject for Tell a Friend','2023-03-09 05:15:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (371,NULL,56,'Subject for Interview','2022-11-18 18:25:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (372,NULL,56,'Subject for Interview','2023-04-25 02:58:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (373,NULL,1,'Subject for Meeting','2022-10-14 00:33:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (374,NULL,2,'Subject for Phone Call','2023-06-03 05:03:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (375,NULL,1,'Subject for Meeting','2022-11-21 10:32:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (376,NULL,9,'Subject for Tell a Friend','2023-05-22 10:36:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (377,NULL,22,'Subject for Print/Merge Document','2023-07-13 20:35:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (378,NULL,2,'Subject for Phone Call','2023-06-07 06:28:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (379,NULL,9,'Subject for Tell a Friend','2023-07-12 19:59:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (380,NULL,22,'Subject for Print/Merge Document','2023-01-31 12:58:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (381,NULL,2,'Subject for Phone Call','2023-08-11 06:17:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (382,NULL,9,'Subject for Tell a Friend','2023-06-07 03:35:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (383,NULL,56,'Subject for Interview','2023-06-17 11:05:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (384,NULL,56,'Subject for Interview','2023-09-19 04:32:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (385,NULL,56,'Subject for Interview','2023-09-22 01:29:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (386,NULL,56,'Subject for Interview','2023-03-12 09:47:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (387,NULL,1,'Subject for Meeting','2022-12-08 19:07:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (388,NULL,56,'Subject for Interview','2023-05-29 13:24:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (389,NULL,56,'Subject for Interview','2023-02-26 06:41:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (390,NULL,1,'Subject for Meeting','2023-07-26 21:55:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (391,NULL,56,'Subject for Interview','2023-10-02 14:03:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (392,NULL,2,'Subject for Phone Call','2023-05-11 07:46:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:38','2023-10-07 01:51:38'), - (393,NULL,22,'Subject for Print/Merge Document','2023-02-28 19:40:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (394,NULL,56,'Subject for Interview','2022-12-21 07:53:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (395,NULL,56,'Subject for Interview','2023-08-31 00:44:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (396,NULL,2,'Subject for Phone Call','2023-09-14 00:51:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (397,NULL,22,'Subject for Print/Merge Document','2023-05-03 09:32:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (398,NULL,22,'Subject for Print/Merge Document','2023-07-07 14:21:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (399,NULL,2,'Subject for Phone Call','2023-02-18 20:22:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (400,NULL,9,'Subject for Tell a Friend','2023-05-31 03:16:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (401,NULL,22,'Subject for Print/Merge Document','2023-06-01 02:25:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (402,NULL,1,'Subject for Meeting','2023-06-20 14:38:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (403,NULL,56,'Subject for Interview','2023-03-27 08:55:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (404,NULL,2,'Subject for Phone Call','2022-10-12 07:39:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (405,NULL,9,'Subject for Tell a Friend','2023-09-12 03:08:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (406,NULL,9,'Subject for Tell a Friend','2023-03-17 00:00:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (407,NULL,9,'Subject for Tell a Friend','2023-06-18 16:43:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (408,NULL,2,'Subject for Phone Call','2023-01-30 07:12:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (409,NULL,22,'Subject for Print/Merge Document','2023-05-13 13:10:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (410,NULL,56,'Subject for Interview','2022-10-17 21:09:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (411,NULL,1,'Subject for Meeting','2023-04-17 06:20:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (412,NULL,56,'Subject for Interview','2023-05-31 07:24:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (413,NULL,56,'Subject for Interview','2023-03-24 12:29:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (414,NULL,56,'Subject for Interview','2023-05-25 06:47:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (415,NULL,1,'Subject for Meeting','2023-07-10 23:56:58',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (416,NULL,9,'Subject for Tell a Friend','2023-02-28 03:48:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (417,NULL,22,'Subject for Print/Merge Document','2023-02-16 02:51:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (418,NULL,9,'Subject for Tell a Friend','2023-04-28 14:15:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (419,NULL,56,'Subject for Interview','2022-11-17 23:20:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (420,NULL,2,'Subject for Phone Call','2022-12-09 14:15:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (421,NULL,2,'Subject for Phone Call','2023-03-16 18:08:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (422,NULL,1,'Subject for Meeting','2023-09-16 15:39:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (423,NULL,1,'Subject for Meeting','2022-11-10 11:59:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (424,NULL,22,'Subject for Print/Merge Document','2023-07-25 09:36:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (425,NULL,9,'Subject for Tell a Friend','2023-03-17 05:16:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (426,NULL,1,'Subject for Meeting','2023-09-18 17:29:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (427,NULL,22,'Subject for Print/Merge Document','2023-09-07 12:12:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (428,NULL,56,'Subject for Interview','2023-08-16 11:14:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (429,NULL,56,'Subject for Interview','2022-11-25 05:37:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (430,NULL,22,'Subject for Print/Merge Document','2023-07-18 06:57:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (431,NULL,1,'Subject for Meeting','2023-04-14 21:49:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (432,NULL,22,'Subject for Print/Merge Document','2023-06-17 16:53:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (433,NULL,22,'Subject for Print/Merge Document','2023-03-21 06:42:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (434,NULL,9,'Subject for Tell a Friend','2023-05-28 22:47:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (435,NULL,9,'Subject for Tell a Friend','2023-06-13 07:17:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (436,NULL,9,'Subject for Tell a Friend','2023-05-23 22:34:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (437,NULL,9,'Subject for Tell a Friend','2023-05-08 03:13:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (438,NULL,9,'Subject for Tell a Friend','2023-07-04 00:37:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (439,NULL,1,'Subject for Meeting','2023-01-31 02:41:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (440,NULL,56,'Subject for Interview','2023-05-31 14:56:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (441,NULL,56,'Subject for Interview','2022-12-18 02:21:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (442,NULL,9,'Subject for Tell a Friend','2023-04-30 04:59:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (443,NULL,9,'Subject for Tell a Friend','2023-08-20 03:46:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (444,NULL,22,'Subject for Print/Merge Document','2023-03-09 13:26:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (445,NULL,22,'Subject for Print/Merge Document','2023-06-30 04:29:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (446,NULL,22,'Subject for Print/Merge Document','2023-05-05 11:16:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (447,NULL,1,'Subject for Meeting','2023-04-10 22:39:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (448,NULL,22,'Subject for Print/Merge Document','2022-10-23 23:52:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (449,NULL,9,'Subject for Tell a Friend','2023-07-12 15:21:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (450,NULL,1,'Subject for Meeting','2023-01-26 20:43:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (451,1,6,'$ 125 April Mailer 1','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (452,2,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (453,3,6,'£ 25 April Mailer 1','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (454,4,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (455,5,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (456,6,6,'$ 500 April Mailer 1','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (457,7,6,'$ 1750 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (458,8,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (459,9,6,'$ 10 Online: Help CiviCRM','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (460,10,6,'$ 250 Online: Help CiviCRM','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (461,11,6,'Â¥ 500 ','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (462,12,6,'$ 50 Online: Save the Penguins','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (463,13,6,'$ 50 ','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (464,14,6,'$ 50 ','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (465,15,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (466,16,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (467,17,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (468,18,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (469,19,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (470,20,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (471,21,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (472,22,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (473,23,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (474,24,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (475,25,6,'$ 25 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (476,26,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (477,27,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (478,28,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (479,29,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (480,30,6,'$ 10 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (481,31,6,'€ 5 Recurring contribution','2023-12-07 01:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (482,1,7,'General','2023-10-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (483,2,7,'Student','2023-10-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (484,3,7,'General','2023-10-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (485,4,7,'Student','2023-10-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (486,5,7,'Student','2022-10-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (487,6,7,'Student','2023-10-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (488,7,7,'General','2023-10-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (489,8,7,'Student','2023-09-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (490,9,7,'General','2023-09-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (491,10,7,'General','2021-07-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (492,11,7,'Lifetime','2023-09-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (493,12,7,'Student','2023-09-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (494,13,7,'General','2023-09-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (495,14,7,'Student','2023-09-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (496,15,7,'General','2021-06-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (497,16,7,'Student','2023-09-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (498,17,7,'General','2023-09-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (499,18,7,'Student','2023-09-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (500,19,7,'General','2023-09-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (501,20,7,'General','2021-05-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (502,21,7,'General','2023-09-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (503,22,7,'Lifetime','2023-09-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (504,23,7,'General','2023-09-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (505,24,7,'Student','2023-09-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (506,25,7,'General','2021-03-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (507,26,7,'Student','2023-09-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (508,27,7,'General','2023-09-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (509,28,7,'Student','2023-09-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (510,29,7,'General','2023-09-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (511,30,7,'Student','2022-09-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (513,33,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (515,35,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (516,36,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (517,37,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (519,39,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (523,43,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (525,45,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (528,48,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (530,50,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (531,51,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (532,52,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (534,54,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (536,56,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (538,58,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (540,60,6,'$ 100.00 - General Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (541,61,6,'$ 50.00 - Student Membership: Offline signup','2023-10-07 01:51:39',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:39','2023-10-07 01:51:39'), - (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (602,72,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (605,75,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (606,76,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (608,78,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (609,79,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (614,84,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (616,86,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (617,87,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (620,90,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (621,91,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (625,95,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (627,97,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (628,98,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (629,99,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (630,100,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (632,102,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (636,106,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (640,110,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (641,111,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'), - (642,112,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-07 01:51:40',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-07 01:51:40','2023-10-07 01:51:40'); + (1,NULL,56,'Subject for Interview','2023-01-28 07:18:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (2,NULL,2,'Subject for Phone Call','2022-11-20 11:02:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (3,NULL,56,'Subject for Interview','2023-08-12 12:22:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (4,NULL,9,'Subject for Tell a Friend','2023-04-08 21:35:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (5,NULL,56,'Subject for Interview','2023-02-10 15:32:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (6,NULL,22,'Subject for Print/Merge Document','2023-08-18 18:03:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (7,NULL,2,'Subject for Phone Call','2023-07-04 18:36:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (8,NULL,1,'Subject for Meeting','2023-01-10 01:20:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (9,NULL,56,'Subject for Interview','2023-07-13 16:12:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (10,NULL,9,'Subject for Tell a Friend','2023-01-03 03:32:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (11,NULL,56,'Subject for Interview','2023-09-24 11:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (12,NULL,22,'Subject for Print/Merge Document','2023-04-05 10:50:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (13,NULL,2,'Subject for Phone Call','2023-01-11 06:46:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (14,NULL,2,'Subject for Phone Call','2023-04-24 05:54:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (15,NULL,9,'Subject for Tell a Friend','2023-01-27 11:35:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (16,NULL,22,'Subject for Print/Merge Document','2023-05-11 06:04:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (17,NULL,56,'Subject for Interview','2023-01-07 04:56:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (18,NULL,9,'Subject for Tell a Friend','2023-07-25 18:23:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (19,NULL,22,'Subject for Print/Merge Document','2023-08-11 13:34:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (20,NULL,56,'Subject for Interview','2023-07-18 06:51:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (21,NULL,9,'Subject for Tell a Friend','2023-05-13 21:41:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (22,NULL,2,'Subject for Phone Call','2023-02-01 08:50:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (23,NULL,22,'Subject for Print/Merge Document','2022-11-10 01:22:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (24,NULL,2,'Subject for Phone Call','2022-12-25 06:38:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (25,NULL,22,'Subject for Print/Merge Document','2022-11-17 02:00:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (26,NULL,1,'Subject for Meeting','2023-04-18 02:08:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (27,NULL,1,'Subject for Meeting','2022-12-24 01:00:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (28,NULL,56,'Subject for Interview','2022-10-25 16:52:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (29,NULL,1,'Subject for Meeting','2023-03-28 07:38:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (30,NULL,1,'Subject for Meeting','2023-02-02 08:32:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (31,NULL,22,'Subject for Print/Merge Document','2023-04-10 19:32:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (32,NULL,2,'Subject for Phone Call','2023-06-04 02:52:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (33,NULL,56,'Subject for Interview','2023-08-05 07:39:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (34,NULL,56,'Subject for Interview','2023-08-15 07:38:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (35,NULL,9,'Subject for Tell a Friend','2022-12-10 19:32:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (36,NULL,1,'Subject for Meeting','2023-04-27 05:55:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (37,NULL,56,'Subject for Interview','2023-05-20 09:05:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (38,NULL,56,'Subject for Interview','2023-08-18 15:55:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (39,NULL,1,'Subject for Meeting','2023-07-11 19:34:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (40,NULL,56,'Subject for Interview','2023-06-02 18:40:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (41,NULL,1,'Subject for Meeting','2023-04-13 14:53:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (42,NULL,56,'Subject for Interview','2023-03-28 17:34:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (43,NULL,1,'Subject for Meeting','2023-04-05 05:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (44,NULL,9,'Subject for Tell a Friend','2023-07-06 13:57:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (45,NULL,9,'Subject for Tell a Friend','2023-01-31 09:04:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (46,NULL,9,'Subject for Tell a Friend','2023-04-25 16:17:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (47,NULL,9,'Subject for Tell a Friend','2023-05-30 05:53:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (48,NULL,56,'Subject for Interview','2023-10-10 17:41:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (49,NULL,9,'Subject for Tell a Friend','2023-07-17 21:39:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (50,NULL,56,'Subject for Interview','2022-11-25 16:55:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (51,NULL,2,'Subject for Phone Call','2023-03-11 04:03:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (52,NULL,2,'Subject for Phone Call','2023-04-05 07:44:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (53,NULL,56,'Subject for Interview','2022-11-18 19:31:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (54,NULL,2,'Subject for Phone Call','2023-09-24 16:24:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (55,NULL,56,'Subject for Interview','2023-03-19 13:52:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (56,NULL,2,'Subject for Phone Call','2023-08-05 08:56:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (57,NULL,1,'Subject for Meeting','2022-11-24 17:31:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (58,NULL,1,'Subject for Meeting','2023-06-19 05:08:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (59,NULL,9,'Subject for Tell a Friend','2023-04-30 14:26:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (60,NULL,9,'Subject for Tell a Friend','2023-01-06 06:12:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (61,NULL,22,'Subject for Print/Merge Document','2023-07-06 00:30:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (62,NULL,22,'Subject for Print/Merge Document','2023-04-15 07:38:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (63,NULL,1,'Subject for Meeting','2023-10-05 10:45:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (64,NULL,56,'Subject for Interview','2022-12-05 10:31:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (65,NULL,22,'Subject for Print/Merge Document','2023-07-24 15:11:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (66,NULL,9,'Subject for Tell a Friend','2023-03-18 19:51:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (67,NULL,56,'Subject for Interview','2022-11-02 04:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (68,NULL,1,'Subject for Meeting','2023-03-30 17:13:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (69,NULL,9,'Subject for Tell a Friend','2022-10-29 01:38:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (70,NULL,9,'Subject for Tell a Friend','2023-06-16 20:18:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (71,NULL,56,'Subject for Interview','2023-07-07 21:11:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (72,NULL,2,'Subject for Phone Call','2023-07-20 12:28:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (73,NULL,1,'Subject for Meeting','2022-11-20 11:28:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (74,NULL,1,'Subject for Meeting','2023-08-22 10:20:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (75,NULL,56,'Subject for Interview','2023-05-30 15:20:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (76,NULL,9,'Subject for Tell a Friend','2023-01-20 20:14:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (77,NULL,22,'Subject for Print/Merge Document','2023-02-22 22:30:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (78,NULL,2,'Subject for Phone Call','2023-04-27 15:51:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (79,NULL,22,'Subject for Print/Merge Document','2023-04-12 11:36:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (80,NULL,2,'Subject for Phone Call','2023-01-13 18:53:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (81,NULL,9,'Subject for Tell a Friend','2022-12-06 12:21:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (82,NULL,2,'Subject for Phone Call','2023-07-11 09:11:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (83,NULL,1,'Subject for Meeting','2023-01-10 18:04:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (84,NULL,9,'Subject for Tell a Friend','2023-02-23 03:27:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (85,NULL,1,'Subject for Meeting','2022-10-20 07:12:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (86,NULL,22,'Subject for Print/Merge Document','2023-09-20 09:49:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (87,NULL,9,'Subject for Tell a Friend','2023-07-02 01:53:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (88,NULL,1,'Subject for Meeting','2023-02-23 15:55:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (89,NULL,9,'Subject for Tell a Friend','2023-09-30 05:08:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (90,NULL,2,'Subject for Phone Call','2023-06-21 10:13:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (91,NULL,9,'Subject for Tell a Friend','2023-06-07 10:29:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (92,NULL,56,'Subject for Interview','2023-04-13 12:15:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (93,NULL,2,'Subject for Phone Call','2023-08-06 10:00:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (94,NULL,1,'Subject for Meeting','2023-09-02 20:56:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (95,NULL,22,'Subject for Print/Merge Document','2023-09-22 17:25:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (96,NULL,22,'Subject for Print/Merge Document','2023-06-20 22:56:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (97,NULL,9,'Subject for Tell a Friend','2023-04-07 04:20:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (98,NULL,9,'Subject for Tell a Friend','2022-12-28 20:40:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (99,NULL,22,'Subject for Print/Merge Document','2023-05-22 12:18:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (100,NULL,9,'Subject for Tell a Friend','2023-04-22 12:57:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (101,NULL,9,'Subject for Tell a Friend','2023-07-30 02:38:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (102,NULL,1,'Subject for Meeting','2023-02-05 15:02:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (103,NULL,2,'Subject for Phone Call','2023-10-05 19:01:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (104,NULL,22,'Subject for Print/Merge Document','2022-12-15 14:17:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (105,NULL,56,'Subject for Interview','2023-08-06 05:49:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (106,NULL,1,'Subject for Meeting','2023-06-28 12:13:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (107,NULL,9,'Subject for Tell a Friend','2023-06-18 05:01:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (108,NULL,2,'Subject for Phone Call','2023-01-17 20:31:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (109,NULL,2,'Subject for Phone Call','2023-02-22 07:30:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (110,NULL,1,'Subject for Meeting','2023-01-12 22:14:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (111,NULL,2,'Subject for Phone Call','2022-10-27 21:05:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (112,NULL,9,'Subject for Tell a Friend','2022-11-24 01:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (113,NULL,22,'Subject for Print/Merge Document','2023-08-23 04:50:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (114,NULL,22,'Subject for Print/Merge Document','2023-06-10 11:07:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (115,NULL,1,'Subject for Meeting','2022-12-29 18:56:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (116,NULL,56,'Subject for Interview','2023-07-09 19:12:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (117,NULL,2,'Subject for Phone Call','2023-03-31 20:50:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (118,NULL,22,'Subject for Print/Merge Document','2023-06-11 15:03:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (119,NULL,2,'Subject for Phone Call','2023-09-15 06:13:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (120,NULL,56,'Subject for Interview','2022-11-22 03:03:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (121,NULL,9,'Subject for Tell a Friend','2023-04-12 15:52:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (122,NULL,9,'Subject for Tell a Friend','2023-09-15 22:56:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (123,NULL,1,'Subject for Meeting','2022-11-13 13:46:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (124,NULL,9,'Subject for Tell a Friend','2022-11-28 15:24:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (125,NULL,22,'Subject for Print/Merge Document','2022-10-29 13:57:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (126,NULL,1,'Subject for Meeting','2023-01-18 09:48:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (127,NULL,9,'Subject for Tell a Friend','2023-08-10 19:20:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (128,NULL,22,'Subject for Print/Merge Document','2023-01-17 11:26:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (129,NULL,56,'Subject for Interview','2023-06-23 12:17:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (130,NULL,2,'Subject for Phone Call','2022-12-02 03:08:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (131,NULL,2,'Subject for Phone Call','2022-12-29 13:20:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (132,NULL,9,'Subject for Tell a Friend','2023-08-02 20:11:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (133,NULL,1,'Subject for Meeting','2023-03-22 16:57:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (134,NULL,9,'Subject for Tell a Friend','2023-04-17 15:37:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (135,NULL,1,'Subject for Meeting','2023-03-08 17:15:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (136,NULL,22,'Subject for Print/Merge Document','2023-10-11 21:48:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (137,NULL,1,'Subject for Meeting','2022-11-17 22:03:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (138,NULL,1,'Subject for Meeting','2022-11-04 12:09:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (139,NULL,9,'Subject for Tell a Friend','2023-09-14 02:11:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (140,NULL,9,'Subject for Tell a Friend','2023-06-28 15:21:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (141,NULL,9,'Subject for Tell a Friend','2023-04-16 14:15:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (142,NULL,2,'Subject for Phone Call','2023-01-16 19:23:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (143,NULL,2,'Subject for Phone Call','2023-04-28 06:08:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (144,NULL,22,'Subject for Print/Merge Document','2023-04-13 21:34:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (145,NULL,22,'Subject for Print/Merge Document','2023-02-03 15:37:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (146,NULL,56,'Subject for Interview','2023-10-13 19:47:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (147,NULL,2,'Subject for Phone Call','2022-10-31 05:23:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (148,NULL,1,'Subject for Meeting','2022-12-25 10:29:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (149,NULL,9,'Subject for Tell a Friend','2023-05-05 12:11:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (150,NULL,56,'Subject for Interview','2023-02-05 16:40:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (151,NULL,22,'Subject for Print/Merge Document','2023-04-30 21:22:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (152,NULL,9,'Subject for Tell a Friend','2022-11-27 00:25:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (153,NULL,9,'Subject for Tell a Friend','2023-03-15 12:18:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (154,NULL,56,'Subject for Interview','2023-08-09 21:15:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (155,NULL,56,'Subject for Interview','2023-06-11 02:19:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (156,NULL,1,'Subject for Meeting','2023-08-12 20:43:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (157,NULL,9,'Subject for Tell a Friend','2023-04-18 10:13:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (158,NULL,22,'Subject for Print/Merge Document','2023-10-11 14:43:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (159,NULL,22,'Subject for Print/Merge Document','2022-12-18 18:44:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (160,NULL,56,'Subject for Interview','2023-01-29 07:45:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (161,NULL,1,'Subject for Meeting','2023-03-28 17:25:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (162,NULL,56,'Subject for Interview','2023-06-06 05:10:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (163,NULL,56,'Subject for Interview','2023-05-31 15:47:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (164,NULL,1,'Subject for Meeting','2023-09-09 23:05:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (165,NULL,2,'Subject for Phone Call','2023-01-18 21:13:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (166,NULL,9,'Subject for Tell a Friend','2022-11-07 03:35:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (167,NULL,1,'Subject for Meeting','2023-09-27 21:37:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (168,NULL,22,'Subject for Print/Merge Document','2023-03-20 19:33:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (169,NULL,1,'Subject for Meeting','2023-05-22 07:09:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (170,NULL,1,'Subject for Meeting','2023-01-31 20:37:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (171,NULL,56,'Subject for Interview','2023-03-27 22:15:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (172,NULL,56,'Subject for Interview','2023-09-10 00:35:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (173,NULL,2,'Subject for Phone Call','2023-01-18 10:22:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (174,NULL,2,'Subject for Phone Call','2023-09-30 10:05:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (175,NULL,22,'Subject for Print/Merge Document','2023-08-04 09:39:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (176,NULL,2,'Subject for Phone Call','2023-10-04 22:34:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (177,NULL,9,'Subject for Tell a Friend','2023-01-18 01:38:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (178,NULL,1,'Subject for Meeting','2023-01-13 03:05:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (179,NULL,1,'Subject for Meeting','2023-02-27 08:32:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (180,NULL,22,'Subject for Print/Merge Document','2023-03-22 06:23:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (181,NULL,22,'Subject for Print/Merge Document','2023-05-28 17:07:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (182,NULL,9,'Subject for Tell a Friend','2023-06-29 04:23:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (183,NULL,9,'Subject for Tell a Friend','2023-03-10 17:42:52',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (184,NULL,1,'Subject for Meeting','2023-07-21 14:33:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (185,NULL,2,'Subject for Phone Call','2023-08-25 09:42:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (186,NULL,22,'Subject for Print/Merge Document','2023-06-09 21:22:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (187,NULL,2,'Subject for Phone Call','2023-02-17 05:11:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (188,NULL,22,'Subject for Print/Merge Document','2023-01-20 14:56:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (189,NULL,2,'Subject for Phone Call','2023-02-18 04:16:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (190,NULL,56,'Subject for Interview','2023-09-15 04:51:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (191,NULL,56,'Subject for Interview','2023-05-18 10:15:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (192,NULL,2,'Subject for Phone Call','2023-08-24 14:18:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (193,NULL,56,'Subject for Interview','2023-07-24 17:06:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (194,NULL,22,'Subject for Print/Merge Document','2023-01-11 22:31:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (195,NULL,1,'Subject for Meeting','2023-07-20 21:50:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (196,NULL,2,'Subject for Phone Call','2022-12-23 09:49:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (197,NULL,1,'Subject for Meeting','2023-04-03 03:48:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (198,NULL,22,'Subject for Print/Merge Document','2023-10-05 00:47:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (199,NULL,2,'Subject for Phone Call','2022-12-21 22:57:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (200,NULL,1,'Subject for Meeting','2023-03-18 18:10:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (201,NULL,22,'Subject for Print/Merge Document','2022-11-03 12:41:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (202,NULL,1,'Subject for Meeting','2023-04-12 11:44:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (203,NULL,9,'Subject for Tell a Friend','2022-12-11 19:13:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (204,NULL,2,'Subject for Phone Call','2023-08-30 16:45:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (205,NULL,1,'Subject for Meeting','2022-12-09 17:17:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (206,NULL,56,'Subject for Interview','2023-04-19 10:23:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (207,NULL,1,'Subject for Meeting','2023-10-11 04:54:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (208,NULL,2,'Subject for Phone Call','2023-03-21 08:37:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (209,NULL,22,'Subject for Print/Merge Document','2023-10-19 11:38:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (210,NULL,9,'Subject for Tell a Friend','2023-09-04 13:22:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (211,NULL,56,'Subject for Interview','2022-11-27 20:44:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (212,NULL,9,'Subject for Tell a Friend','2023-07-18 23:16:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (213,NULL,9,'Subject for Tell a Friend','2023-03-09 01:27:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (214,NULL,22,'Subject for Print/Merge Document','2023-07-14 10:44:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (215,NULL,56,'Subject for Interview','2023-02-14 13:52:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (216,NULL,2,'Subject for Phone Call','2023-05-14 01:19:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (217,NULL,9,'Subject for Tell a Friend','2023-08-20 00:24:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (218,NULL,2,'Subject for Phone Call','2023-10-08 12:40:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (219,NULL,22,'Subject for Print/Merge Document','2023-09-27 08:07:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (220,NULL,22,'Subject for Print/Merge Document','2023-06-15 22:18:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (221,NULL,2,'Subject for Phone Call','2023-07-26 10:30:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (222,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:47:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (223,NULL,56,'Subject for Interview','2023-06-06 11:19:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (224,NULL,2,'Subject for Phone Call','2023-09-28 21:58:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (225,NULL,2,'Subject for Phone Call','2023-05-01 14:42:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (226,NULL,2,'Subject for Phone Call','2023-04-27 15:47:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (227,NULL,2,'Subject for Phone Call','2023-07-15 16:21:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (228,NULL,22,'Subject for Print/Merge Document','2022-12-18 21:57:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (229,NULL,2,'Subject for Phone Call','2023-03-30 16:21:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (230,NULL,56,'Subject for Interview','2023-05-17 20:25:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (231,NULL,2,'Subject for Phone Call','2023-07-01 09:12:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (232,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:23:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (233,NULL,2,'Subject for Phone Call','2023-03-13 01:16:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (234,NULL,2,'Subject for Phone Call','2023-03-14 01:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (235,NULL,22,'Subject for Print/Merge Document','2022-11-23 06:12:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (236,NULL,22,'Subject for Print/Merge Document','2022-12-07 23:01:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (237,NULL,2,'Subject for Phone Call','2023-01-15 06:14:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (238,NULL,56,'Subject for Interview','2023-01-16 08:23:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (239,NULL,9,'Subject for Tell a Friend','2022-12-07 10:43:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (240,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:39:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (241,NULL,2,'Subject for Phone Call','2023-10-10 02:46:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (242,NULL,2,'Subject for Phone Call','2023-05-18 21:32:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (243,NULL,56,'Subject for Interview','2023-10-13 02:52:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (244,NULL,9,'Subject for Tell a Friend','2023-06-27 21:02:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (245,NULL,22,'Subject for Print/Merge Document','2023-04-12 21:44:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (246,NULL,9,'Subject for Tell a Friend','2023-10-14 10:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (247,NULL,1,'Subject for Meeting','2023-04-03 17:03:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (248,NULL,56,'Subject for Interview','2023-01-22 22:01:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (249,NULL,1,'Subject for Meeting','2023-04-26 08:05:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (250,NULL,56,'Subject for Interview','2023-08-11 04:25:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (251,NULL,1,'Subject for Meeting','2022-12-30 21:51:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (252,NULL,1,'Subject for Meeting','2023-01-25 10:14:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (253,NULL,2,'Subject for Phone Call','2022-11-01 18:09:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (254,NULL,56,'Subject for Interview','2023-06-12 16:29:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (255,NULL,22,'Subject for Print/Merge Document','2023-02-28 03:19:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (256,NULL,2,'Subject for Phone Call','2022-10-21 00:42:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (257,NULL,56,'Subject for Interview','2023-07-14 18:30:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (258,NULL,1,'Subject for Meeting','2022-10-25 15:02:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (259,NULL,2,'Subject for Phone Call','2023-02-26 01:39:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (260,NULL,22,'Subject for Print/Merge Document','2023-09-17 11:38:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (261,NULL,56,'Subject for Interview','2023-04-16 00:07:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (262,NULL,9,'Subject for Tell a Friend','2023-08-28 14:11:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (263,NULL,2,'Subject for Phone Call','2022-12-27 01:04:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (264,NULL,1,'Subject for Meeting','2023-02-27 01:06:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (265,NULL,22,'Subject for Print/Merge Document','2023-09-12 12:49:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (266,NULL,1,'Subject for Meeting','2023-08-30 05:46:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (267,NULL,1,'Subject for Meeting','2023-01-01 15:56:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (268,NULL,56,'Subject for Interview','2023-06-08 03:14:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (269,NULL,22,'Subject for Print/Merge Document','2023-01-31 08:43:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (270,NULL,2,'Subject for Phone Call','2023-08-19 09:42:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (271,NULL,1,'Subject for Meeting','2023-04-12 17:16:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (272,NULL,1,'Subject for Meeting','2023-03-17 07:33:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (273,NULL,22,'Subject for Print/Merge Document','2023-08-05 04:42:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (274,NULL,2,'Subject for Phone Call','2023-02-05 15:55:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (275,NULL,56,'Subject for Interview','2023-06-27 05:26:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (276,NULL,22,'Subject for Print/Merge Document','2022-11-21 12:00:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (277,NULL,56,'Subject for Interview','2022-12-22 19:24:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (278,NULL,9,'Subject for Tell a Friend','2023-02-25 12:54:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (279,NULL,56,'Subject for Interview','2023-03-01 22:20:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (280,NULL,56,'Subject for Interview','2023-03-23 11:08:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (281,NULL,22,'Subject for Print/Merge Document','2023-03-19 15:41:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (282,NULL,2,'Subject for Phone Call','2023-06-02 15:40:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (283,NULL,56,'Subject for Interview','2023-09-06 16:30:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (284,NULL,22,'Subject for Print/Merge Document','2023-10-10 16:32:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (285,NULL,9,'Subject for Tell a Friend','2023-02-28 19:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (286,NULL,22,'Subject for Print/Merge Document','2022-12-26 02:09:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (287,NULL,22,'Subject for Print/Merge Document','2023-07-13 21:30:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (288,NULL,9,'Subject for Tell a Friend','2023-07-16 01:07:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (289,NULL,1,'Subject for Meeting','2023-08-13 21:27:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (290,NULL,22,'Subject for Print/Merge Document','2023-03-02 19:56:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (291,NULL,2,'Subject for Phone Call','2023-01-01 14:09:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (292,NULL,22,'Subject for Print/Merge Document','2023-10-16 22:20:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (293,NULL,9,'Subject for Tell a Friend','2023-05-05 13:31:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (294,NULL,2,'Subject for Phone Call','2023-10-03 22:00:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (295,NULL,9,'Subject for Tell a Friend','2023-01-11 13:50:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (296,NULL,56,'Subject for Interview','2023-01-16 19:28:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (297,NULL,22,'Subject for Print/Merge Document','2023-06-15 12:50:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (298,NULL,2,'Subject for Phone Call','2023-04-29 20:32:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (299,NULL,2,'Subject for Phone Call','2023-10-15 18:59:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (300,NULL,56,'Subject for Interview','2023-10-13 22:52:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (301,NULL,9,'Subject for Tell a Friend','2023-09-27 00:31:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (302,NULL,9,'Subject for Tell a Friend','2023-07-15 16:34:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (303,NULL,1,'Subject for Meeting','2023-04-28 02:22:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (304,NULL,1,'Subject for Meeting','2023-10-03 04:09:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (305,NULL,22,'Subject for Print/Merge Document','2023-09-21 21:04:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (306,NULL,2,'Subject for Phone Call','2023-06-28 08:32:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (307,NULL,2,'Subject for Phone Call','2023-08-14 03:30:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (308,NULL,1,'Subject for Meeting','2023-08-24 07:35:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (309,NULL,1,'Subject for Meeting','2023-03-31 17:30:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (310,NULL,9,'Subject for Tell a Friend','2023-03-18 03:05:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (311,NULL,56,'Subject for Interview','2023-09-14 11:25:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (312,NULL,1,'Subject for Meeting','2022-12-03 09:06:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (313,NULL,2,'Subject for Phone Call','2022-11-10 18:33:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (314,NULL,1,'Subject for Meeting','2023-06-24 17:25:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (315,NULL,9,'Subject for Tell a Friend','2023-04-16 13:23:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (316,NULL,1,'Subject for Meeting','2023-01-08 21:38:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (317,NULL,22,'Subject for Print/Merge Document','2023-09-15 04:05:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (318,NULL,22,'Subject for Print/Merge Document','2022-11-05 22:37:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (319,NULL,56,'Subject for Interview','2023-02-18 23:04:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (320,NULL,2,'Subject for Phone Call','2023-04-13 05:04:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (321,NULL,1,'Subject for Meeting','2022-12-23 14:36:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (322,NULL,2,'Subject for Phone Call','2023-03-27 13:06:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (323,NULL,22,'Subject for Print/Merge Document','2023-10-13 13:41:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (324,NULL,1,'Subject for Meeting','2022-12-18 06:44:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (325,NULL,9,'Subject for Tell a Friend','2023-09-27 09:17:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (326,NULL,2,'Subject for Phone Call','2022-11-25 00:12:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (327,NULL,9,'Subject for Tell a Friend','2023-05-30 22:40:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (328,NULL,22,'Subject for Print/Merge Document','2023-03-04 08:35:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (329,NULL,2,'Subject for Phone Call','2023-07-17 20:37:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (330,NULL,2,'Subject for Phone Call','2023-05-18 15:25:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (331,NULL,1,'Subject for Meeting','2023-08-28 20:59:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (332,NULL,56,'Subject for Interview','2023-02-02 10:27:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (333,NULL,2,'Subject for Phone Call','2023-05-08 12:15:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (334,NULL,22,'Subject for Print/Merge Document','2023-07-05 23:57:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (335,NULL,9,'Subject for Tell a Friend','2023-04-22 00:38:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (336,NULL,22,'Subject for Print/Merge Document','2023-09-18 03:30:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (337,NULL,1,'Subject for Meeting','2023-05-27 13:34:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (338,NULL,1,'Subject for Meeting','2023-10-07 12:37:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (339,NULL,56,'Subject for Interview','2023-08-19 11:51:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (340,NULL,22,'Subject for Print/Merge Document','2022-12-07 15:32:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (341,NULL,56,'Subject for Interview','2022-12-26 16:49:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (342,NULL,1,'Subject for Meeting','2023-10-17 16:01:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (343,NULL,1,'Subject for Meeting','2023-03-08 02:19:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (344,NULL,1,'Subject for Meeting','2022-12-03 10:41:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (345,NULL,56,'Subject for Interview','2023-07-17 02:33:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (346,NULL,9,'Subject for Tell a Friend','2023-08-09 00:03:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (347,NULL,22,'Subject for Print/Merge Document','2022-12-23 20:14:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (348,NULL,2,'Subject for Phone Call','2022-11-26 17:02:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (349,NULL,1,'Subject for Meeting','2023-01-06 13:45:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (350,NULL,9,'Subject for Tell a Friend','2023-01-07 04:38:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (351,NULL,9,'Subject for Tell a Friend','2022-11-17 20:19:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (352,NULL,1,'Subject for Meeting','2023-06-13 01:46:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (353,NULL,9,'Subject for Tell a Friend','2023-07-15 01:01:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (354,NULL,22,'Subject for Print/Merge Document','2022-11-26 12:28:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (355,NULL,56,'Subject for Interview','2023-09-24 01:51:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (356,NULL,56,'Subject for Interview','2023-03-09 21:25:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (357,NULL,56,'Subject for Interview','2023-08-31 17:13:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (358,NULL,9,'Subject for Tell a Friend','2023-01-25 06:43:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (359,NULL,9,'Subject for Tell a Friend','2023-07-09 15:00:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (360,NULL,2,'Subject for Phone Call','2023-03-24 13:07:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (361,NULL,2,'Subject for Phone Call','2023-01-06 00:44:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (362,NULL,22,'Subject for Print/Merge Document','2023-02-28 14:22:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (363,NULL,1,'Subject for Meeting','2023-07-16 22:37:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (364,NULL,2,'Subject for Phone Call','2023-02-27 03:37:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (365,NULL,9,'Subject for Tell a Friend','2023-03-09 07:05:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (366,NULL,9,'Subject for Tell a Friend','2022-11-25 06:45:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (367,NULL,56,'Subject for Interview','2022-10-23 21:44:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (368,NULL,56,'Subject for Interview','2023-02-15 20:58:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (369,NULL,2,'Subject for Phone Call','2023-07-05 12:36:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (370,NULL,56,'Subject for Interview','2023-01-30 04:14:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (371,NULL,56,'Subject for Interview','2023-02-04 00:39:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (372,NULL,2,'Subject for Phone Call','2023-01-22 17:08:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (373,NULL,56,'Subject for Interview','2023-09-08 17:44:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (374,NULL,2,'Subject for Phone Call','2023-06-08 10:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (375,NULL,9,'Subject for Tell a Friend','2023-05-22 12:06:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (376,NULL,1,'Subject for Meeting','2023-06-26 15:56:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (377,NULL,56,'Subject for Interview','2023-04-09 02:38:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (378,NULL,1,'Subject for Meeting','2023-06-13 08:39:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (379,NULL,9,'Subject for Tell a Friend','2023-10-04 01:52:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (380,NULL,2,'Subject for Phone Call','2023-04-22 17:07:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (381,NULL,1,'Subject for Meeting','2023-04-11 06:02:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (382,NULL,9,'Subject for Tell a Friend','2023-08-31 12:23:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (383,NULL,1,'Subject for Meeting','2023-05-13 06:14:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (384,NULL,56,'Subject for Interview','2022-11-18 20:29:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (385,NULL,1,'Subject for Meeting','2022-11-25 17:43:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (386,NULL,56,'Subject for Interview','2023-03-11 23:21:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (387,NULL,22,'Subject for Print/Merge Document','2023-08-14 20:54:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (388,NULL,9,'Subject for Tell a Friend','2023-04-29 19:20:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (389,NULL,56,'Subject for Interview','2022-11-08 09:06:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (390,NULL,56,'Subject for Interview','2022-11-06 00:01:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (391,NULL,1,'Subject for Meeting','2023-06-22 20:01:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (392,NULL,2,'Subject for Phone Call','2022-11-11 00:49:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (393,NULL,56,'Subject for Interview','2023-01-13 17:40:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (394,NULL,9,'Subject for Tell a Friend','2022-10-24 14:27:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (395,NULL,56,'Subject for Interview','2023-04-13 12:59:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (396,NULL,9,'Subject for Tell a Friend','2022-11-08 09:12:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (397,NULL,9,'Subject for Tell a Friend','2023-09-11 05:18:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (398,NULL,2,'Subject for Phone Call','2023-01-01 21:32:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (399,NULL,1,'Subject for Meeting','2023-08-14 15:06:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (400,NULL,1,'Subject for Meeting','2023-08-27 23:03:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (401,NULL,22,'Subject for Print/Merge Document','2023-08-01 13:19:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (402,NULL,22,'Subject for Print/Merge Document','2023-05-08 04:21:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (403,NULL,2,'Subject for Phone Call','2023-10-06 13:00:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (404,NULL,9,'Subject for Tell a Friend','2023-09-26 09:13:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (405,NULL,2,'Subject for Phone Call','2022-11-15 13:35:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (406,NULL,56,'Subject for Interview','2023-08-25 03:26:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (407,NULL,2,'Subject for Phone Call','2022-12-08 23:34:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (408,NULL,2,'Subject for Phone Call','2023-05-06 20:50:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (409,NULL,2,'Subject for Phone Call','2023-09-24 15:02:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (410,NULL,56,'Subject for Interview','2023-04-21 22:45:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (411,NULL,2,'Subject for Phone Call','2022-11-01 08:39:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (412,NULL,2,'Subject for Phone Call','2022-12-07 11:45:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (413,NULL,2,'Subject for Phone Call','2023-04-15 21:27:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (414,NULL,9,'Subject for Tell a Friend','2023-07-27 13:46:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (415,NULL,9,'Subject for Tell a Friend','2022-12-12 21:57:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (416,NULL,1,'Subject for Meeting','2023-03-20 22:51:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (417,NULL,2,'Subject for Phone Call','2023-01-05 11:13:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (418,NULL,1,'Subject for Meeting','2023-02-26 07:15:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (419,NULL,9,'Subject for Tell a Friend','2023-09-06 21:13:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (420,NULL,56,'Subject for Interview','2023-08-04 14:49:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (421,NULL,22,'Subject for Print/Merge Document','2022-12-18 22:31:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (422,NULL,9,'Subject for Tell a Friend','2023-05-05 15:54:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (423,NULL,22,'Subject for Print/Merge Document','2023-10-06 16:01:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (424,NULL,22,'Subject for Print/Merge Document','2023-09-17 17:41:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (425,NULL,1,'Subject for Meeting','2023-07-27 15:31:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (426,NULL,2,'Subject for Phone Call','2022-12-29 04:01:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (427,NULL,2,'Subject for Phone Call','2023-03-18 03:08:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (428,NULL,1,'Subject for Meeting','2023-01-07 19:33:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (429,NULL,9,'Subject for Tell a Friend','2023-02-09 06:51:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (430,NULL,1,'Subject for Meeting','2023-03-21 08:02:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (431,NULL,9,'Subject for Tell a Friend','2023-08-26 02:15:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (432,NULL,22,'Subject for Print/Merge Document','2023-01-24 03:44:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (433,NULL,56,'Subject for Interview','2023-06-28 04:52:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (434,NULL,22,'Subject for Print/Merge Document','2023-07-01 19:22:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (435,NULL,1,'Subject for Meeting','2022-12-22 01:36:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (436,NULL,56,'Subject for Interview','2023-09-05 08:47:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (437,NULL,22,'Subject for Print/Merge Document','2023-04-26 21:27:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (438,NULL,9,'Subject for Tell a Friend','2023-04-27 17:26:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (439,NULL,22,'Subject for Print/Merge Document','2022-12-15 06:05:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (440,NULL,1,'Subject for Meeting','2023-08-09 02:06:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (441,NULL,2,'Subject for Phone Call','2023-08-29 10:06:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (442,NULL,1,'Subject for Meeting','2023-09-28 05:02:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (443,NULL,9,'Subject for Tell a Friend','2023-02-04 21:14:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (444,NULL,56,'Subject for Interview','2023-09-05 14:01:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (445,NULL,1,'Subject for Meeting','2023-09-19 00:06:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (446,NULL,1,'Subject for Meeting','2023-01-14 07:13:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (447,NULL,2,'Subject for Phone Call','2022-12-15 22:57:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (448,NULL,9,'Subject for Tell a Friend','2023-06-25 08:38:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (449,NULL,56,'Subject for Interview','2023-05-30 00:30:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (450,NULL,22,'Subject for Print/Merge Document','2023-02-23 12:29:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (451,1,6,'$ 125 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (452,2,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (453,3,6,'£ 25 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (454,4,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (455,5,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (456,6,6,'$ 500 April Mailer 1','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (457,7,6,'$ 1750 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (458,8,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (459,9,6,'$ 10 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (460,10,6,'$ 250 Online: Help CiviCRM','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (461,11,6,'Â¥ 500 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (462,12,6,'$ 50 Online: Save the Penguins','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (463,13,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (464,14,6,'$ 50 ','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (465,15,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (466,16,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (467,17,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (468,18,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (469,19,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (470,20,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (471,21,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (472,22,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (473,23,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (474,24,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (475,25,6,'$ 25 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (476,26,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (477,27,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (478,28,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (479,29,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (480,30,6,'$ 10 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (481,31,6,'€ 5 Recurring contribution','2023-12-19 14:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (482,1,7,'General','2023-10-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (483,2,7,'Student','2023-10-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (484,3,7,'General','2023-10-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (485,4,7,'Student','2023-10-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (486,5,7,'Student','2022-10-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (487,6,7,'Student','2023-10-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (488,7,7,'General','2023-10-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (489,8,7,'Student','2023-10-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (490,9,7,'General','2023-10-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (491,10,7,'Student','2022-10-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (492,11,7,'Lifetime','2023-10-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (493,12,7,'Student','2023-10-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (494,13,7,'General','2023-10-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (495,14,7,'Student','2023-10-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (496,15,7,'General','2021-06-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (497,16,7,'Student','2023-10-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (498,17,7,'General','2023-10-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (499,18,7,'Student','2023-10-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (500,19,7,'General','2023-10-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (501,20,7,'General','2021-05-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (502,21,7,'General','2023-09-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (503,22,7,'Lifetime','2023-09-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (504,23,7,'General','2023-09-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (505,24,7,'Student','2023-09-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (506,25,7,'General','2021-04-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (507,26,7,'Student','2023-09-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (508,27,7,'General','2023-09-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (509,28,7,'Student','2023-09-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (510,29,7,'General','2023-09-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (511,30,7,'General','2021-03-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (513,33,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (515,35,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (517,37,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (519,39,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (522,42,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (523,43,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (525,45,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (528,48,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (530,50,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (532,52,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (533,53,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (534,54,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (536,56,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (538,58,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (540,60,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (541,61,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (599,69,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (600,70,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (608,78,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (616,86,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (617,87,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (618,88,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (622,92,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (626,96,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (627,97,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (628,98,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (629,99,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (630,100,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (631,101,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (632,102,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (634,104,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (635,105,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (636,106,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (637,107,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (639,109,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (642,112,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-10-19 14:22:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30'); /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */; UNLOCK TABLES; @@ -732,953 +733,964 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity_contact` WRITE; /*!40000 ALTER TABLE `civicrm_activity_contact` DISABLE KEYS */; INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES - (97,54,1,3), - (241,134,1,3), - (274,152,1,3), - (916,560,1,2), - (128,72,2,3), - (203,113,2,3), - (239,133,2,3), - (445,248,2,3), - (637,355,2,3), - (678,378,2,3), - (729,406,2,3), - (807,451,2,2), - (252,140,3,3), - (294,163,3,3), - (642,358,3,3), - (689,384,3,3), - (757,421,3,3), - (796,443,3,3), - (401,224,4,3), - (582,324,4,3), - (727,405,4,3), - (808,452,4,2), - (811,455,4,2), - (152,85,5,3), - (420,235,5,3), - (640,357,5,3), - (398,222,6,3), - (647,361,6,3), - (746,415,6,3), - (809,453,6,2), - (659,368,7,3), - (936,580,7,2), - (591,329,8,3), - (605,337,8,3), - (759,422,8,3), - (810,454,8,2), - (116,66,9,3), - (332,185,9,3), - (365,203,9,3), - (607,338,9,3), - (630,351,9,3), - (65,37,10,3), - (262,146,10,3), - (373,207,10,3), - (538,300,10,3), - (933,577,10,2), - (552,307,11,3), - (1,1,12,2), - (3,2,12,2), - (5,3,12,2), - (7,4,12,2), - (9,5,12,2), - (11,6,12,2), - (12,7,12,2), - (13,8,12,2), - (15,9,12,2), - (17,10,12,2), - (19,11,12,2), - (20,12,12,2), - (21,13,12,2), - (23,14,12,2), - (25,15,12,2), - (27,16,12,2), - (28,17,12,2), - (30,18,12,2), - (32,19,12,2), - (34,20,12,2), - (35,21,12,2), - (37,22,12,2), - (38,23,12,2), - (40,24,12,2), - (42,25,12,2), - (44,26,12,2), - (46,27,12,2), - (48,28,12,2), - (50,29,12,2), - (52,30,12,2), - (54,31,12,2), - (55,32,12,2), - (57,33,12,2), - (58,34,12,2), - (60,35,12,2), - (62,36,12,2), - (64,37,12,2), - (66,38,12,2), - (68,39,12,2), - (70,40,12,2), - (71,41,12,2), - (73,42,12,2), - (75,43,12,2), - (77,44,12,2), - (79,45,12,2), - (81,46,12,2), - (83,47,12,2), - (85,48,12,2), - (87,49,12,2), - (88,50,12,2), - (90,51,12,2), - (92,52,12,2), - (94,53,12,2), - (96,54,12,2), - (98,55,12,2), - (100,56,12,2), - (101,57,12,2), - (102,58,12,2), - (103,59,12,2), - (105,60,12,2), - (107,61,12,2), - (108,62,12,2), - (109,63,12,2), - (111,64,12,2), - (113,65,12,2), - (115,66,12,2), - (117,67,12,2), - (119,68,12,2), - (121,69,12,2), - (123,70,12,2), - (125,71,12,2), - (127,72,12,2), - (129,73,12,2), - (131,74,12,2), - (133,75,12,2), - (135,76,12,2), - (136,77,12,2), - (137,78,12,2), - (139,79,12,2), - (141,80,12,2), - (143,81,12,2), - (145,82,12,2), - (147,83,12,2), - (149,84,12,2), - (151,85,12,2), - (153,86,12,2), - (155,87,12,2), - (157,88,12,2), - (158,89,12,2), - (159,90,12,2), - (161,91,12,2), - (163,92,12,2), - (165,93,12,2), - (166,94,12,2), - (168,95,12,2), - (170,96,12,2), - (172,97,12,2), - (174,98,12,2), - (175,99,12,2), - (177,100,12,2), - (179,101,12,2), - (181,102,12,2), - (182,103,12,2), - (184,104,12,2), - (186,105,12,2), - (188,106,12,2), - (190,107,12,2), - (192,108,12,2), - (194,109,12,2), - (196,110,12,2), - (198,111,12,2), - (200,112,12,2), - (202,113,12,2), - (204,114,12,2), - (206,115,12,2), - (208,116,12,2), - (210,117,12,2), - (212,118,12,2), - (214,119,12,2), - (215,120,12,2), - (216,121,12,2), - (218,122,12,2), - (220,123,12,2), - (222,124,12,2), - (224,125,12,2), - (225,126,12,2), - (226,127,12,2), - (228,128,12,2), - (230,129,12,2), - (232,130,12,2), - (234,131,12,2), - (236,132,12,2), - (238,133,12,2), - (240,134,12,2), - (242,135,12,2), - (243,136,12,2), - (245,137,12,2), - (247,138,12,2), - (249,139,12,2), - (251,140,12,2), - (253,141,12,2), - (255,142,12,2), - (256,143,12,2), - (257,144,12,2), - (259,145,12,2), - (261,146,12,2), - (263,147,12,2), - (265,148,12,2), - (267,149,12,2), - (269,150,12,2), - (508,283,12,3), - (211,117,13,3), - (780,435,13,3), - (911,555,13,2), - (233,130,14,3), - (742,413,14,3), - (943,587,14,2), - (104,59,15,3), - (316,175,15,3), - (423,237,15,3), - (527,294,15,3), - (649,362,15,3), - (685,382,15,3), - (748,416,15,3), - (863,507,15,2), - (868,537,15,2), - (138,78,16,3), - (154,86,16,3), - (574,320,16,3), - (812,456,16,2), - (61,35,17,3), - (412,230,17,3), - (740,412,17,3), - (948,592,17,2), - (10,5,18,3), - (134,75,18,3), - (546,304,18,3), - (565,315,18,3), - (624,348,18,3), - (846,490,18,2), - (869,520,18,2), - (45,26,19,3), - (63,36,19,3), - (306,170,19,3), - (517,288,19,3), - (813,457,19,2), - (346,193,20,3), - (588,327,20,3), - (723,403,20,3), - (792,441,20,3), - (36,21,21,3), - (408,228,21,3), - (498,278,21,3), - (616,344,21,3), - (695,387,21,3), - (764,425,21,3), - (118,67,22,3), - (404,226,22,3), - (266,148,23,3), - (441,246,23,3), - (755,420,23,3), - (848,492,23,2), - (870,522,23,2), - (8,4,24,3), - (167,94,24,3), - (31,18,25,3), - (326,182,25,3), - (336,187,25,3), - (494,276,25,3), - (534,298,25,3), - (786,438,25,3), - (22,13,26,3), - (51,29,26,3), - (130,73,26,3), - (246,137,26,3), - (330,184,26,3), - (431,241,26,3), - (502,280,26,3), - (523,292,26,3), - (544,303,26,3), - (626,349,26,3), - (126,71,27,3), - (308,171,27,3), - (367,204,27,3), - (378,210,27,3), - (697,388,27,3), - (784,437,27,3), - (945,589,27,2), - (290,161,28,3), - (342,191,28,3), - (344,192,28,3), - (602,335,28,3), - (114,65,29,3), - (178,100,29,3), - (189,106,29,3), - (268,149,29,3), - (371,206,29,3), - (427,239,29,3), - (470,262,29,3), - (909,553,29,2), - (49,28,30,3), - (388,215,30,3), - (406,227,30,3), - (451,251,30,3), - (699,389,30,3), - (782,436,30,3), - (806,450,30,3), - (867,511,30,2), - (871,541,30,2), - (93,52,31,3), - (340,190,31,3), - (540,301,31,3), - (525,293,32,3), - (819,463,32,2), - (820,464,32,2), - (843,487,32,2), - (872,517,32,2), - (904,548,32,2), - (6,3,33,3), - (209,116,33,3), - (490,274,33,3), - (270,150,34,3), - (693,386,34,3), - (816,460,34,2), - (479,268,36,3), - (513,286,36,3), - (671,374,36,3), - (683,381,36,3), - (862,506,36,2), - (873,536,36,2), - (511,285,37,3), - (859,503,37,2), - (874,533,37,2), - (901,545,37,2), - (197,110,38,3), - (231,129,38,3), - (433,242,38,3), - (673,375,38,3), - (733,408,38,3), - (39,23,39,3), - (91,51,39,3), - (463,258,39,3), - (567,316,39,3), - (584,325,39,3), - (418,234,40,3), - (14,8,41,3), - (29,17,41,3), - (74,42,41,3), - (146,82,41,3), - (176,99,41,3), - (280,156,41,3), - (288,160,41,3), - (201,112,42,3), - (496,277,42,3), - (593,330,42,3), - (324,181,43,3), - (382,212,43,3), - (620,346,43,3), - (771,429,43,3), - (818,462,43,2), - (69,39,44,3), - (86,48,44,3), - (303,168,44,3), - (410,229,44,3), - (569,317,44,3), - (618,345,44,3), - (633,353,44,3), - (769,428,44,3), - (254,141,45,3), - (357,199,45,3), - (361,201,45,3), - (106,60,46,3), - (162,91,46,3), - (310,172,46,3), - (429,240,46,3), - (753,419,47,3), - (59,34,48,3), - (457,254,48,3), - (667,372,48,3), - (95,53,49,3), - (380,211,49,3), - (578,322,49,3), - (16,9,50,3), - (47,27,50,3), - (645,360,50,3), - (929,573,50,2), - (665,371,52,3), - (122,69,53,3), - (164,92,53,3), - (425,238,53,3), - (905,549,53,2), - (132,74,54,3), - (447,249,54,3), - (449,250,54,3), - (610,340,54,3), - (687,383,54,3), - (913,557,54,2), - (160,90,55,3), - (221,123,55,3), - (353,197,55,3), - (703,391,55,3), - (851,495,55,2), - (875,525,55,2), - (112,64,56,3), - (506,282,56,3), - (18,10,57,3), - (187,105,57,3), - (286,159,57,3), - (595,331,57,3), - (710,395,57,3), - (169,95,58,3), - (297,165,58,3), - (359,200,58,3), - (548,305,58,3), - (708,394,58,3), - (788,439,58,3), - (519,289,59,3), - (675,376,59,3), - (691,385,59,3), - (821,465,59,2), - (822,466,59,2), - (823,467,59,2), - (824,468,59,2), - (825,469,59,2), - (826,470,59,2), - (827,471,59,2), - (828,472,59,2), - (829,473,59,2), - (830,474,59,2), - (831,475,59,2), - (193,108,60,3), - (492,275,60,3), - (515,287,60,3), - (468,261,61,3), - (555,309,61,3), - (919,563,61,2), - (72,41,62,3), - (84,47,62,3), - (229,128,62,3), - (264,147,62,3), - (328,183,62,3), - (376,209,62,3), - (453,252,62,3), - (561,312,62,3), - (738,411,62,3), - (926,570,63,2), - (124,70,64,3), - (156,87,64,3), - (248,138,64,3), - (622,347,64,3), - (680,379,64,3), - (918,562,64,2), - (144,81,65,3), - (183,103,65,3), - (301,167,65,3), - (349,195,65,3), - (576,321,65,3), - (600,334,65,3), - (614,343,65,3), - (766,426,65,3), - (205,114,66,3), - (369,205,66,3), - (804,449,66,3), - (4,2,67,3), - (150,84,67,3), - (292,162,67,3), - (393,219,67,3), - (718,400,67,3), - (314,174,68,3), - (33,19,69,3), - (223,124,69,3), - (455,253,69,3), - (840,484,69,2), - (876,514,69,2), - (930,574,69,2), - (716,399,70,3), - (774,431,70,3), - (355,198,71,3), - (635,354,71,3), - (817,461,71,2), - (24,14,72,3), - (43,25,72,3), - (120,68,72,3), - (312,173,72,3), - (476,266,72,3), - (26,15,73,3), - (89,50,73,3), - (110,63,73,3), - (148,83,73,3), - (282,157,73,3), - (384,213,73,3), - (481,269,73,3), - (669,373,73,3), - (180,101,74,3), - (191,107,74,3), - (731,407,74,3), - (530,296,75,3), - (651,363,75,3), - (661,369,75,3), - (744,414,75,3), - (484,271,76,3), - (56,32,77,3), - (76,43,77,3), - (173,97,77,3), - (237,132,78,3), - (244,136,78,3), - (947,591,78,2), - (414,231,79,3), - (559,311,79,3), - (751,418,79,3), - (914,558,79,2), - (443,247,80,3), - (504,281,80,3), - (705,392,80,3), - (712,396,80,3), - (258,144,81,3), - (363,202,81,3), - (500,279,81,3), - (761,423,81,3), - (790,440,81,3), - (860,504,81,2), - (877,534,81,2), - (921,565,81,2), - (814,458,82,2), - (536,299,83,3), - (778,434,83,3), - (80,45,84,3), - (185,104,84,3), - (271,151,84,2), - (273,152,84,2), - (275,153,84,2), - (276,154,84,2), - (277,155,84,2), - (279,156,84,2), - (281,157,84,2), - (283,158,84,2), - (285,159,84,2), - (287,160,84,2), - (289,161,84,2), - (291,162,84,2), - (293,163,84,2), - (295,164,84,2), - (296,165,84,2), - (298,166,84,2), - (300,167,84,2), - (302,168,84,2), - (304,169,84,2), - (305,170,84,2), - (307,171,84,2), - (309,172,84,2), - (311,173,84,2), - (313,174,84,2), - (315,175,84,2), - (317,176,84,2), - (318,177,84,2), - (319,178,84,2), - (320,179,84,2), - (321,180,84,2), - (323,181,84,2), - (325,182,84,2), - (327,183,84,2), - (329,184,84,2), - (331,185,84,2), - (333,186,84,2), - (335,187,84,2), - (337,188,84,2), - (338,189,84,2), - (339,190,84,2), - (341,191,84,2), - (343,192,84,2), - (345,193,84,2), - (347,194,84,2), - (348,195,84,2), - (350,196,84,2), - (352,197,84,2), - (354,198,84,2), - (356,199,84,2), - (358,200,84,2), - (360,201,84,2), - (362,202,84,2), - (364,203,84,2), - (366,204,84,2), - (368,205,84,2), - (370,206,84,2), - (372,207,84,2), - (374,208,84,2), - (375,209,84,2), - (377,210,84,2), - (379,211,84,2), - (381,212,84,2), - (383,213,84,2), - (385,214,84,2), - (387,215,84,2), - (389,216,84,2), - (390,217,84,2), - (391,218,84,2), - (392,219,84,2), - (394,220,84,2), - (396,221,84,2), - (397,222,84,2), - (399,223,84,2), - (400,224,84,2), - (402,225,84,2), - (403,226,84,2), - (405,227,84,2), - (407,228,84,2), - (409,229,84,2), - (411,230,84,2), - (413,231,84,2), - (415,232,84,2), - (416,233,84,2), - (417,234,84,2), - (419,235,84,2), - (421,236,84,2), - (422,237,84,2), - (424,238,84,2), - (426,239,84,2), - (428,240,84,2), - (430,241,84,2), - (432,242,84,2), - (434,243,84,2), - (436,244,84,2), - (438,245,84,2), - (440,246,84,2), - (442,247,84,2), - (444,248,84,2), - (446,249,84,2), - (448,250,84,2), - (450,251,84,2), - (452,252,84,2), - (454,253,84,2), - (456,254,84,2), - (458,255,84,2), - (459,256,84,2), - (460,257,84,2), - (462,258,84,2), - (464,259,84,2), - (465,260,84,2), - (467,261,84,2), - (469,262,84,2), - (471,263,84,2), - (472,264,84,2), - (474,265,84,2), - (475,266,84,2), - (477,267,84,2), - (478,268,84,2), - (480,269,84,2), - (482,270,84,2), - (483,271,84,2), - (485,272,84,2), - (487,273,84,2), - (489,274,84,2), - (491,275,84,2), - (493,276,84,2), - (495,277,84,2), - (497,278,84,2), - (499,279,84,2), - (501,280,84,2), - (503,281,84,2), - (505,282,84,2), - (507,283,84,2), - (509,284,84,2), - (510,285,84,2), - (512,286,84,2), - (514,287,84,2), - (516,288,84,2), - (518,289,84,2), - (520,290,84,2), - (521,291,84,2), - (522,292,84,2), - (524,293,84,2), - (526,294,84,2), - (528,295,84,2), - (529,296,84,2), - (531,297,84,2), - (532,297,84,3), - (533,298,84,2), - (535,299,84,2), - (537,300,84,2), - (542,302,84,3), - (82,46,85,3), - (351,196,85,3), - (466,260,85,3), - (580,323,85,3), - (900,544,85,2), - (250,139,86,3), - (628,350,86,3), - (598,333,88,3), - (663,370,88,3), - (794,442,88,3), - (140,79,89,3), - (439,245,89,3), - (653,364,89,3), - (721,402,89,3), - (931,575,89,2), - (219,122,90,3), - (386,214,90,3), - (572,319,90,3), - (171,96,91,3), - (435,243,91,3), - (473,264,91,3), - (53,30,92,3), - (815,459,92,2), - (78,44,93,3), - (142,80,93,3), - (207,115,93,3), - (284,158,93,3), - (395,220,93,3), - (858,502,93,2), - (878,532,93,2), - (928,572,93,2), - (41,24,94,3), - (227,127,94,3), - (235,131,94,3), - (322,180,94,3), - (486,272,94,3), - (217,121,95,3), - (260,145,95,3), - (940,584,95,2), - (67,38,96,3), - (99,55,97,3), - (199,111,97,3), - (334,186,97,3), - (488,273,97,3), - (557,310,97,3), - (801,447,97,3), - (2,1,98,3), - (437,244,98,3), - (586,326,98,3), - (195,109,99,3), - (461,257,99,3), - (736,410,99,3), - (832,476,99,2), - (833,477,99,2), - (834,478,99,2), - (835,479,99,2), - (836,480,99,2), - (847,491,99,2), - (879,521,99,2), - (213,118,100,3), - (278,155,100,3), - (550,306,100,3), - (656,366,100,3), - (701,390,100,3), - (917,561,100,2), - (272,151,101,3), - (299,166,101,3), - (725,404,101,3), - (902,546,101,2), - (915,559,102,2), - (837,481,103,2), - (903,547,111,2), - (935,579,112,2), - (844,488,113,2), - (880,518,113,2), - (937,581,114,2), - (849,493,115,2), - (881,523,115,2), - (908,552,118,2), - (842,486,119,2), - (882,516,119,2), - (920,564,121,2), - (861,505,122,2), - (883,535,122,2), - (932,576,122,2), - (855,499,125,2), - (884,529,125,2), - (853,497,126,2), - (885,527,126,2), - (922,566,126,2), - (850,494,128,2), - (886,524,128,2), - (864,508,131,2), - (887,538,131,2), - (907,551,134,2), - (841,485,140,2), - (888,515,140,2), - (854,498,141,2), - (889,528,141,2), - (924,568,141,2), - (839,483,143,2), - (890,513,143,2), - (942,586,147,2), - (923,567,150,2), - (912,556,152,2), - (857,501,156,2), - (891,531,156,2), - (845,489,157,2), - (892,519,157,2), - (865,509,158,2), - (893,539,158,2), - (906,550,160,2), - (852,496,163,2), - (894,526,163,2), - (927,571,165,2), - (925,569,168,2), - (941,585,169,2), - (856,500,172,2), - (895,530,172,2), - (910,554,172,2), - (946,590,175,2), - (838,482,181,2), - (896,512,181,2), - (938,582,181,2), - (899,543,188,2), - (944,588,190,2), - (866,510,193,2), - (897,540,193,2), - (934,578,195,2), - (539,301,196,2), - (541,302,196,2), - (543,303,196,2), - (545,304,196,2), - (547,305,196,2), - (549,306,196,2), - (551,307,196,2), - (553,308,196,2), - (554,309,196,2), - (556,310,196,2), - (558,311,196,2), - (560,312,196,2), - (562,313,196,2), - (563,314,196,2), - (564,315,196,2), - (566,316,196,2), - (568,317,196,2), - (570,318,196,2), - (571,319,196,2), - (573,320,196,2), - (575,321,196,2), - (577,322,196,2), - (579,323,196,2), - (581,324,196,2), - (583,325,196,2), - (585,326,196,2), - (587,327,196,2), - (589,328,196,2), - (590,329,196,2), - (592,330,196,2), - (594,331,196,2), - (596,332,196,2), - (597,333,196,2), - (599,334,196,2), - (601,335,196,2), - (603,336,196,2), - (604,337,196,2), - (606,338,196,2), - (608,339,196,2), - (609,340,196,2), - (611,341,196,2), - (612,342,196,2), - (613,343,196,2), - (615,344,196,2), - (617,345,196,2), - (619,346,196,2), - (621,347,196,2), - (623,348,196,2), - (625,349,196,2), - (627,350,196,2), - (629,351,196,2), - (631,352,196,2), - (632,353,196,2), - (634,354,196,2), - (636,355,196,2), - (638,356,196,2), - (639,357,196,2), - (641,358,196,2), - (643,359,196,2), - (644,360,196,2), - (646,361,196,2), - (648,362,196,2), - (650,363,196,2), - (652,364,196,2), - (654,365,196,2), - (655,366,196,2), - (657,367,196,2), - (658,368,196,2), - (660,369,196,2), - (662,370,196,2), - (664,371,196,2), - (666,372,196,2), - (668,373,196,2), - (670,374,196,2), - (672,375,196,2), - (674,376,196,2), - (676,377,196,2), - (677,378,196,2), - (679,379,196,2), - (681,380,196,2), - (682,381,196,2), - (684,382,196,2), - (686,383,196,2), - (688,384,196,2), - (690,385,196,2), - (692,386,196,2), - (694,387,196,2), - (696,388,196,2), - (698,389,196,2), - (700,390,196,2), - (702,391,196,2), - (704,392,196,2), - (706,393,196,2), - (707,394,196,2), - (709,395,196,2), - (711,396,196,2), - (713,397,196,2), - (714,398,196,2), - (715,399,196,2), - (717,400,196,2), - (719,401,196,2), - (720,402,196,2), - (722,403,196,2), - (724,404,196,2), - (726,405,196,2), - (728,406,196,2), - (730,407,196,2), - (732,408,196,2), - (734,409,196,2), - (735,410,196,2), - (737,411,196,2), - (739,412,196,2), - (741,413,196,2), - (743,414,196,2), - (745,415,196,2), - (747,416,196,2), - (749,417,196,2), - (750,418,196,2), - (752,419,196,2), - (754,420,196,2), - (756,421,196,2), - (758,422,196,2), - (760,423,196,2), - (762,424,196,2), - (763,425,196,2), - (765,426,196,2), - (767,427,196,2), - (768,428,196,2), - (770,429,196,2), - (772,430,196,2), - (773,431,196,2), - (775,432,196,2), - (776,433,196,2), - (777,434,196,2), - (779,435,196,2), - (781,436,196,2), - (783,437,196,2), - (785,438,196,2), - (787,439,196,2), - (789,440,196,2), - (791,441,196,2), - (793,442,196,2), - (795,443,196,2), - (797,444,196,2), - (798,445,196,2), - (799,446,196,2), - (800,447,196,2), - (802,448,196,2), - (803,449,196,2), - (805,450,196,2), - (939,583,200,2); + (54,30,1,3), + (61,34,1,3), + (244,133,1,3), + (576,320,1,3), + (751,413,1,3), + (759,417,1,3), + (334,183,2,3), + (417,230,2,3), + (715,394,2,3), + (818,451,2,2), + (124,67,3,3), + (171,92,3,3), + (317,173,3,3), + (395,217,3,3), + (79,43,4,3), + (134,72,4,3), + (296,162,4,3), + (338,185,4,3), + (819,452,4,2), + (822,455,4,2), + (109,58,5,3), + (215,117,5,3), + (313,171,5,3), + (444,246,5,3), + (545,303,5,3), + (647,359,5,3), + (870,503,5,2), + (908,541,5,2), + (727,400,6,3), + (820,453,6,2), + (943,576,6,2), + (528,294,7,3), + (568,315,7,3), + (613,341,7,3), + (810,446,7,3), + (150,81,8,3), + (474,262,8,3), + (570,316,8,3), + (821,454,8,2), + (865,498,8,2), + (885,518,8,2), + (935,568,8,2), + (67,37,9,3), + (226,123,10,3), + (560,311,10,3), + (643,357,10,3), + (910,543,10,2), + (341,187,11,3), + (592,329,11,3), + (119,64,12,3), + (130,70,12,3), + (175,94,12,3), + (156,84,13,3), + (275,150,13,3), + (348,191,13,3), + (379,208,13,3), + (452,250,13,3), + (919,552,13,2), + (138,74,14,3), + (220,120,14,3), + (950,583,14,2), + (154,83,15,3), + (448,248,15,3), + (483,267,15,3), + (558,310,15,3), + (670,371,15,3), + (743,409,15,3), + (276,151,16,2), + (277,152,16,2), + (279,153,16,2), + (281,154,16,2), + (283,155,16,2), + (285,156,16,2), + (286,156,16,3), + (287,157,16,2), + (289,158,16,2), + (290,159,16,2), + (291,160,16,2), + (293,161,16,2), + (295,162,16,2), + (297,163,16,2), + (299,164,16,2), + (301,165,16,2), + (303,166,16,2), + (305,167,16,2), + (307,168,16,2), + (308,169,16,2), + (310,170,16,2), + (312,171,16,2), + (314,172,16,2), + (316,173,16,2), + (318,174,16,2), + (320,175,16,2), + (321,176,16,2), + (323,177,16,2), + (325,178,16,2), + (327,179,16,2), + (329,180,16,2), + (330,181,16,2), + (331,182,16,2), + (332,182,16,3), + (333,183,16,2), + (335,184,16,2), + (337,185,16,2), + (339,186,16,2), + (340,187,16,2), + (342,188,16,2), + (343,189,16,2), + (345,190,16,2), + (347,191,16,2), + (349,192,16,2), + (351,193,16,2), + (353,194,16,2), + (354,195,16,2), + (356,196,16,2), + (358,197,16,2), + (360,198,16,2), + (361,199,16,2), + (363,200,16,2), + (365,201,16,2), + (366,202,16,2), + (368,203,16,2), + (370,204,16,2), + (372,205,16,2), + (374,206,16,2), + (376,207,16,2), + (378,208,16,2), + (380,209,16,2), + (381,210,16,2), + (383,211,16,2), + (385,212,16,2), + (387,213,16,2), + (389,214,16,2), + (390,215,16,2), + (392,216,16,2), + (394,217,16,2), + (396,218,16,2), + (398,219,16,2), + (399,220,16,2), + (400,221,16,2), + (402,222,16,2), + (403,223,16,2), + (405,224,16,2), + (407,225,16,2), + (409,226,16,2), + (411,227,16,2), + (413,228,16,2), + (414,229,16,2), + (416,230,16,2), + (418,231,16,2), + (420,232,16,2), + (421,233,16,2), + (423,234,16,2), + (425,235,16,2), + (426,236,16,2), + (427,237,16,2), + (429,238,16,2), + (431,239,16,2), + (433,240,16,2), + (434,241,16,2), + (435,241,16,3), + (436,242,16,2), + (438,243,16,2), + (440,244,16,2), + (442,245,16,2), + (443,246,16,2), + (445,247,16,2), + (447,248,16,2), + (449,249,16,2), + (451,250,16,2), + (453,251,16,2), + (455,252,16,2), + (457,253,16,2), + (459,254,16,2), + (461,255,16,2), + (462,256,16,2), + (464,257,16,2), + (466,258,16,2), + (468,259,16,2), + (470,260,16,2), + (471,261,16,2), + (473,262,16,2), + (475,263,16,2), + (477,264,16,2), + (479,265,16,2), + (480,266,16,2), + (482,267,16,2), + (484,268,16,2), + (486,269,16,2), + (487,270,16,2), + (489,271,16,2), + (491,272,16,2), + (493,273,16,2), + (494,274,16,2), + (496,275,16,2), + (498,276,16,2), + (499,277,16,2), + (501,278,16,2), + (503,279,16,2), + (505,280,16,2), + (507,281,16,2), + (508,282,16,2), + (510,283,16,2), + (512,284,16,2), + (513,285,16,2), + (515,286,16,2), + (516,287,16,2), + (517,288,16,2), + (519,289,16,2), + (521,290,16,2), + (522,291,16,2), + (524,292,16,2), + (525,293,16,2), + (527,294,16,2), + (529,295,16,2), + (531,296,16,2), + (533,297,16,2), + (534,298,16,2), + (536,299,16,2), + (538,300,16,2), + (676,374,16,3), + (707,390,16,3), + (823,456,16,2), + (924,557,16,2), + (163,88,17,3), + (497,275,17,3), + (869,502,17,2), + (888,521,17,2), + (945,578,17,2), + (231,126,18,3), + (780,429,18,3), + (81,44,19,3), + (346,190,19,3), + (432,239,19,3), + (824,457,19,2), + (938,571,19,2), + (273,149,20,3), + (369,203,20,3), + (562,312,20,3), + (619,344,20,3), + (814,448,20,3), + (28,15,21,3), + (186,101,21,3), + (526,293,21,3), + (600,333,21,3), + (610,339,21,3), + (639,355,21,3), + (733,404,21,3), + (778,428,21,3), + (284,155,22,3), + (566,314,22,3), + (628,349,22,3), + (85,46,23,3), + (140,75,23,3), + (197,107,23,3), + (278,152,23,3), + (350,192,23,3), + (382,210,23,3), + (428,237,23,3), + (918,551,23,2), + (97,52,24,3), + (240,131,26,3), + (375,206,26,3), + (502,278,26,3), + (111,59,27,3), + (218,119,27,3), + (288,157,27,3), + (617,343,27,3), + (626,348,27,3), + (649,360,27,3), + (690,381,27,3), + (713,393,27,3), + (26,14,28,3), + (103,55,28,3), + (233,127,28,3), + (292,160,28,3), + (660,366,28,3), + (688,380,28,3), + (711,392,28,3), + (761,418,28,3), + (873,506,28,2), + (890,523,28,2), + (8,4,29,3), + (532,296,29,3), + (236,129,30,3), + (328,179,30,3), + (441,244,30,3), + (485,268,30,3), + (606,337,30,3), + (682,377,30,3), + (719,396,30,3), + (923,556,30,2), + (132,71,31,3), + (488,270,31,3), + (574,319,31,3), + (169,91,32,3), + (632,351,32,3), + (717,395,32,3), + (830,463,32,2), + (831,464,32,2), + (52,29,33,3), + (128,69,33,3), + (148,80,33,3), + (709,391,33,3), + (211,115,34,3), + (415,229,34,3), + (454,251,34,3), + (598,332,34,3), + (623,346,34,3), + (800,441,34,3), + (827,460,34,2), + (393,216,35,3), + (401,221,35,3), + (705,389,35,3), + (107,57,36,3), + (228,124,36,3), + (855,488,36,2), + (881,514,36,2), + (914,547,36,2), + (145,78,37,3), + (386,212,37,3), + (564,313,37,3), + (585,325,37,3), + (680,376,37,3), + (741,408,37,3), + (792,436,37,3), + (43,24,38,3), + (630,350,38,3), + (737,406,38,3), + (13,7,39,3), + (46,26,39,3), + (808,445,39,3), + (858,491,39,2), + (899,532,39,2), + (65,36,40,3), + (654,363,40,3), + (749,412,40,3), + (915,548,40,2), + (672,372,41,3), + (698,385,41,3), + (917,550,41,2), + (203,110,42,3), + (478,264,43,3), + (829,462,43,2), + (38,21,44,3), + (48,27,44,3), + (304,166,44,3), + (446,247,44,3), + (795,438,44,3), + (248,135,45,3), + (437,242,45,3), + (656,364,45,3), + (932,565,45,2), + (306,167,46,3), + (509,282,46,3), + (253,138,47,3), + (271,148,47,3), + (377,207,47,3), + (424,234,47,3), + (554,308,47,3), + (578,321,47,3), + (747,411,47,3), + (850,483,47,2), + (894,527,47,2), + (326,178,48,3), + (861,494,48,2), + (883,516,48,2), + (31,17,49,3), + (93,50,49,3), + (193,105,49,3), + (269,147,49,3), + (860,493,49,2), + (900,533,49,2), + (15,8,50,3), + (222,121,50,3), + (324,177,50,3), + (384,211,50,3), + (745,410,50,3), + (73,40,51,3), + (83,45,51,3), + (294,161,51,3), + (543,302,51,3), + (694,383,51,3), + (2,1,52,3), + (95,51,52,3), + (122,66,52,3), + (165,89,52,3), + (280,153,52,3), + (472,261,52,3), + (10,5,53,3), + (259,141,53,3), + (636,353,53,3), + (179,97,54,3), + (397,218,54,3), + (658,365,54,3), + (731,403,54,3), + (867,500,54,2), + (886,519,54,2), + (6,3,55,3), + (261,142,55,3), + (408,225,55,3), + (422,233,55,3), + (539,300,55,3), + (674,373,55,3), + (721,397,55,3), + (849,482,55,2), + (879,512,55,2), + (535,298,56,3), + (556,309,56,3), + (651,361,56,3), + (739,407,56,3), + (812,447,56,3), + (255,139,57,3), + (302,165,57,3), + (580,322,57,3), + (787,433,57,3), + (804,443,57,3), + (955,588,57,2), + (57,32,58,3), + (136,73,58,3), + (181,98,58,3), + (300,164,58,3), + (406,224,58,3), + (832,465,59,2), + (833,466,59,2), + (834,467,59,2), + (835,468,59,2), + (836,469,59,2), + (837,470,59,2), + (838,471,59,2), + (839,472,59,2), + (840,473,59,2), + (841,474,59,2), + (842,475,59,2), + (495,274,60,3), + (763,419,60,3), + (199,108,61,3), + (520,289,61,3), + (530,295,61,3), + (184,100,62,3), + (33,18,63,3), + (195,106,63,3), + (242,132,63,3), + (500,277,63,3), + (725,399,63,3), + (735,405,63,3), + (91,49,64,3), + (641,356,64,3), + (662,367,64,3), + (21,11,65,3), + (99,53,65,3), + (404,223,65,3), + (608,338,65,3), + (615,342,65,3), + (798,440,65,3), + (336,184,66,3), + (357,196,66,3), + (456,252,66,3), + (463,256,66,3), + (753,414,66,3), + (876,509,66,2), + (906,539,66,2), + (391,215,67,3), + (547,304,67,3), + (645,358,67,3), + (450,249,68,3), + (668,370,68,3), + (700,386,68,3), + (816,449,68,3), + (158,85,69,3), + (388,213,69,3), + (666,369,69,3), + (768,422,69,3), + (958,591,69,2), + (367,202,70,3), + (583,324,70,3), + (802,442,70,3), + (69,38,71,3), + (188,102,71,3), + (309,169,71,3), + (344,189,71,3), + (828,461,71,2), + (298,163,72,3), + (439,243,72,3), + (634,352,72,3), + (59,33,73,3), + (113,60,73,3), + (207,112,73,3), + (364,200,73,3), + (371,204,73,3), + (476,263,73,3), + (772,425,73,3), + (939,572,73,2), + (87,47,74,3), + (224,122,74,3), + (755,415,74,3), + (765,420,74,3), + (774,426,74,3), + (4,2,75,3), + (117,63,75,3), + (267,146,75,3), + (311,170,76,3), + (373,205,76,3), + (460,254,76,3), + (518,288,76,3), + (940,573,76,2), + (75,41,77,3), + (315,172,77,3), + (514,285,77,3), + (537,299,77,3), + (913,546,77,2), + (126,68,78,3), + (596,331,78,3), + (874,507,78,2), + (905,538,78,2), + (161,87,79,3), + (322,176,79,3), + (410,226,80,3), + (930,563,80,2), + (71,39,81,3), + (213,116,81,3), + (469,259,81,3), + (205,111,82,3), + (504,279,82,3), + (523,291,82,3), + (825,458,82,2), + (359,197,83,3), + (678,375,83,3), + (696,384,83,3), + (19,10,84,3), + (40,22,84,3), + (89,48,84,3), + (587,326,84,3), + (948,581,84,2), + (458,253,85,3), + (257,140,86,3), + (352,193,86,3), + (550,306,86,3), + (723,398,86,3), + (877,510,86,2), + (892,525,86,2), + (77,42,87,3), + (173,93,87,3), + (362,199,87,3), + (511,283,87,3), + (686,379,87,3), + (782,430,87,3), + (857,490,87,2), + (882,515,87,2), + (24,13,88,3), + (621,345,88,3), + (684,378,88,3), + (959,592,88,2), + (17,9,89,3), + (419,231,89,3), + (506,280,89,3), + (664,368,89,3), + (692,382,89,3), + (784,431,89,3), + (167,90,90,3), + (190,103,91,3), + (263,143,91,3), + (319,174,91,3), + (355,195,91,3), + (757,416,91,3), + (63,35,92,3), + (412,227,92,3), + (481,266,92,3), + (541,301,92,3), + (552,307,92,3), + (594,330,92,3), + (826,459,92,2), + (862,495,92,2), + (901,534,92,2), + (911,544,92,2), + (36,20,93,3), + (492,272,93,3), + (859,492,93,2), + (907,540,93,2), + (467,258,94,3), + (776,427,94,3), + (916,549,94,2), + (201,109,95,3), + (282,154,95,3), + (465,257,95,3), + (603,335,95,3), + (101,54,96,3), + (251,137,96,3), + (430,238,96,3), + (806,444,96,3), + (954,587,96,2), + (142,76,97,3), + (238,130,97,3), + (942,575,97,2), + (246,134,98,3), + (589,327,98,3), + (105,56,99,3), + (490,271,99,3), + (843,476,99,2), + (844,477,99,2), + (845,478,99,2), + (846,479,99,2), + (847,480,99,2), + (50,28,100,3), + (152,82,100,3), + (703,388,100,3), + (790,435,100,3), + (872,505,100,2), + (904,537,100,2), + (936,569,101,2), + (848,481,103,2), + (868,501,106,2), + (887,520,106,2), + (853,486,113,2), + (896,529,113,2), + (875,508,117,2), + (891,524,117,2), + (949,582,117,2), + (928,561,123,2), + (852,485,126,2), + (895,528,126,2), + (540,301,127,2), + (542,302,127,2), + (544,303,127,2), + (546,304,127,2), + (548,305,127,2), + (549,306,127,2), + (551,307,127,2), + (553,308,127,2), + (555,309,127,2), + (557,310,127,2), + (559,311,127,2), + (561,312,127,2), + (563,313,127,2), + (565,314,127,2), + (567,315,127,2), + (569,316,127,2), + (571,317,127,2), + (572,318,127,2), + (573,319,127,2), + (575,320,127,2), + (577,321,127,2), + (579,322,127,2), + (581,323,127,2), + (582,324,127,2), + (584,325,127,2), + (586,326,127,2), + (588,327,127,2), + (590,328,127,2), + (591,329,127,2), + (593,330,127,2), + (595,331,127,2), + (597,332,127,2), + (599,333,127,2), + (601,334,127,2), + (602,335,127,2), + (604,336,127,2), + (605,337,127,2), + (607,338,127,2), + (609,339,127,2), + (611,340,127,2), + (612,341,127,2), + (614,342,127,2), + (616,343,127,2), + (618,344,127,2), + (620,345,127,2), + (622,346,127,2), + (624,347,127,2), + (625,348,127,2), + (627,349,127,2), + (629,350,127,2), + (631,351,127,2), + (633,352,127,2), + (635,353,127,2), + (637,354,127,2), + (638,355,127,2), + (640,356,127,2), + (642,357,127,2), + (644,358,127,2), + (646,359,127,2), + (648,360,127,2), + (650,361,127,2), + (652,362,127,2), + (653,363,127,2), + (655,364,127,2), + (657,365,127,2), + (659,366,127,2), + (661,367,127,2), + (663,368,127,2), + (665,369,127,2), + (667,370,127,2), + (669,371,127,2), + (671,372,127,2), + (673,373,127,2), + (675,374,127,2), + (677,375,127,2), + (679,376,127,2), + (681,377,127,2), + (683,378,127,2), + (685,379,127,2), + (687,380,127,2), + (689,381,127,2), + (691,382,127,2), + (693,383,127,2), + (695,384,127,2), + (697,385,127,2), + (699,386,127,2), + (701,387,127,2), + (702,388,127,2), + (704,389,127,2), + (706,390,127,2), + (708,391,127,2), + (710,392,127,2), + (712,393,127,2), + (714,394,127,2), + (716,395,127,2), + (718,396,127,2), + (720,397,127,2), + (722,398,127,2), + (724,399,127,2), + (726,400,127,2), + (728,401,127,2), + (729,402,127,2), + (730,403,127,2), + (732,404,127,2), + (734,405,127,2), + (736,406,127,2), + (738,407,127,2), + (740,408,127,2), + (742,409,127,2), + (744,410,127,2), + (746,411,127,2), + (748,412,127,2), + (750,413,127,2), + (752,414,127,2), + (754,415,127,2), + (756,416,127,2), + (758,417,127,2), + (760,418,127,2), + (762,419,127,2), + (764,420,127,2), + (766,421,127,2), + (767,422,127,2), + (769,423,127,2), + (770,424,127,2), + (771,425,127,2), + (773,426,127,2), + (775,427,127,2), + (777,428,127,2), + (779,429,127,2), + (781,430,127,2), + (783,431,127,2), + (785,432,127,2), + (786,433,127,2), + (788,434,127,2), + (789,435,127,2), + (791,436,127,2), + (793,437,127,2), + (794,438,127,2), + (796,439,127,2), + (797,440,127,2), + (799,441,127,2), + (801,442,127,2), + (803,443,127,2), + (805,444,127,2), + (807,445,127,2), + (809,446,127,2), + (811,447,127,2), + (813,448,127,2), + (815,449,127,2), + (817,450,127,2), + (946,579,127,2), + (925,558,132,2), + (922,555,135,2), + (864,497,136,2), + (902,535,136,2), + (929,562,144,2), + (878,511,149,2), + (893,526,149,2), + (947,580,154,2), + (951,584,156,2), + (937,570,158,2), + (944,577,159,2), + (1,1,160,2), + (3,2,160,2), + (5,3,160,2), + (7,4,160,2), + (9,5,160,2), + (11,6,160,2), + (12,7,160,2), + (14,8,160,2), + (16,9,160,2), + (18,10,160,2), + (20,11,160,2), + (22,12,160,2), + (23,13,160,2), + (25,14,160,2), + (27,15,160,2), + (29,16,160,2), + (30,17,160,2), + (32,18,160,2), + (34,19,160,2), + (35,20,160,2), + (37,21,160,2), + (39,22,160,2), + (41,23,160,2), + (42,24,160,2), + (44,25,160,2), + (45,26,160,2), + (47,27,160,2), + (49,28,160,2), + (51,29,160,2), + (53,30,160,2), + (55,31,160,2), + (56,32,160,2), + (58,33,160,2), + (60,34,160,2), + (62,35,160,2), + (64,36,160,2), + (66,37,160,2), + (68,38,160,2), + (70,39,160,2), + (72,40,160,2), + (74,41,160,2), + (76,42,160,2), + (78,43,160,2), + (80,44,160,2), + (82,45,160,2), + (84,46,160,2), + (86,47,160,2), + (88,48,160,2), + (90,49,160,2), + (92,50,160,2), + (94,51,160,2), + (96,52,160,2), + (98,53,160,2), + (100,54,160,2), + (102,55,160,2), + (104,56,160,2), + (106,57,160,2), + (108,58,160,2), + (110,59,160,2), + (112,60,160,2), + (114,61,160,2), + (115,62,160,2), + (116,63,160,2), + (118,64,160,2), + (120,65,160,2), + (121,66,160,2), + (123,67,160,2), + (125,68,160,2), + (127,69,160,2), + (129,70,160,2), + (131,71,160,2), + (133,72,160,2), + (135,73,160,2), + (137,74,160,2), + (139,75,160,2), + (141,76,160,2), + (143,77,160,2), + (144,78,160,2), + (146,79,160,2), + (147,80,160,2), + (149,81,160,2), + (151,82,160,2), + (153,83,160,2), + (155,84,160,2), + (157,85,160,2), + (159,86,160,2), + (160,87,160,2), + (162,88,160,2), + (164,89,160,2), + (166,90,160,2), + (168,91,160,2), + (170,92,160,2), + (172,93,160,2), + (174,94,160,2), + (176,95,160,2), + (177,96,160,2), + (178,97,160,2), + (180,98,160,2), + (182,99,160,2), + (183,100,160,2), + (185,101,160,2), + (187,102,160,2), + (189,103,160,2), + (191,104,160,2), + (192,105,160,2), + (194,106,160,2), + (196,107,160,2), + (198,108,160,2), + (200,109,160,2), + (202,110,160,2), + (204,111,160,2), + (206,112,160,2), + (208,113,160,2), + (209,114,160,2), + (210,115,160,2), + (212,116,160,2), + (214,117,160,2), + (216,118,160,2), + (217,119,160,2), + (219,120,160,2), + (221,121,160,2), + (223,122,160,2), + (225,123,160,2), + (227,124,160,2), + (229,125,160,2), + (230,126,160,2), + (232,127,160,2), + (234,128,160,2), + (235,129,160,2), + (237,130,160,2), + (239,131,160,2), + (241,132,160,2), + (243,133,160,2), + (245,134,160,2), + (247,135,160,2), + (249,136,160,2), + (250,137,160,2), + (252,138,160,2), + (254,139,160,2), + (256,140,160,2), + (258,141,160,2), + (260,142,160,2), + (262,143,160,2), + (264,144,160,2), + (265,145,160,2), + (266,146,160,2), + (268,147,160,2), + (270,148,160,2), + (272,149,160,2), + (274,150,160,2), + (912,545,160,2), + (952,585,163,2), + (856,489,164,2), + (898,531,164,2), + (851,484,168,2), + (880,513,168,2), + (854,487,169,2), + (897,530,169,2), + (957,590,172,2), + (871,504,175,2), + (889,522,175,2), + (956,589,175,2), + (931,564,178,2), + (926,559,179,2), + (863,496,180,2), + (884,517,180,2), + (934,567,182,2), + (953,586,184,2), + (866,499,187,2), + (903,536,187,2), + (927,560,189,2), + (921,554,192,2), + (920,553,195,2), + (933,566,196,2), + (941,574,197,2); /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -1689,193 +1701,186 @@ UNLOCK TABLES; LOCK TABLES `civicrm_address` WRITE; /*!40000 ALTER TABLE `civicrm_address` DISABLE KEYS */; INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES - (1,201,1,1,0,'469W States St SW',469,'W',NULL,'States','St','SW',NULL,NULL,NULL,NULL,'Brewton',1,1000,NULL,'36426',NULL,1228,31.129008,-87.10173,0,NULL,NULL,NULL), - (2,113,1,1,0,'244S Jackson Path W',244,'S',NULL,'Jackson','Path','W',NULL,NULL,NULL,NULL,'Provo',1,1016,NULL,'42267',NULL,1228,37.229645,-86.804803,0,NULL,NULL,NULL), - (3,81,1,1,0,'574K States Ln W',574,'K',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Honolulu',1,1010,NULL,'96830',NULL,1228,24.859832,-168.021815,0,NULL,NULL,NULL), - (4,61,1,1,0,'490B States Ave SE',490,'B',NULL,'States','Ave','SE',NULL,NULL,NULL,NULL,'Gloucester',1,1032,NULL,'28528',NULL,1228,34.732744,-76.53869,0,NULL,NULL,NULL), - (5,5,1,1,0,'120V Dowlen Way S',120,'V',NULL,'Dowlen','Way','S',NULL,NULL,NULL,NULL,'Denmark',1,1018,NULL,'04022',NULL,1228,43.969,-70.78804,0,NULL,NULL,NULL), - (6,182,1,1,0,'380X Martin Luther King Pl S',380,'X',NULL,'Martin Luther King','Pl','S',NULL,NULL,NULL,NULL,'Acosta',1,1037,NULL,'15520',NULL,1228,40.112153,-79.06772,0,NULL,NULL,NULL), - (7,179,1,1,0,'749K Bay Blvd SE',749,'K',NULL,'Bay','Blvd','SE',NULL,NULL,NULL,NULL,'Escatawpa',1,1023,NULL,'39552',NULL,1228,30.441072,-88.634482,0,NULL,NULL,NULL), - (8,125,1,1,0,'983Y Bay Path SE',983,'Y',NULL,'Bay','Path','SE',NULL,NULL,NULL,NULL,'Ann Arbor',1,1021,NULL,'48109',NULL,1228,42.291637,-83.71831,0,NULL,NULL,NULL), - (9,90,1,1,0,'648B Martin Luther King St N',648,'B',NULL,'Martin Luther King','St','N',NULL,NULL,NULL,NULL,'Hampstead',1,1028,NULL,'03841',NULL,1228,42.880837,-71.18252,0,NULL,NULL,NULL), - (10,72,1,1,0,'295A Martin Luther King Way NW',295,'A',NULL,'Martin Luther King','Way','NW',NULL,NULL,NULL,NULL,'Wharton',1,1047,NULL,'25208',NULL,1228,37.887883,-81.67191,0,NULL,NULL,NULL), - (11,129,1,1,0,'89O Pine Ln N',89,'O',NULL,'Pine','Ln','N',NULL,NULL,NULL,NULL,'Farmington',1,1021,NULL,'48331',NULL,1228,42.508809,-83.40875,0,NULL,NULL,NULL), - (12,185,1,1,0,'528P Bay Ave NW',528,'P',NULL,'Bay','Ave','NW',NULL,NULL,NULL,NULL,'South Kingstown',1,1038,NULL,'02789',NULL,1228,41.487831,-71.457592,0,NULL,NULL,NULL), - (13,169,1,1,0,'581D Martin Luther King Blvd NE',581,'D',NULL,'Martin Luther King','Blvd','NE',NULL,NULL,NULL,NULL,'Penn',1,1037,NULL,'15675',NULL,1228,40.330326,-79.64061,0,NULL,NULL,NULL), - (14,96,1,1,0,'589N Cadell Pl NE',589,'N',NULL,'Cadell','Pl','NE',NULL,NULL,NULL,NULL,'Village',1,1003,NULL,'71769',NULL,1228,33.236156,-93.234494,0,NULL,NULL,NULL), - (15,110,1,1,0,'788E Lincoln St E',788,'E',NULL,'Lincoln','St','E',NULL,NULL,NULL,NULL,'Glenmoore',1,1037,NULL,'19343',NULL,1228,40.094621,-75.74602,0,NULL,NULL,NULL), - (16,160,1,1,0,'507G Northpoint Dr NE',507,'G',NULL,'Northpoint','Dr','NE',NULL,NULL,NULL,NULL,'Brookeland',1,1042,NULL,'75931',NULL,1228,31.109064,-93.99031,0,NULL,NULL,NULL), - (17,106,1,1,0,'803S Northpoint Way NW',803,'S',NULL,'Northpoint','Way','NW',NULL,NULL,NULL,NULL,'Charlotte',1,1032,NULL,'28212',NULL,1228,35.189544,-80.74742,0,NULL,NULL,NULL), - (18,100,1,1,0,'856C Pine Path NE',856,'C',NULL,'Pine','Path','NE',NULL,NULL,NULL,NULL,'Saverton',1,1024,NULL,'63467',NULL,1228,39.650045,-91.270502,0,NULL,NULL,NULL), - (19,20,1,1,0,'745Z Van Ness Ave SE',745,'Z',NULL,'Van Ness','Ave','SE',NULL,NULL,NULL,NULL,'Perrysburg',1,1034,NULL,'43551',NULL,1228,41.540724,-83.58904,0,NULL,NULL,NULL), - (20,155,1,1,0,'165V Maple Pl W',165,'V',NULL,'Maple','Pl','W',NULL,NULL,NULL,NULL,'Fresno',1,1004,NULL,'93711',NULL,1228,36.831723,-119.83198,0,NULL,NULL,NULL), - (21,94,1,1,0,'481Y Beech Ln SE',481,'Y',NULL,'Beech','Ln','SE',NULL,NULL,NULL,NULL,'Hornbrook',1,1004,NULL,'96044',NULL,1228,41.925752,-122.52253,0,NULL,NULL,NULL), - (22,197,1,1,0,'260Z Dowlen Pl SE',260,'Z',NULL,'Dowlen','Pl','SE',NULL,NULL,NULL,NULL,'Los Angeles',1,1004,NULL,'90062',NULL,1228,34.003213,-118.3078,0,NULL,NULL,NULL), - (23,55,1,1,0,'494P Green Way N',494,'P',NULL,'Green','Way','N',NULL,NULL,NULL,NULL,'Brunswick',1,1009,NULL,'31523',NULL,1228,31.212705,-81.60975,0,NULL,NULL,NULL), - (24,142,1,1,0,'337I Beech Pl N',337,'I',NULL,'Beech','Pl','N',NULL,NULL,NULL,NULL,'Milo',1,1014,NULL,'50166',NULL,1228,41.283703,-93.41399,0,NULL,NULL,NULL), - (25,43,1,1,0,'785S Van Ness Way NE',785,'S',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Pueblo',1,1005,NULL,'81001',NULL,1228,38.282872,-104.57029,0,NULL,NULL,NULL), - (26,70,1,1,0,'458X Bay Path E',458,'X',NULL,'Bay','Path','E',NULL,NULL,NULL,NULL,'Hawthorne',1,1008,NULL,'32640',NULL,1228,29.601599,-82.0309,0,NULL,NULL,NULL), - (27,16,1,1,0,'169S Martin Luther King Blvd S',169,'S',NULL,'Martin Luther King','Blvd','S',NULL,NULL,NULL,NULL,'New Effington',1,1040,NULL,'57255',NULL,1228,45.859799,-96.91988,0,NULL,NULL,NULL), - (28,47,1,1,0,'346Q States St NW',346,'Q',NULL,'States','St','NW',NULL,NULL,NULL,NULL,'Esbon',1,1015,NULL,'66941',NULL,1228,39.827165,-98.44356,0,NULL,NULL,NULL), - (29,199,1,1,0,'80K States Ln S',80,'K',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Cleveland',1,1042,NULL,'77327',NULL,1228,30.35469,-95.04514,0,NULL,NULL,NULL), - (30,2,1,1,0,'876X Beech Path SW',876,'X',NULL,'Beech','Path','SW',NULL,NULL,NULL,NULL,'Callaway',1,1019,NULL,'20620',NULL,1228,38.226406,-76.51759,0,NULL,NULL,NULL), - (31,91,1,1,0,'207I Dowlen Path W',207,'I',NULL,'Dowlen','Path','W',NULL,NULL,NULL,NULL,'Pittsburgh',1,1037,NULL,'15223',NULL,1228,40.503768,-79.95164,0,NULL,NULL,NULL), - (32,54,1,1,0,'654B Northpoint Way W',654,'B',NULL,'Northpoint','Way','W',NULL,NULL,NULL,NULL,'San Lorenzo',1,1004,NULL,'94580',NULL,1228,37.678531,-122.13199,0,NULL,NULL,NULL), - (33,30,1,1,0,'555X Lincoln Path NW',555,'X',NULL,'Lincoln','Path','NW',NULL,NULL,NULL,NULL,'Harper',1,1015,NULL,'67058',NULL,1228,37.297898,-98.03916,0,NULL,NULL,NULL), - (34,170,1,1,0,'238O Second Ln NW',238,'O',NULL,'Second','Ln','NW',NULL,NULL,NULL,NULL,'Lyndhurst',1,1029,NULL,'07071',NULL,1228,40.808416,-74.12111,0,NULL,NULL,NULL), - (35,156,1,1,0,'481F Beech Blvd N',481,'F',NULL,'Beech','Blvd','N',NULL,NULL,NULL,NULL,'Harpers Ferry',1,1014,NULL,'52146',NULL,1228,43.195154,-91.16405,0,NULL,NULL,NULL), - (36,177,1,1,0,'436V El Camino Dr NW',436,'V',NULL,'El Camino','Dr','NW',NULL,NULL,NULL,NULL,'Delaware',1,1035,NULL,'74027',NULL,1228,36.793303,-95.63631,0,NULL,NULL,NULL), - (37,143,1,1,0,'961D Second St SE',961,'D',NULL,'Second','St','SE',NULL,NULL,NULL,NULL,'Chesapeake',1,1045,NULL,'23321',NULL,1228,36.826239,-76.41524,0,NULL,NULL,NULL), - (38,122,1,1,0,'645Q Woodbridge Ave S',645,'Q',NULL,'Woodbridge','Ave','S',NULL,NULL,NULL,NULL,'Port Hope',1,1021,NULL,'48468',NULL,1228,43.938529,-82.77514,0,NULL,NULL,NULL), - (39,196,1,1,0,'150W Beech Blvd E',150,'W',NULL,'Beech','Blvd','E',NULL,NULL,NULL,NULL,'Westminster',1,1004,NULL,'92685',NULL,1228,33.640302,-117.769442,0,NULL,NULL,NULL), - (40,198,1,1,0,'383M Pine Way E',383,'M',NULL,'Pine','Way','E',NULL,NULL,NULL,NULL,'Cokeburg',1,1037,NULL,'15324',NULL,1228,40.10012,-80.06363,0,NULL,NULL,NULL), - (41,102,1,1,0,'533W Northpoint Way NE',533,'W',NULL,'Northpoint','Way','NE',NULL,NULL,NULL,NULL,'La Ward',1,1042,NULL,'77970',NULL,1228,28.865213,-96.4397,0,NULL,NULL,NULL), - (42,167,1,1,0,'549J Second Dr SE',549,'J',NULL,'Second','Dr','SE',NULL,NULL,NULL,NULL,'Leesburg',1,1008,NULL,'34749',NULL,1228,28.811078,-81.653642,0,NULL,NULL,NULL), - (43,68,1,1,0,'779G Main Path S',779,'G',NULL,'Main','Path','S',NULL,NULL,NULL,NULL,'Mesa',1,1046,NULL,'99343',NULL,1228,46.581454,-119.12107,0,NULL,NULL,NULL), - (44,115,1,1,0,'527K Woodbridge Dr SW',527,'K',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Robbins',1,1041,NULL,'37852',NULL,1228,36.335832,-84.6022,0,NULL,NULL,NULL), - (45,12,1,1,0,'432O Maple Ln SE',432,'O',NULL,'Maple','Ln','SE',NULL,NULL,NULL,NULL,'Baton Rouge',1,1017,NULL,'70826',NULL,1228,30.51589,-91.080373,0,NULL,NULL,NULL), - (46,195,1,1,0,'873T Main Way SE',873,'T',NULL,'Main','Way','SE',NULL,NULL,NULL,NULL,'Malvern',1,1003,NULL,'72104',NULL,1228,34.364093,-92.8146,0,NULL,NULL,NULL), - (47,36,1,1,0,'68C Lincoln Pl N',68,'C',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Lakeshore',1,1023,NULL,'39558',NULL,1228,30.239124,-89.459526,0,NULL,NULL,NULL), - (48,32,1,1,0,'851D El Camino Rd SE',851,'D',NULL,'El Camino','Rd','SE',NULL,NULL,NULL,NULL,'Auburndale',1,1048,NULL,'54412',NULL,1228,44.662975,-89.9943,0,NULL,NULL,NULL), - (49,37,1,1,0,'3H College Pl W',3,'H',NULL,'College','Pl','W',NULL,NULL,NULL,NULL,'Springfield',1,1024,NULL,'65898',NULL,1228,37.180349,-93.295137,0,NULL,NULL,NULL), - (50,123,1,1,0,'289J States Rd W',289,'J',NULL,'States','Rd','W',NULL,NULL,NULL,NULL,'Bridgeport',1,1006,NULL,'06608',NULL,1228,41.188746,-73.1813,0,NULL,NULL,NULL), - (51,163,1,1,0,'643M Dowlen Blvd N',643,'M',NULL,'Dowlen','Blvd','N',NULL,NULL,NULL,NULL,'Atwood',1,1035,NULL,'74827',NULL,1228,34.949547,-96.33356,0,NULL,NULL,NULL), - (52,200,1,1,0,'967F Van Ness St N',967,'F',NULL,'Van Ness','St','N',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45253',NULL,1228,39.166759,-84.53822,0,NULL,NULL,NULL), - (53,14,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,NULL), - (54,52,1,1,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,NULL), - (55,6,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,NULL), - (56,11,1,1,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,NULL), - (57,139,1,1,0,'772M Green Ln NE',772,'M',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Brownsdale',1,1022,NULL,'55918',NULL,1228,43.743087,-92.86434,0,NULL,NULL,NULL), - (58,130,1,1,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,NULL), - (59,124,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,NULL), - (60,147,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,NULL), - (61,107,1,1,0,'425C Green Rd NE',425,'C',NULL,'Green','Rd','NE',NULL,NULL,NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,NULL), - (62,161,1,1,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,NULL), - (63,59,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,NULL), - (64,117,1,1,0,'548G Van Ness Way NE',548,'G',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Freeville',1,1031,NULL,'13068',NULL,1228,42.505075,-76.35283,0,NULL,NULL,NULL), - (65,88,1,1,0,'858A Woodbridge Dr SE',858,'A',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'Marion',1,1003,NULL,'72364',NULL,1228,35.200501,-90.20234,0,NULL,NULL,NULL), - (66,135,1,1,0,'582T Main Rd E',582,'T',NULL,'Main','Rd','E',NULL,NULL,NULL,NULL,'Goreville',1,1012,NULL,'62939',NULL,1228,37.558235,-88.96661,0,NULL,NULL,NULL), - (67,132,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,NULL), - (68,76,1,1,0,'470W Beech Way E',470,'W',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Wyoming',1,1038,NULL,'02898',NULL,1228,41.51495,-71.68484,0,NULL,NULL,NULL), - (69,21,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,NULL), - (70,183,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,NULL), - (71,148,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,NULL), - (72,31,3,1,0,'255Q Second Rd S',255,'Q',NULL,'Second','Rd','S',NULL,'Mailstop 101',NULL,NULL,'Ben Franklin',1,1042,NULL,'75415',NULL,1228,33.460447,-95.75734,0,NULL,NULL,NULL), - (73,194,2,1,0,'255Q Second Rd S',255,'Q',NULL,'Second','Rd','S',NULL,'Mailstop 101',NULL,NULL,'Ben Franklin',1,1042,NULL,'75415',NULL,1228,33.460447,-95.75734,0,NULL,NULL,72), - (74,150,3,1,0,'30U Van Ness Pl SW',30,'U',NULL,'Van Ness','Pl','SW',NULL,'Subscriptions Dept',NULL,NULL,'Novelty',1,1034,NULL,'44073',NULL,1228,41.837043,-80.955545,0,NULL,NULL,NULL), - (75,79,2,1,0,'30U Van Ness Pl SW',30,'U',NULL,'Van Ness','Pl','SW',NULL,'Subscriptions Dept',NULL,NULL,'Novelty',1,1034,NULL,'44073',NULL,1228,41.837043,-80.955545,0,NULL,NULL,74), - (76,133,3,1,0,'66U Lincoln Path N',66,'U',NULL,'Lincoln','Path','N',NULL,'Attn: Development',NULL,NULL,'Guerra',1,1042,NULL,'78360',NULL,1228,27.071318,-98.686327,0,NULL,NULL,NULL), - (77,104,2,1,0,'66U Lincoln Path N',66,'U',NULL,'Lincoln','Path','N',NULL,'Attn: Development',NULL,NULL,'Guerra',1,1042,NULL,'78360',NULL,1228,27.071318,-98.686327,0,NULL,NULL,76), - (78,168,3,1,0,'716B Cadell Rd SE',716,'B',NULL,'Cadell','Rd','SE',NULL,'Editorial Dept',NULL,NULL,'Highmount',1,1031,NULL,'12441',NULL,1228,41.878801,-74.345684,0,NULL,NULL,NULL), - (79,174,3,1,0,'79L Maple Path NE',79,'L',NULL,'Maple','Path','NE',NULL,'Urgent',NULL,NULL,'Mountain View',1,1003,NULL,'72560',NULL,1228,35.863114,-92.11108,0,NULL,NULL,NULL), - (80,187,2,1,0,'79L Maple Path NE',79,'L',NULL,'Maple','Path','NE',NULL,'Urgent',NULL,NULL,'Mountain View',1,1003,NULL,'72560',NULL,1228,35.863114,-92.11108,0,NULL,NULL,79), - (81,190,3,1,0,'914Q Jackson Rd S',914,'Q',NULL,'Jackson','Rd','S',NULL,'Payables Dept.',NULL,NULL,'Jacksonville',1,1008,NULL,'32267',NULL,1228,30.34494,-81.683107,0,NULL,NULL,NULL), - (82,122,2,0,0,'914Q Jackson Rd S',914,'Q',NULL,'Jackson','Rd','S',NULL,'Payables Dept.',NULL,NULL,'Jacksonville',1,1008,NULL,'32267',NULL,1228,30.34494,-81.683107,0,NULL,NULL,81), - (83,118,3,1,0,'208X Caulder Ave NE',208,'X',NULL,'Caulder','Ave','NE',NULL,'Attn: Accounting',NULL,NULL,'Toledo',1,1034,NULL,'43682',NULL,1228,41.686778,-83.43943,0,NULL,NULL,NULL), - (84,12,2,0,0,'208X Caulder Ave NE',208,'X',NULL,'Caulder','Ave','NE',NULL,'Attn: Accounting',NULL,NULL,'Toledo',1,1034,NULL,'43682',NULL,1228,41.686778,-83.43943,0,NULL,NULL,83), - (85,74,3,1,0,'162B Bay Ln SE',162,'B',NULL,'Bay','Ln','SE',NULL,'c/o OPDC',NULL,NULL,'Longville',1,1022,NULL,'56655',NULL,1228,46.975876,-94.21508,0,NULL,NULL,NULL), - (86,89,3,1,0,'374S Green Ave NW',374,'S',NULL,'Green','Ave','NW',NULL,'Disbursements',NULL,NULL,'El Centro',1,1004,NULL,'92243',NULL,1228,32.783359,-115.57746,0,NULL,NULL,NULL), - (87,171,3,1,0,'577W Jackson Ave S',577,'W',NULL,'Jackson','Ave','S',NULL,'Payables Dept.',NULL,NULL,'San Antonio',1,1042,NULL,'78279',NULL,1228,29.437532,-98.461582,0,NULL,NULL,NULL), - (88,169,2,0,0,'577W Jackson Ave S',577,'W',NULL,'Jackson','Ave','S',NULL,'Payables Dept.',NULL,NULL,'San Antonio',1,1042,NULL,'78279',NULL,1228,29.437532,-98.461582,0,NULL,NULL,87), - (89,121,3,1,0,'792G College St SE',792,'G',NULL,'College','St','SE',NULL,'Churchgate',NULL,NULL,'Redding',1,1004,NULL,'96003',NULL,1228,40.641389,-122.34206,0,NULL,NULL,NULL), - (90,58,2,1,0,'792G College St SE',792,'G',NULL,'College','St','SE',NULL,'Churchgate',NULL,NULL,'Redding',1,1004,NULL,'96003',NULL,1228,40.641389,-122.34206,0,NULL,NULL,89), - (91,50,3,1,0,'224N College Ln E',224,'N',NULL,'College','Ln','E',NULL,'Urgent',NULL,NULL,'Marseilles',1,1012,NULL,'61341',NULL,1228,41.336202,-88.69727,0,NULL,NULL,NULL), - (92,112,3,1,0,'546I Northpoint Dr S',546,'I',NULL,'Northpoint','Dr','S',NULL,'Attn: Development',NULL,NULL,'Jamaica',1,1014,NULL,'50128',NULL,1228,41.855913,-94.29981,0,NULL,NULL,NULL), - (93,53,3,1,0,'15J Jackson Way S',15,'J',NULL,'Jackson','Way','S',NULL,'Attn: Development',NULL,NULL,'Pittsburgh',1,1037,NULL,'15239',NULL,1228,40.482655,-79.74278,0,NULL,NULL,NULL), - (94,180,2,1,0,'15J Jackson Way S',15,'J',NULL,'Jackson','Way','S',NULL,'Attn: Development',NULL,NULL,'Pittsburgh',1,1037,NULL,'15239',NULL,1228,40.482655,-79.74278,0,NULL,NULL,93), - (95,19,3,1,0,'287J College Way N',287,'J',NULL,'College','Way','N',NULL,'Mailstop 101',NULL,NULL,'Bradenton',1,1008,NULL,'34205',NULL,1228,27.485617,-82.58294,0,NULL,NULL,NULL), - (96,69,2,1,0,'287J College Way N',287,'J',NULL,'College','Way','N',NULL,'Mailstop 101',NULL,NULL,'Bradenton',1,1008,NULL,'34205',NULL,1228,27.485617,-82.58294,0,NULL,NULL,95), - (97,111,3,1,0,'131U States Rd NW',131,'U',NULL,'States','Rd','NW',NULL,'Receiving',NULL,NULL,'Crawfordsville',1,1013,NULL,'47939',NULL,1228,40.040014,-86.893614,0,NULL,NULL,NULL), - (98,17,3,1,0,'422O Jackson Path NW',422,'O',NULL,'Jackson','Path','NW',NULL,'Receiving',NULL,NULL,'Lancaster',1,1037,NULL,'17603',NULL,1228,40.03263,-76.33328,0,NULL,NULL,NULL), - (99,57,2,1,0,'422O Jackson Path NW',422,'O',NULL,'Jackson','Path','NW',NULL,'Receiving',NULL,NULL,'Lancaster',1,1037,NULL,'17603',NULL,1228,40.03263,-76.33328,0,NULL,NULL,98), - (100,64,3,1,0,'637S Van Ness Pl NE',637,'S',NULL,'Van Ness','Pl','NE',NULL,'Payables Dept.',NULL,NULL,'Charleston',1,1047,NULL,'25317',NULL,1228,38.335647,-81.613794,0,NULL,NULL,NULL), - (101,120,2,1,0,'637S Van Ness Pl NE',637,'S',NULL,'Van Ness','Pl','NE',NULL,'Payables Dept.',NULL,NULL,'Charleston',1,1047,NULL,'25317',NULL,1228,38.335647,-81.613794,0,NULL,NULL,100), - (102,166,3,1,0,'651E Pine Ave S',651,'E',NULL,'Pine','Ave','S',NULL,'Churchgate',NULL,NULL,'Lambert',1,1023,NULL,'38643',NULL,1228,34.179708,-90.27846,0,NULL,NULL,NULL), - (103,51,3,1,0,'554W Caulder Path SE',554,'W',NULL,'Caulder','Path','SE',NULL,'Editorial Dept',NULL,NULL,'Montier',1,1024,NULL,'65546',NULL,1228,37.153294,-91.337506,0,NULL,NULL,NULL), - (104,75,2,1,0,'554W Caulder Path SE',554,'W',NULL,'Caulder','Path','SE',NULL,'Editorial Dept',NULL,NULL,'Montier',1,1024,NULL,'65546',NULL,1228,37.153294,-91.337506,0,NULL,NULL,103), - (105,46,1,1,0,'967F Van Ness St N',967,'F',NULL,'Van Ness','St','N',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45253',NULL,1228,39.166759,-84.53822,0,NULL,NULL,52), - (106,66,1,1,0,'967F Van Ness St N',967,'F',NULL,'Van Ness','St','N',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45253',NULL,1228,39.166759,-84.53822,0,NULL,NULL,52), - (107,149,1,1,0,'967F Van Ness St N',967,'F',NULL,'Van Ness','St','N',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45253',NULL,1228,39.166759,-84.53822,0,NULL,NULL,52), - (108,163,1,0,0,'871F Dowlen Blvd S',871,'F',NULL,'Dowlen','Blvd','S',NULL,NULL,NULL,NULL,'Emmons',1,1022,NULL,'56029',NULL,1228,43.516115,-93.51768,0,NULL,NULL,NULL), - (109,184,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,53), - (110,10,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,53), - (111,152,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,53), - (112,18,1,1,0,'317A States Blvd E',317,'A',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Senecaville',1,1034,NULL,'43780',NULL,1228,39.930047,-81.44256,0,NULL,NULL,53), - (113,87,1,1,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,54), - (114,57,1,0,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,54), - (115,126,1,1,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,54), - (116,63,1,1,0,'280B Green Blvd SW',280,'B',NULL,'Green','Blvd','SW',NULL,NULL,NULL,NULL,'Valley Center',1,1015,NULL,'67147',NULL,1228,37.853935,-97.33059,0,NULL,NULL,54), - (117,175,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,55), - (118,93,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,55), - (119,29,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,55), - (120,23,1,1,0,'78Y Main Path SW',78,'Y',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Tornado',1,1047,NULL,'25202',NULL,1228,38.327452,-81.84485,0,NULL,NULL,55), - (121,101,1,1,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,56), - (122,40,1,1,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,56), - (123,136,1,1,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,56), - (124,194,1,0,0,'1T Pine Rd E',1,'T',NULL,'Pine','Rd','E',NULL,NULL,NULL,NULL,'Konawa',1,1035,NULL,'74894',NULL,1228,34.955971,-96.754575,0,NULL,NULL,56), - (125,62,1,1,0,'772M Green Ln NE',772,'M',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Brownsdale',1,1022,NULL,'55918',NULL,1228,43.743087,-92.86434,0,NULL,NULL,57), - (126,154,1,1,0,'772M Green Ln NE',772,'M',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Brownsdale',1,1022,NULL,'55918',NULL,1228,43.743087,-92.86434,0,NULL,NULL,57), - (127,162,1,1,0,'772M Green Ln NE',772,'M',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Brownsdale',1,1022,NULL,'55918',NULL,1228,43.743087,-92.86434,0,NULL,NULL,57), - (128,85,1,1,0,'997H Pine Dr SE',997,'H',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Vancourt',1,1042,NULL,'76955',NULL,1228,31.305402,-100.12871,0,NULL,NULL,NULL), - (129,3,1,1,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,58), - (130,58,1,0,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,58), - (131,131,1,1,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,58), - (132,103,1,1,0,'206P States Dr S',206,'P',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Childwold',1,1031,NULL,'12922',NULL,1228,44.224185,-74.76539,0,NULL,NULL,58), - (133,22,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,59), - (134,60,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,59), - (135,158,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,59), - (136,84,1,1,0,'692T Van Ness Way NE',692,'T',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Fulton',1,1023,NULL,'38843',NULL,1228,34.265985,-88.38409,0,NULL,NULL,59), - (137,73,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,60), - (138,99,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,60), - (139,9,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,60), - (140,65,1,1,0,'998K Northpoint Path NW',998,'K',NULL,'Northpoint','Path','NW',NULL,NULL,NULL,NULL,'Keyesport',1,1012,NULL,'62253',NULL,1228,38.761214,-89.29128,0,NULL,NULL,60), - (141,186,1,1,0,'425C Green Rd NE',425,'C',NULL,'Green','Rd','NE',NULL,NULL,NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,61), - (142,80,1,1,0,'425C Green Rd NE',425,'C',NULL,'Green','Rd','NE',NULL,NULL,NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,61), - (143,159,1,1,0,'425C Green Rd NE',425,'C',NULL,'Green','Rd','NE',NULL,NULL,NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,61), - (144,82,1,1,0,'470Y Beech Rd S',470,'Y',NULL,'Beech','Rd','S',NULL,NULL,NULL,NULL,'Inverness',1,1008,NULL,'34452',NULL,1228,28.793722,-82.35021,0,NULL,NULL,NULL), - (145,48,1,1,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,62), - (146,187,1,0,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,62), - (147,141,1,1,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,62), - (148,45,1,1,0,'517I Woodbridge Dr SW',517,'I',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Sutter',1,1004,NULL,'95982',NULL,1228,39.16855,-121.76465,0,NULL,NULL,62), - (149,128,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,63), - (150,8,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,63), - (151,140,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,63), - (152,157,1,1,0,'599B Lincoln Ln N',599,'B',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35226',NULL,1228,33.406409,-86.8295,0,NULL,NULL,63), - (153,4,1,1,0,'548G Van Ness Way NE',548,'G',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Freeville',1,1031,NULL,'13068',NULL,1228,42.505075,-76.35283,0,NULL,NULL,64), - (154,178,1,1,0,'548G Van Ness Way NE',548,'G',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Freeville',1,1031,NULL,'13068',NULL,1228,42.505075,-76.35283,0,NULL,NULL,64), - (155,127,1,1,0,'548G Van Ness Way NE',548,'G',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Freeville',1,1031,NULL,'13068',NULL,1228,42.505075,-76.35283,0,NULL,NULL,64), - (156,144,1,1,0,'542H Van Ness Way NE',542,'H',NULL,'Van Ness','Way','NE',NULL,NULL,NULL,NULL,'Denver',1,1005,NULL,'80279',NULL,1228,39.738752,-104.408349,0,NULL,NULL,NULL), - (157,56,1,1,0,'858A Woodbridge Dr SE',858,'A',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'Marion',1,1003,NULL,'72364',NULL,1228,35.200501,-90.20234,0,NULL,NULL,65), - (158,34,1,1,0,'858A Woodbridge Dr SE',858,'A',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'Marion',1,1003,NULL,'72364',NULL,1228,35.200501,-90.20234,0,NULL,NULL,65), - (159,193,1,1,0,'858A Woodbridge Dr SE',858,'A',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'Marion',1,1003,NULL,'72364',NULL,1228,35.200501,-90.20234,0,NULL,NULL,65), - (160,67,1,1,0,'129W El Camino Pl N',129,'W',NULL,'El Camino','Pl','N',NULL,NULL,NULL,NULL,'Holcomb',1,1012,NULL,'61043',NULL,1228,42.045123,-89.313593,0,NULL,NULL,NULL), - (161,39,1,1,0,'582T Main Rd E',582,'T',NULL,'Main','Rd','E',NULL,NULL,NULL,NULL,'Goreville',1,1012,NULL,'62939',NULL,1228,37.558235,-88.96661,0,NULL,NULL,66), - (162,79,1,0,0,'582T Main Rd E',582,'T',NULL,'Main','Rd','E',NULL,NULL,NULL,NULL,'Goreville',1,1012,NULL,'62939',NULL,1228,37.558235,-88.96661,0,NULL,NULL,66), - (163,49,1,1,0,'582T Main Rd E',582,'T',NULL,'Main','Rd','E',NULL,NULL,NULL,NULL,'Goreville',1,1012,NULL,'62939',NULL,1228,37.558235,-88.96661,0,NULL,NULL,66), - (164,77,1,1,0,'397X Second Dr N',397,'X',NULL,'Second','Dr','N',NULL,NULL,NULL,NULL,'Houston',1,1007,NULL,'19954',NULL,1228,38.909621,-75.51264,0,NULL,NULL,NULL), - (165,137,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,67), - (166,173,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,67), - (167,27,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,67), - (168,172,1,1,0,'665C College St S',665,'C',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45420',NULL,1228,39.723909,-84.13453,0,NULL,NULL,67), - (169,108,1,1,0,'470W Beech Way E',470,'W',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Wyoming',1,1038,NULL,'02898',NULL,1228,41.51495,-71.68484,0,NULL,NULL,68), - (170,134,1,1,0,'470W Beech Way E',470,'W',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Wyoming',1,1038,NULL,'02898',NULL,1228,41.51495,-71.68484,0,NULL,NULL,68), - (171,75,1,0,0,'470W Beech Way E',470,'W',NULL,'Beech','Way','E',NULL,NULL,NULL,NULL,'Wyoming',1,1038,NULL,'02898',NULL,1228,41.51495,-71.68484,0,NULL,NULL,68), - (172,69,1,0,0,'817W Dowlen St S',817,'W',NULL,'Dowlen','St','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60690',NULL,1228,41.811929,-87.68732,0,NULL,NULL,NULL), - (173,38,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,69), - (174,151,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,69), - (175,176,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,69), - (176,42,1,1,0,'584E Beech Ave E',584,'E',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Encino',1,1042,NULL,'78353',NULL,1228,26.894094,-98.21561,0,NULL,NULL,69), - (177,191,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,70), - (178,13,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,70), - (179,41,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,70), - (180,145,1,1,0,'304U Beech Ln SW',304,'U',NULL,'Beech','Ln','SW',NULL,NULL,NULL,NULL,'Mabscott',1,1047,NULL,'25871',NULL,1228,37.771364,-81.2093,0,NULL,NULL,70), - (181,25,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,71), - (182,28,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,71), - (183,92,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,71), - (184,71,1,1,0,'712B Cadell Path SE',712,'B',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Secretary',1,1019,NULL,'21664',NULL,1228,38.609886,-75.949,0,NULL,NULL,71), - (185,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL), - (186,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL), - (187,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); + (1,25,1,1,0,'111A Lincoln Pl W',111,'A',NULL,'Lincoln','Pl','W',NULL,NULL,NULL,NULL,'Glen',1,1047,NULL,'25088',NULL,1228,38.382145,-81.19842,0,NULL,NULL,NULL), + (2,35,1,1,0,'965W Maple Path S',965,'W',NULL,'Maple','Path','S',NULL,NULL,NULL,NULL,'Columbus',1,1042,NULL,'78934',NULL,1228,29.712052,-96.56134,0,NULL,NULL,NULL), + (3,142,1,1,0,'805O Pine Ln W',805,'O',NULL,'Pine','Ln','W',NULL,NULL,NULL,NULL,'Collingswood',1,1029,NULL,'08108',NULL,1228,39.915263,-75.06401,0,NULL,NULL,NULL), + (4,5,1,1,0,'173K Northpoint St W',173,'K',NULL,'Northpoint','St','W',NULL,NULL,NULL,NULL,'Valparaiso',1,1013,NULL,'46385',NULL,1228,41.484652,-87.11269,0,NULL,NULL,NULL), + (5,4,1,1,0,'162H Bay Path W',162,'H',NULL,'Bay','Path','W',NULL,NULL,NULL,NULL,'Mound',1,1022,NULL,'55364',NULL,1228,44.933712,-93.66038,0,NULL,NULL,NULL), + (6,9,1,1,0,'337O Caulder Path NE',337,'O',NULL,'Caulder','Path','NE',NULL,NULL,NULL,NULL,'Moro',1,1012,NULL,'62067',NULL,1228,38.91973,-90.01241,0,NULL,NULL,NULL), + (7,123,1,1,0,'11U Cadell Pl W',11,'U',NULL,'Cadell','Pl','W',NULL,NULL,NULL,NULL,'Medford',1,1036,NULL,'97504',NULL,1228,42.334496,-122.83547,0,NULL,NULL,NULL), + (8,83,1,1,0,'891B States Rd SE',891,'B',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Chappell',1,1016,NULL,'40816',NULL,1228,36.987495,-83.32795,0,NULL,NULL,NULL), + (9,186,1,1,0,'933Q Cadell Pl SE',933,'Q',NULL,'Cadell','Pl','SE',NULL,NULL,NULL,NULL,'Perris',1,1004,NULL,'92599',NULL,1228,33.752886,-116.055617,0,NULL,NULL,NULL), + (10,89,1,1,0,'531K El Camino Path SE',531,'K',NULL,'El Camino','Path','SE',NULL,NULL,NULL,NULL,'Bloomingburg',1,1031,NULL,'12721',NULL,1228,41.564426,-74.4265,0,NULL,NULL,NULL), + (11,194,1,1,0,'101I Jackson Rd SE',101,'I',NULL,'Jackson','Rd','SE',NULL,NULL,NULL,NULL,'Hughesville',1,1019,NULL,'20637',NULL,1228,38.523408,-76.75435,0,NULL,NULL,NULL), + (12,168,1,1,0,'559U El Camino Pl NW',559,'U',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Youngsville',1,1037,NULL,'16371',NULL,1228,41.860809,-79.31703,0,NULL,NULL,NULL), + (13,172,1,1,0,'552E States Way S',552,'E',NULL,'States','Way','S',NULL,NULL,NULL,NULL,'Bearden',1,1003,NULL,'71720',NULL,1228,33.733334,-92.64664,0,NULL,NULL,NULL), + (14,117,1,1,0,'514D Main Ave SE',514,'D',NULL,'Main','Ave','SE',NULL,NULL,NULL,NULL,'Annandale',1,1022,NULL,'55302',NULL,1228,45.246631,-94.11692,0,NULL,NULL,NULL), + (15,197,1,1,0,'671A Woodbridge Rd W',671,'A',NULL,'Woodbridge','Rd','W',NULL,NULL,NULL,NULL,'South Bend',1,1013,NULL,'46699',NULL,1228,41.596769,-86.292991,0,NULL,NULL,NULL), + (16,185,1,1,0,'937U Maple Dr SE',937,'U',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'San Antonio',1,1042,NULL,'78236',NULL,1228,29.389767,-98.61251,0,NULL,NULL,NULL), + (17,132,1,1,0,'485W States Pl W',485,'W',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Pocono Pines',1,1037,NULL,'18350',NULL,1228,41.116737,-75.46037,0,NULL,NULL,NULL), + (18,94,1,1,0,'121D Woodbridge Rd N',121,'D',NULL,'Woodbridge','Rd','N',NULL,NULL,NULL,NULL,'Saint Louis',1,1024,NULL,'63195',NULL,1228,38.6531,-90.243462,0,NULL,NULL,NULL), + (19,144,1,1,0,'468J Second Dr NE',468,'J',NULL,'Second','Dr','NE',NULL,NULL,NULL,NULL,'Wichita Falls',1,1042,NULL,'76305',NULL,1228,33.996515,-98.51781,0,NULL,NULL,NULL), + (20,87,1,1,0,'668P Caulder Ave NE',668,'P',NULL,'Caulder','Ave','NE',NULL,NULL,NULL,NULL,'Lake Linden',1,1021,NULL,'49945',NULL,1228,47.17583,-88.32904,0,NULL,NULL,NULL), + (21,42,1,1,0,'465R Lincoln Pl E',465,'R',NULL,'Lincoln','Pl','E',NULL,NULL,NULL,NULL,'Leon',1,1035,NULL,'73441',NULL,1228,33.877679,-97.42814,0,NULL,NULL,NULL), + (22,80,1,1,0,'454W Beech Ln S',454,'W',NULL,'Beech','Ln','S',NULL,NULL,NULL,NULL,'Hawi',1,1010,NULL,'96719',NULL,1228,20.241109,-155.84459,0,NULL,NULL,NULL), + (23,120,1,1,0,'48O Cadell Path S',48,'O',NULL,'Cadell','Path','S',NULL,NULL,NULL,NULL,'Danville',1,1037,NULL,'17821',NULL,1228,40.985594,-76.63449,0,NULL,NULL,NULL), + (24,169,1,1,0,'382A Caulder Path N',382,'A',NULL,'Caulder','Path','N',NULL,NULL,NULL,NULL,'Mendota',1,1022,NULL,'55150',NULL,1228,44.884265,-93.16415,0,NULL,NULL,NULL), + (25,130,1,1,0,'501Z Pine Ave N',501,'Z',NULL,'Pine','Ave','N',NULL,NULL,NULL,NULL,'Barnesville',1,1009,NULL,'30204',NULL,1228,33.05413,-84.14862,0,NULL,NULL,NULL), + (26,17,1,1,0,'421M Beech Path SE',421,'M',NULL,'Beech','Path','SE',NULL,NULL,NULL,NULL,'Pope A F B',1,1032,NULL,'28308',NULL,1228,35.173377,-79.013799,0,NULL,NULL,NULL), + (27,38,1,1,0,'138Q Caulder Pl N',138,'Q',NULL,'Caulder','Pl','N',NULL,NULL,NULL,NULL,'Lawen',1,1036,NULL,'97740',NULL,1228,43.019785,-119.069624,0,NULL,NULL,NULL), + (28,174,1,1,0,'740V Cadell Blvd W',740,'V',NULL,'Cadell','Blvd','W',NULL,NULL,NULL,NULL,'Mineral Springs',1,1032,NULL,'28108',NULL,1228,34.916253,-80.640383,0,NULL,NULL,NULL), + (29,113,1,1,0,'870B Main Rd NW',870,'B',NULL,'Main','Rd','NW',NULL,NULL,NULL,NULL,'Punta Gorda',1,1008,NULL,'33599',NULL,1228,26.871443,-82.007115,0,NULL,NULL,NULL), + (30,171,1,1,0,'88Q Caulder Dr E',88,'Q',NULL,'Caulder','Dr','E',NULL,NULL,NULL,NULL,'Sutter',1,1012,NULL,'62373',NULL,1228,40.240004,-91.35197,0,NULL,NULL,NULL), + (31,97,1,1,0,'723M Beech St SE',723,'M',NULL,'Beech','St','SE',NULL,NULL,NULL,NULL,'Pacific',1,1024,NULL,'63069',NULL,1228,38.482353,-90.73892,0,NULL,NULL,NULL), + (32,29,1,1,0,'955M Lincoln Pl NE',955,'M',NULL,'Lincoln','Pl','NE',NULL,NULL,NULL,NULL,'Fort Myers',1,1008,NULL,'33913',NULL,1228,26.542097,-81.69984,0,NULL,NULL,NULL), + (33,138,1,1,0,'396E Maple Way N',396,'E',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Vergennes',1,1012,NULL,'62994',NULL,1228,37.901441,-89.33485,0,NULL,NULL,NULL), + (34,105,1,1,0,'806O Pine Way E',806,'O',NULL,'Pine','Way','E',NULL,NULL,NULL,NULL,'Vernal',1,1043,NULL,'84078',NULL,1228,40.514262,-109.54223,0,NULL,NULL,NULL), + (35,192,1,1,0,'566U Dowlen Way NW',566,'U',NULL,'Dowlen','Way','NW',NULL,NULL,NULL,NULL,'Dodson',1,1042,NULL,'79230',NULL,1228,34.698438,-100.06623,0,NULL,NULL,NULL), + (36,37,1,1,0,'21G Martin Luther King Pl E',21,'G',NULL,'Martin Luther King','Pl','E',NULL,NULL,NULL,NULL,'Haviland',1,1034,NULL,'45851',NULL,1228,41.030911,-84.60213,0,NULL,NULL,NULL), + (37,165,1,1,0,'530L El Camino Pl NW',530,'L',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Ringgold',1,1045,NULL,'24586',NULL,1228,36.595244,-79.28647,0,NULL,NULL,NULL), + (38,184,1,1,0,'25P Cadell St W',25,'P',NULL,'Cadell','St','W',NULL,NULL,NULL,NULL,'Holder',1,1008,NULL,'34445',NULL,1228,28.948753,-82.406476,0,NULL,NULL,NULL), + (39,158,1,1,0,'154C Dowlen Path S',154,'C',NULL,'Dowlen','Path','S',NULL,NULL,NULL,NULL,'Butternut',1,1048,NULL,'54514',NULL,1228,46.024995,-90.44778,0,NULL,NULL,NULL), + (40,108,1,1,0,'419Q Dowlen Way SW',419,'Q',NULL,'Dowlen','Way','SW',NULL,NULL,NULL,NULL,'Port Washington',1,1048,NULL,'53074',NULL,1228,43.40181,-87.88001,0,NULL,NULL,NULL), + (41,96,1,1,0,'975E College Path S',975,'E',NULL,'College','Path','S',NULL,NULL,NULL,NULL,'Squirrel',1,1011,NULL,'83447',NULL,1228,44.319199,-111.60171,0,NULL,NULL,NULL), + (42,188,1,1,0,'377K Caulder Ave NW',377,'K',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Newtown',1,1013,NULL,'47969',NULL,1228,40.205056,-87.15089,0,NULL,NULL,NULL), + (43,58,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,NULL), + (44,190,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,NULL), + (45,155,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,NULL), + (46,26,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,NULL), + (47,53,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,NULL), + (48,156,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,NULL), + (49,131,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,NULL), + (50,10,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,NULL), + (51,177,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,NULL), + (52,3,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL), + (53,191,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,NULL), + (54,134,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,NULL), + (55,73,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,NULL), + (56,88,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,NULL), + (57,23,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,NULL), + (58,51,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,NULL), + (59,43,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,NULL), + (60,75,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,NULL), + (61,65,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,NULL), + (62,159,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,NULL), + (63,103,3,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,NULL), + (64,187,2,1,0,'615V Caulder Pl SW',615,'V',NULL,'Caulder','Pl','SW',NULL,'Community Relations',NULL,NULL,'Maupin',1,1036,NULL,'97037',NULL,1228,45.093643,-121.10814,0,NULL,NULL,63), + (65,135,3,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,NULL), + (66,115,2,1,0,'506H Woodbridge Path E',506,'H',NULL,'Woodbridge','Path','E',NULL,'Editorial Dept',NULL,NULL,'Sacramento',1,1004,NULL,'95813',NULL,1228,38.377411,-121.444429,0,NULL,NULL,65), + (67,77,3,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,NULL), + (68,81,2,1,0,'45P Woodbridge Ln NE',45,'P',NULL,'Woodbridge','Ln','NE',NULL,'Churchgate',NULL,NULL,'Jerome',1,1011,NULL,'83338',NULL,1228,42.710124,-114.46394,0,NULL,NULL,67), + (69,146,3,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,NULL), + (70,178,2,1,0,'810P Beech Pl SW',810,'P',NULL,'Beech','Pl','SW',NULL,'Receiving',NULL,NULL,'Winslow',1,1012,NULL,'61089',NULL,1228,42.475078,-89.81607,0,NULL,NULL,69), + (71,50,3,1,0,'763G College Ave S',763,'G',NULL,'College','Ave','S',NULL,'c/o PO Plus',NULL,NULL,'Herrick',1,1012,NULL,'62431',NULL,1228,39.228594,-88.98873,0,NULL,NULL,NULL), + (72,22,3,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,NULL), + (73,33,2,1,0,'630O Main St S',630,'O',NULL,'Main','St','S',NULL,'Urgent',NULL,NULL,'Boston',1,1020,NULL,'02106',NULL,1228,42.354318,-71.073449,0,NULL,NULL,72), + (74,59,3,1,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,NULL), + (75,185,2,0,0,'389N Northpoint Path NW',389,'N',NULL,'Northpoint','Path','NW',NULL,'Attn: Development',NULL,NULL,'Fresno',1,1004,NULL,'93779',NULL,1228,36.746375,-119.639658,0,NULL,NULL,74), + (76,68,3,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,NULL), + (77,85,2,1,0,'520Z Pine Pl NW',520,'Z',NULL,'Pine','Pl','NW',NULL,'c/o OPDC',NULL,NULL,'Flintstone',1,1019,NULL,'21530',NULL,1228,39.697548,-78.53893,0,NULL,NULL,76), + (78,133,3,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,NULL), + (79,72,2,1,0,'145A Caulder Ln N',145,'A',NULL,'Caulder','Ln','N',NULL,'Receiving',NULL,NULL,'Chester',1,1028,NULL,'03036',NULL,1228,42.967823,-71.23453,0,NULL,NULL,78), + (80,52,3,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,NULL), + (81,109,2,1,0,'686T Lincoln Dr S',686,'T',NULL,'Lincoln','Dr','S',NULL,'c/o PO Plus',NULL,NULL,'Standish',1,1004,NULL,'96128',NULL,1228,40.34863,-120.4065,0,NULL,NULL,80), + (82,19,3,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,NULL), + (83,129,2,1,0,'337X Beech Ln NE',337,'X',NULL,'Beech','Ln','NE',NULL,'Mailstop 101',NULL,NULL,'Helenwood',1,1041,NULL,'37755',NULL,1228,36.434757,-84.53288,0,NULL,NULL,82), + (84,161,3,1,0,'617Q Maple Dr SW',617,'Q',NULL,'Maple','Dr','SW',NULL,'Attn: Development',NULL,NULL,'Joppa',1,1000,NULL,'35087',NULL,1228,34.303718,-86.58323,0,NULL,NULL,NULL), + (85,69,3,1,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,NULL), + (86,4,2,0,0,'326N Second Pl W',326,'N',NULL,'Second','Pl','W',NULL,'Community Relations',NULL,NULL,'Hyannis Port',1,1020,NULL,'02647',NULL,1228,41.63275,-70.30435,0,NULL,NULL,85), + (87,95,3,1,0,'571U El Camino Pl S',571,'U',NULL,'El Camino','Pl','S',NULL,'Donor Relations',NULL,NULL,'Lagrange',1,1034,NULL,'44050',NULL,1228,41.259352,-82.13542,0,NULL,NULL,NULL), + (88,64,3,1,0,'475G Dowlen Ln SW',475,'G',NULL,'Dowlen','Ln','SW',NULL,'Donor Relations',NULL,NULL,'Yamhill',1,1036,NULL,'97148',NULL,1228,45.352399,-123.22502,0,NULL,NULL,NULL), + (89,139,3,1,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,NULL), + (90,197,2,0,0,'446M Second Ln E',446,'M',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Jacksonville',1,1008,NULL,'32237',NULL,1228,30.34494,-81.683107,0,NULL,NULL,89), + (91,122,3,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,NULL), + (92,18,2,1,0,'20O Beech St SW',20,'O',NULL,'Beech','St','SW',NULL,'Attn: Development',NULL,NULL,'Cranfills Gap',1,1042,NULL,'76637',NULL,1228,31.771383,-97.82298,0,NULL,NULL,91), + (93,7,3,1,0,'21W Caulder Blvd SE',21,'W',NULL,'Caulder','Blvd','SE',NULL,'Urgent',NULL,NULL,'Hanover',1,1019,NULL,'21098',NULL,1228,38.974203,-76.594942,0,NULL,NULL,NULL), + (94,148,3,1,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,NULL), + (95,96,2,0,0,'725M Cadell Rd NW',725,'M',NULL,'Cadell','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Mapleton',1,1012,NULL,'61547',NULL,1228,40.619174,-89.72628,0,NULL,NULL,94), + (96,67,3,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,NULL), + (97,76,2,1,0,'323S Bay Pl E',323,'S',NULL,'Bay','Pl','E',NULL,'Disbursements',NULL,NULL,'Owensboro',1,1016,NULL,'42302',NULL,1228,37.745491,-87.112823,0,NULL,NULL,96), + (98,16,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43), + (99,24,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43), + (100,189,1,1,0,'611T Jackson Dr S',611,'T',NULL,'Jackson','Dr','S',NULL,NULL,NULL,NULL,'London',1,1016,NULL,'40748',NULL,1228,37.137615,-84.115617,0,NULL,NULL,43), + (101,86,1,1,0,'258S Martin Luther King Pl W',258,'S',NULL,'Martin Luther King','Pl','W',NULL,NULL,NULL,NULL,'Stafford Springs',1,1006,NULL,'06076',NULL,1228,41.979871,-72.27863,0,NULL,NULL,NULL), + (102,176,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (103,151,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (104,20,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (105,141,1,1,0,'300G States Ln S',300,'G',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Gaithersburg',1,1019,NULL,'20879',NULL,1228,39.168656,-77.18716,0,NULL,NULL,44), + (106,200,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (107,125,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (108,55,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (109,49,1,1,0,'982W Cadell St E',982,'W',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46324',NULL,1228,41.583535,-87.50391,0,NULL,NULL,45), + (110,179,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46), + (111,34,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46), + (112,164,1,1,0,'635O Woodbridge Ave NW',635,'O',NULL,'Woodbridge','Ave','NW',NULL,NULL,NULL,NULL,'Wolf River',1,1015,NULL,'66081',NULL,1228,39.773145,-95.233817,0,NULL,NULL,46), + (113,150,1,1,0,'107Y Cadell Blvd S',107,'Y',NULL,'Cadell','Blvd','S',NULL,NULL,NULL,NULL,'Oklahoma City',1,1035,NULL,'73131',NULL,1228,35.576357,-97.46924,0,NULL,NULL,NULL), + (114,193,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47), + (115,44,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47), + (116,60,1,1,0,'448U States St SE',448,'U',NULL,'States','St','SE',NULL,NULL,NULL,NULL,'Titusville',1,1008,NULL,'32783',NULL,1228,28.306726,-80.686159,0,NULL,NULL,47), + (117,183,1,1,0,'885A Second Rd W',885,'A',NULL,'Second','Rd','W',NULL,NULL,NULL,NULL,'Bouse',1,1002,NULL,'85325',NULL,1228,33.946064,-113.9537,0,NULL,NULL,NULL), + (118,109,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (119,76,1,0,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (120,126,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (121,84,1,1,0,'246G El Camino Dr SW',246,'G',NULL,'El Camino','Dr','SW',NULL,NULL,NULL,NULL,'Lingo',1,1030,NULL,'88123',NULL,1228,33.717607,-103.145119,0,NULL,NULL,48), + (122,149,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (123,147,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (124,74,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (125,46,1,1,0,'953F Martin Luther King Ln E',953,'F',NULL,'Martin Luther King','Ln','E',NULL,NULL,NULL,NULL,'Strandburg',1,1040,NULL,'57265',NULL,1228,45.014788,-96.78889,0,NULL,NULL,49), + (126,163,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (127,162,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (128,66,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (129,140,1,1,0,'78Z Martin Luther King Path E',78,'Z',NULL,'Martin Luther King','Path','E',NULL,NULL,NULL,NULL,'Northrop',1,1022,NULL,'56075',NULL,1228,43.735594,-94.43584,0,NULL,NULL,50), + (130,14,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (131,170,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (132,45,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (133,21,1,1,0,'814J Main Pl NW',814,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Lincolndale',1,1031,NULL,'10540',NULL,1228,41.333398,-73.724257,0,NULL,NULL,51), + (134,199,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (135,112,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (136,79,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (137,124,1,1,0,'72K Main Rd SW',72,'K',NULL,'Main','Rd','SW',NULL,NULL,NULL,NULL,'San Fernando',1,1004,NULL,'91341',NULL,1228,33.786594,-118.298662,0,NULL,NULL,52), + (138,91,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (139,104,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (140,92,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (141,48,1,1,0,'601P Main Pl W',601,'P',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Portis',1,1015,NULL,'67474',NULL,1228,39.579664,-98.70224,0,NULL,NULL,53), + (142,100,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54), + (143,160,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54), + (144,57,1,1,0,'763O Cadell Rd SE',763,'O',NULL,'Cadell','Rd','SE',NULL,NULL,NULL,NULL,'Prescott',1,1002,NULL,'86302',NULL,1228,34.574921,-112.491528,0,NULL,NULL,54), + (145,110,1,1,0,'717I Beech Ave SW',717,'I',NULL,'Beech','Ave','SW',NULL,NULL,NULL,NULL,'Shreveport',1,1017,NULL,'71161',NULL,1228,32.607556,-93.75256,0,NULL,NULL,NULL), + (146,6,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55), + (147,13,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55), + (148,62,1,1,0,'253E Pine Dr SE',253,'E',NULL,'Pine','Dr','SE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60655',NULL,1228,41.696283,-87.69912,0,NULL,NULL,55), + (149,198,1,1,0,'866W College Rd SE',866,'W',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Senoia',1,1009,NULL,'30276',NULL,1228,33.281102,-84.58017,0,NULL,NULL,NULL), + (150,137,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (151,99,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (152,116,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (153,15,1,1,0,'330F Woodbridge Path NE',330,'F',NULL,'Woodbridge','Path','NE',NULL,NULL,NULL,NULL,'Port Chester',1,1031,NULL,'10573',NULL,1228,41.010376,-73.67326,0,NULL,NULL,56), + (154,182,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (155,114,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (156,32,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (157,180,1,1,0,'229E College Pl SE',229,'E',NULL,'College','Pl','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86422',NULL,1228,35.109303,-114.574004,0,NULL,NULL,57), + (158,90,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58), + (159,39,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58), + (160,41,1,1,0,'731U Dowlen Dr NW',731,'U',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Sugarloaf Shores',1,1008,NULL,'33044',NULL,1228,24.664649,-81.565319,0,NULL,NULL,58), + (161,18,1,0,0,'276T Caulder Blvd W',276,'T',NULL,'Caulder','Blvd','W',NULL,NULL,NULL,NULL,'Yanceyville',1,1032,NULL,'27379',NULL,1228,36.387904,-79.33107,0,NULL,NULL,NULL), + (162,121,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59), + (163,196,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59), + (164,195,1,1,0,'949I Main Ave W',949,'I',NULL,'Main','Ave','W',NULL,NULL,NULL,NULL,'Roy',1,1043,NULL,'84067',NULL,1228,41.173226,-112.05093,0,NULL,NULL,59), + (165,2,1,1,0,'552C Pine Blvd W',552,'C',NULL,'Pine','Blvd','W',NULL,NULL,NULL,NULL,'Ozawkie',1,1015,NULL,'66070',NULL,1228,39.201834,-95.44963,0,NULL,NULL,NULL), + (166,12,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (167,61,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (168,63,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (169,154,1,1,0,'638U States Blvd W',638,'U',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'Gardner',1,1033,NULL,'58036',NULL,1228,47.15096,-96.96482,0,NULL,NULL,60), + (170,181,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61), + (171,175,1,1,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61), + (172,85,1,0,0,'675J Martin Luther King Dr W',675,'J',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Reserve',1,1017,NULL,'70048',NULL,1228,30.071155,-90.546138,0,NULL,NULL,61), + (173,47,1,1,0,'684E Second Ave NE',684,'E',NULL,'Second','Ave','NE',NULL,NULL,NULL,NULL,'Umatilla',1,1008,NULL,'32784',NULL,1228,28.948549,-81.70621,0,NULL,NULL,NULL), + (174,118,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62), + (175,111,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62), + (176,152,1,1,0,'709V Cadell Path NW',709,'V',NULL,'Cadell','Path','NW',NULL,NULL,NULL,NULL,'Inyokern',1,1004,NULL,'93527',NULL,1228,35.734418,-117.89313,0,NULL,NULL,62), + (177,36,1,1,0,'917Y Bay Dr NW',917,'Y',NULL,'Bay','Dr','NW',NULL,NULL,NULL,NULL,'Woodstock',1,1012,NULL,'60098',NULL,1228,42.316121,-88.43884,0,NULL,NULL,NULL), + (178,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL), + (179,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL), + (180,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */; UNLOCK TABLES; @@ -1985,208 +1990,208 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contact` WRITE; /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */; INSERT INTO `civicrm_contact` (`id`, `contact_type`, `external_identifier`, `display_name`, `organization_name`, `contact_sub_type`, `first_name`, `middle_name`, `last_name`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `sort_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `hash`, `api_key`, `source`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`, `preferred_mail_format`) VALUES - (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-10-07 01:51:16','Both'), - (2,'Individual',NULL,'Sonny McReynolds',NULL,NULL,'Sonny','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'3975405155',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny McReynolds',NULL,2,'1965-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (3,'Individual',NULL,'Teresa Prentice-Zope',NULL,NULL,'Teresa','Y','Prentice-Zope',0,0,0,0,0,0,NULL,'Prentice-Zope, Teresa',NULL,NULL,NULL,'4',NULL,'4026368595',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Prentice-Zope',NULL,1,'1977-10-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (4,'Individual',NULL,'Mrs. Eleonor Wattson-Terrell',NULL,NULL,'Eleonor','','Wattson-Terrell',0,0,0,0,1,0,NULL,'Wattson-Terrell, Eleonor',NULL,NULL,NULL,'5',NULL,'362340920',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Mrs. Eleonor Wattson-Terrell',NULL,1,'1967-08-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (5,'Individual',NULL,'Dr. Daren Robertson II',NULL,NULL,'Daren','O','Robertson',0,0,0,0,0,0,NULL,'Robertson, Daren',NULL,NULL,NULL,NULL,NULL,'3531188522',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Dr. Daren Robertson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (6,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (7,'Individual',NULL,'Merrie Bachman',NULL,NULL,'Merrie','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Merrie',NULL,NULL,NULL,'4',NULL,'2483805039',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Bachman',NULL,NULL,'1987-03-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (8,'Individual',NULL,'Dr. Merrie Dimitrov-Deforest',NULL,NULL,'Merrie','Z','Dimitrov-Deforest',0,0,0,0,0,0,NULL,'Dimitrov-Deforest, Merrie',NULL,NULL,NULL,'5',NULL,'2904668003',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Dr. Merrie Dimitrov-Deforest',NULL,NULL,'1998-10-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (9,'Individual',NULL,'Nicole Zope-Robertson',NULL,NULL,'Nicole','','Zope-Robertson',0,0,0,0,1,0,NULL,'Zope-Robertson, Nicole',NULL,NULL,NULL,'5',NULL,'4230311701',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Zope-Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (10,'Individual',NULL,'blackwelln@spamalot.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'blackwelln@spamalot.co.pl',NULL,NULL,NULL,'2',NULL,'916898902',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear blackwelln@spamalot.co.pl',1,NULL,'Dear blackwelln@spamalot.co.pl',1,NULL,'blackwelln@spamalot.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (11,'Household',NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,'845831176',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Lee family',5,NULL,'Dear Lee family',2,NULL,'Lee family',NULL,NULL,NULL,0,NULL,'Lee family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (12,'Individual',NULL,'Lawerence Adams','Ohio Advocacy Association',NULL,'Lawerence','K','Adams',0,0,0,0,0,0,NULL,'Adams, Lawerence',NULL,NULL,NULL,NULL,NULL,'2270644856',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Adams',NULL,2,'1971-11-12',0,NULL,NULL,NULL,NULL,NULL,118,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (13,'Individual',NULL,'Russell Samuels III',NULL,NULL,'Russell','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Russell',NULL,NULL,NULL,NULL,NULL,'3958135330',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Samuels III',NULL,2,'1988-03-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (14,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (15,'Individual',NULL,'Landon Cooper Jr.',NULL,NULL,'Landon','','Cooper',1,0,0,0,0,0,NULL,'Cooper, Landon',NULL,NULL,NULL,NULL,NULL,'3917161471',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Cooper Jr.',NULL,2,'1985-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (16,'Individual',NULL,'Dr. Junko McReynolds',NULL,NULL,'Junko','U','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Junko',NULL,NULL,NULL,'1',NULL,'923065727',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Dr. Junko McReynolds',NULL,NULL,'1965-09-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (17,'Organization',NULL,'Lancaster Sustainability Services','Lancaster Sustainability Services',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Lancaster Sustainability Services',NULL,NULL,NULL,'3',NULL,'2607308804',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lancaster Sustainability Services',NULL,NULL,NULL,0,NULL,NULL,57,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (18,'Individual',NULL,'Rosario Blackwell III',NULL,NULL,'Rosario','','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Rosario',NULL,NULL,NULL,NULL,NULL,'212312556',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Blackwell III',NULL,2,'1981-01-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (19,'Organization',NULL,'Local Culture Collective','Local Culture Collective',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Local Culture Collective',NULL,NULL,NULL,NULL,NULL,'516325396',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Culture Collective',NULL,NULL,NULL,0,NULL,NULL,69,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (20,'Individual',NULL,'Roland DÃaz III',NULL,NULL,'Roland','Z','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Roland',NULL,NULL,NULL,NULL,NULL,'2252303156',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland DÃaz III',NULL,NULL,'1952-11-05',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (21,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Blackwell family',NULL,NULL,NULL,'2',NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (22,'Individual',NULL,'Ms. Laree Jameson',NULL,NULL,'Laree','Y','Jameson',0,0,0,0,1,0,NULL,'Jameson, Laree',NULL,NULL,NULL,'2',NULL,'1055131510',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree Jameson',NULL,1,'1996-11-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (23,'Individual',NULL,'Troy McReynolds',NULL,NULL,'Troy','','McReynolds',1,0,0,0,1,0,NULL,'McReynolds, Troy',NULL,NULL,NULL,'5',NULL,'2359789954',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy McReynolds',NULL,NULL,'1977-07-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (24,'Individual',NULL,'ivanov.eleonor61@fakemail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'ivanov.eleonor61@fakemail.co.nz',NULL,NULL,NULL,'4',NULL,'2903011637',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear ivanov.eleonor61@fakemail.co.nz',1,NULL,'Dear ivanov.eleonor61@fakemail.co.nz',1,NULL,'ivanov.eleonor61@fakemail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (25,'Individual',NULL,'Ms. Merrie Dimitrov',NULL,NULL,'Merrie','','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Merrie',NULL,NULL,NULL,'4',NULL,'779748961',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (26,'Individual',NULL,'Craig Cruz',NULL,NULL,'Craig','U','Cruz',0,0,0,0,0,0,NULL,'Cruz, Craig',NULL,NULL,NULL,'4',NULL,'2921138487',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Cruz',NULL,2,'2008-05-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (27,'Individual',NULL,'Brigette Wilson',NULL,NULL,'Brigette','','Wilson',0,0,0,0,0,0,NULL,'Wilson, Brigette',NULL,NULL,NULL,NULL,NULL,'4271380473',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (28,'Individual',NULL,'Maria Cruz-Dimitrov Jr.',NULL,NULL,'Maria','','Cruz-Dimitrov',0,0,0,0,0,0,NULL,'Cruz-Dimitrov, Maria',NULL,NULL,NULL,NULL,NULL,'3267119889',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Cruz-Dimitrov Jr.',NULL,2,'1981-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (29,'Individual',NULL,'mcreynolds.lashawnda@mymail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'mcreynolds.lashawnda@mymail.info',NULL,NULL,NULL,'4',NULL,'268711653',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear mcreynolds.lashawnda@mymail.info',1,NULL,'Dear mcreynolds.lashawnda@mymail.info',1,NULL,'mcreynolds.lashawnda@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (30,'Individual',NULL,'smith.o.mei95@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'smith.o.mei95@fishmail.co.nz',NULL,NULL,NULL,'2',NULL,'3826978335',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear smith.o.mei95@fishmail.co.nz',1,NULL,'Dear smith.o.mei95@fishmail.co.nz',1,NULL,'smith.o.mei95@fishmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (31,'Organization',NULL,'Ben Franklin Music Association','Ben Franklin Music Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ben Franklin Music Association',NULL,NULL,NULL,'3',NULL,'390038760',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ben Franklin Music Association',NULL,NULL,NULL,0,NULL,NULL,194,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (32,'Individual',NULL,'Mr. Toby Grant',NULL,NULL,'Toby','U','Grant',0,0,0,0,0,0,NULL,'Grant, Toby',NULL,NULL,NULL,NULL,NULL,'944702831',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Grant',NULL,NULL,'1990-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (33,'Individual',NULL,'rosariosmith@testing.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'rosariosmith@testing.co.uk',NULL,NULL,NULL,NULL,NULL,'2541418479',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear rosariosmith@testing.co.uk',1,NULL,'Dear rosariosmith@testing.co.uk',1,NULL,'rosariosmith@testing.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (34,'Individual',NULL,'Iris DÃaz',NULL,NULL,'Iris','S','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Iris',NULL,NULL,NULL,'4',NULL,'2732168560',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris DÃaz',NULL,1,'1982-11-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (35,'Individual',NULL,'Maxwell Terry',NULL,NULL,'Maxwell','D','Terry',1,0,0,0,0,0,NULL,'Terry, Maxwell',NULL,NULL,NULL,'2',NULL,'528410264',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Terry',NULL,2,'1948-02-05',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (36,'Individual',NULL,'Kiara Grant',NULL,NULL,'Kiara','','Grant',0,0,0,0,0,0,NULL,'Grant, Kiara',NULL,NULL,NULL,NULL,NULL,'334214546',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Grant',NULL,1,'1947-10-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (37,'Individual',NULL,'Princess Terry',NULL,NULL,'Princess','','Terry',1,0,0,0,0,0,NULL,'Terry, Princess',NULL,NULL,NULL,NULL,NULL,'383206962',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Terry',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (38,'Individual',NULL,'Elizabeth Blackwell',NULL,NULL,'Elizabeth','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Elizabeth',NULL,NULL,NULL,'3',NULL,'197038680',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Blackwell',NULL,NULL,'1969-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (39,'Individual',NULL,'Mrs. Lashawnda Jacobs',NULL,NULL,'Lashawnda','W','Jacobs',0,1,0,0,1,0,NULL,'Jacobs, Lashawnda',NULL,NULL,NULL,'4',NULL,'1880205754',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Mrs. Lashawnda Jacobs',NULL,1,'1955-01-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (40,'Individual',NULL,'Mr. Lawerence Lee Sr.',NULL,NULL,'Lawerence','','Lee',0,0,0,0,1,0,NULL,'Lee, Lawerence',NULL,NULL,NULL,NULL,NULL,'834383091',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Lee Sr.',NULL,2,'1995-11-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (41,'Individual',NULL,'Rolando Samuels',NULL,NULL,'Rolando','S','Samuels',0,0,0,0,1,0,NULL,'Samuels, Rolando',NULL,NULL,NULL,'5',NULL,'210030795',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Samuels',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (42,'Individual',NULL,'Dr. Brittney Blackwell',NULL,NULL,'Brittney','','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Brittney',NULL,NULL,NULL,'1',NULL,'4167007006',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Dr. Brittney Blackwell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (43,'Individual',NULL,'Mr. Shad Lee Sr.',NULL,NULL,'Shad','D','Lee',0,0,0,0,0,0,NULL,'Lee, Shad',NULL,NULL,NULL,'5',NULL,'2277508634',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Mr. Shad Lee Sr.',NULL,2,'2001-03-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (44,'Individual',NULL,'blackwellm13@spamalot.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'blackwellm13@spamalot.co.pl',NULL,NULL,NULL,'5',NULL,'1436682692',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear blackwellm13@spamalot.co.pl',1,NULL,'Dear blackwellm13@spamalot.co.pl',1,NULL,'blackwellm13@spamalot.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (45,'Individual',NULL,'lawerencejones@fishmail.co.uk','States Action Systems',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'lawerencejones@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,'393377011',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear lawerencejones@fishmail.co.uk',1,NULL,'Dear lawerencejones@fishmail.co.uk',1,NULL,'lawerencejones@fishmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,111,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (46,'Individual',NULL,'Shauna Jensen',NULL,NULL,'Shauna','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Shauna',NULL,NULL,NULL,NULL,NULL,'108136044',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Jensen',NULL,1,'1957-10-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (47,'Individual',NULL,'Valene Barkley',NULL,NULL,'Valene','O','Barkley',1,0,0,0,0,0,NULL,'Barkley, Valene',NULL,NULL,NULL,NULL,NULL,'4039078340',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Barkley',NULL,1,'1975-09-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (48,'Individual',NULL,'mterrell83@notmail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'mterrell83@notmail.com',NULL,NULL,NULL,'3',NULL,'2885628683',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear mterrell83@notmail.com',1,NULL,'Dear mterrell83@notmail.com',1,NULL,'mterrell83@notmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (49,'Individual',NULL,'Beula Jacobs',NULL,NULL,'Beula','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Beula',NULL,NULL,NULL,'3',NULL,'41714917',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Jacobs',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (50,'Organization',NULL,'College Advocacy Partnership','College Advocacy Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'College Advocacy Partnership',NULL,NULL,NULL,NULL,NULL,'592323356',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'College Advocacy Partnership',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (51,'Organization',NULL,'Montier Peace Solutions','Montier Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Montier Peace Solutions',NULL,NULL,NULL,'2',NULL,'1489970106',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Montier Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,75,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (52,'Household',NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,'3351288571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov family',5,NULL,'Dear Dimitrov family',2,NULL,'Dimitrov family',NULL,NULL,NULL,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (53,'Organization',NULL,'Community Education Partnership','Community Education Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Community Education Partnership',NULL,NULL,NULL,NULL,NULL,'2557431911',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Education Partnership',NULL,NULL,NULL,0,NULL,NULL,180,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (54,'Individual',NULL,'gonzlez.carlos@mymail.org','Mississippi Wellness Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'gonzlez.carlos@mymail.org',NULL,NULL,NULL,'3',NULL,'603658809',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear gonzlez.carlos@mymail.org',1,NULL,'Dear gonzlez.carlos@mymail.org',1,NULL,'gonzlez.carlos@mymail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,166,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (55,'Individual',NULL,'Kathlyn Samson',NULL,NULL,'Kathlyn','X','Samson',0,0,0,0,0,0,NULL,'Samson, Kathlyn',NULL,NULL,NULL,'4',NULL,'2952894256',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Samson',NULL,NULL,'1935-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (56,'Individual',NULL,'Ms. Ashley Wilson-DÃaz',NULL,NULL,'Ashley','W','Wilson-DÃaz',0,0,0,0,1,0,NULL,'Wilson-DÃaz, Ashley',NULL,NULL,NULL,NULL,NULL,'2387950815',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ms. Ashley Wilson-DÃaz',NULL,1,'1964-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (57,'Individual',NULL,'tdimitrov@fishmail.net','Lancaster Sustainability Services',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'tdimitrov@fishmail.net',NULL,NULL,NULL,'5',NULL,'1109834999',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear tdimitrov@fishmail.net',1,NULL,'Dear tdimitrov@fishmail.net',1,NULL,'tdimitrov@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,17,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (58,'Individual',NULL,'Juliann Zope','California Sports Collective',NULL,'Juliann','','Zope',0,0,0,0,0,0,NULL,'Zope, Juliann',NULL,NULL,NULL,NULL,NULL,'2334217579',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Zope',NULL,1,'2006-05-12',0,NULL,NULL,NULL,NULL,NULL,121,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (59,'Household',NULL,'Dimitrov-Deforest family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Dimitrov-Deforest family',NULL,NULL,NULL,'4',NULL,'1341415404',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov-Deforest family',5,NULL,'Dear Dimitrov-Deforest family',2,NULL,'Dimitrov-Deforest family',NULL,NULL,NULL,0,NULL,'Dimitrov-Deforest family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (60,'Individual',NULL,'Brigette Jameson',NULL,NULL,'Brigette','K','Jameson',0,0,0,0,0,0,NULL,'Jameson, Brigette',NULL,NULL,NULL,NULL,NULL,'839229848',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Jameson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (61,'Individual',NULL,'Mrs. Rebekah Barkley',NULL,NULL,'Rebekah','Q','Barkley',1,1,0,0,0,0,NULL,'Barkley, Rebekah',NULL,NULL,NULL,NULL,NULL,'3218825396',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Mrs. Rebekah Barkley',NULL,1,'1999-08-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (62,'Individual',NULL,'Esta Samson-Cruz',NULL,NULL,'Esta','','Samson-Cruz',0,0,0,0,1,0,NULL,'Samson-Cruz, Esta',NULL,NULL,NULL,'4',NULL,'4158236520',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Samson-Cruz',NULL,1,'1957-07-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (63,'Individual',NULL,'Dr. Winford Dimitrov Jr.',NULL,NULL,'Winford','H','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Winford',NULL,NULL,NULL,NULL,NULL,'1833902224',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Dimitrov Jr.',NULL,2,'1966-03-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (64,'Organization',NULL,'West Virginia Software Center','West Virginia Software Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'West Virginia Software Center',NULL,NULL,NULL,NULL,NULL,'3912809978',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'West Virginia Software Center',NULL,NULL,NULL,0,NULL,NULL,120,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (65,'Individual',NULL,'Dr. Rolando Zope III',NULL,NULL,'Rolando','','Zope',0,0,0,0,0,0,NULL,'Zope, Rolando',NULL,NULL,NULL,NULL,NULL,'1046286833',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Zope III',NULL,2,'1973-05-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (66,'Individual',NULL,'Mrs. Beula Jensen',NULL,NULL,'Beula','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Beula',NULL,NULL,NULL,'2',NULL,'1956895432',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Mrs. Beula Jensen',NULL,1,'2001-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (67,'Individual',NULL,'Mr. Ray DÃaz',NULL,NULL,'Ray','','DÃaz',1,0,0,0,0,0,NULL,'DÃaz, Ray',NULL,NULL,NULL,'1',NULL,'3718606609',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Mr. Ray DÃaz',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (68,'Individual',NULL,'yadavm72@notmail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'yadavm72@notmail.org',NULL,NULL,NULL,'2',NULL,'1624352172',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear yadavm72@notmail.org',1,NULL,'Dear yadavm72@notmail.org',1,NULL,'yadavm72@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (69,'Individual',NULL,'Maxwell McReynolds II','Local Culture Collective',NULL,'Maxwell','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Maxwell',NULL,NULL,NULL,'5',NULL,'961058467',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell McReynolds II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,19,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (70,'Individual',NULL,'Bernadette Lee',NULL,NULL,'Bernadette','','Lee',0,0,0,0,0,0,NULL,'Lee, Bernadette',NULL,NULL,NULL,'3',NULL,'3876458768',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Lee',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (71,'Individual',NULL,'Clint Cruz III',NULL,NULL,'Clint','I','Cruz',0,0,0,0,0,0,NULL,'Cruz, Clint',NULL,NULL,NULL,NULL,NULL,'3677859642',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Cruz III',NULL,2,'1961-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (72,'Individual',NULL,'Mr. Irvin ÅÄ…chowski',NULL,NULL,'Irvin','','ÅÄ…chowski',0,0,0,0,1,0,NULL,'ÅÄ…chowski, Irvin',NULL,NULL,NULL,'3',NULL,'2177704001',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Mr. Irvin ÅÄ…chowski',NULL,2,'1972-07-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (73,'Individual',NULL,'Eleonor Robertson',NULL,NULL,'Eleonor','F','Robertson',0,0,0,0,0,0,NULL,'Robertson, Eleonor',NULL,NULL,NULL,'2',NULL,'2051195654',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Robertson',NULL,1,'1954-05-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (74,'Organization',NULL,'Longville Action Center','Longville Action Center',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Longville Action Center',NULL,NULL,NULL,NULL,NULL,'2327686758',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Longville Action Center',NULL,NULL,NULL,0,NULL,NULL,159,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (75,'Individual',NULL,'Mr. Allan McReynolds','Montier Peace Solutions',NULL,'Allan','','McReynolds',0,1,0,0,0,0,NULL,'McReynolds, Allan',NULL,NULL,NULL,'1',NULL,'3819567113',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan McReynolds',NULL,2,'1992-05-23',0,NULL,NULL,NULL,NULL,NULL,51,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (76,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,'4',NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (77,'Individual',NULL,'Daren Jacobs',NULL,NULL,'Daren','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Daren',NULL,NULL,NULL,'4',NULL,'1181505103',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Jacobs',NULL,NULL,'1979-09-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (78,'Individual',NULL,'Lincoln Zope Sr.',NULL,NULL,'Lincoln','','Zope',1,0,0,0,0,0,NULL,'Zope, Lincoln',NULL,NULL,NULL,'2',NULL,'2972737085',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Zope Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (79,'Individual',NULL,'Dr. Beula Jacobs','Van Ness Literacy Solutions',NULL,'Beula','','Jacobs',0,0,0,0,1,0,NULL,'Jacobs, Beula',NULL,NULL,NULL,NULL,NULL,'41714917',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Dr. Beula Jacobs',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,150,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (80,'Individual',NULL,'Ms. Teresa Yadav',NULL,NULL,'Teresa','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Teresa',NULL,NULL,NULL,NULL,NULL,'2032766377',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Ms. Teresa Yadav',NULL,1,'1983-09-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (81,'Individual',NULL,'Mrs. Shauna Roberts',NULL,NULL,'Shauna','','Roberts',0,1,0,0,0,0,NULL,'Roberts, Shauna',NULL,NULL,NULL,NULL,NULL,'927862076',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Mrs. Shauna Roberts',NULL,1,'1980-03-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (82,'Individual',NULL,'Dr. Erik Yadav Jr.',NULL,NULL,'Erik','N','Yadav',0,1,0,0,0,0,NULL,'Yadav, Erik',NULL,NULL,NULL,NULL,NULL,'3764928217',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Dr. Erik Yadav Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (83,'Individual',NULL,'Ashley Jameson',NULL,NULL,'Ashley','','Jameson',1,1,0,0,0,0,NULL,'Jameson, Ashley',NULL,NULL,NULL,'1',NULL,'3561508179',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Jameson',NULL,1,'1948-08-28',1,'2023-06-21',NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (84,'Individual',NULL,'ashleyjameson@lol.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'ashleyjameson@lol.org',NULL,NULL,NULL,'5',NULL,'3536303843',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear ashleyjameson@lol.org',1,NULL,'Dear ashleyjameson@lol.org',1,NULL,'ashleyjameson@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (85,'Individual',NULL,'Dr. Lawerence Cruz III',NULL,NULL,'Lawerence','B','Cruz',0,1,0,0,1,0,NULL,'Cruz, Lawerence',NULL,NULL,NULL,NULL,NULL,'1184039604',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Dr. Lawerence Cruz III',NULL,NULL,'1989-03-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (86,'Individual',NULL,'Jay Wattson II',NULL,NULL,'Jay','','Wattson',0,0,0,0,0,0,NULL,'Wattson, Jay',NULL,NULL,NULL,'5',NULL,'292534569',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Wattson II',NULL,2,'1998-12-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (87,'Individual',NULL,'Megan Roberts-Dimitrov',NULL,NULL,'Megan','X','Roberts-Dimitrov',1,1,0,0,0,0,NULL,'Roberts-Dimitrov, Megan',NULL,NULL,NULL,NULL,NULL,'2459166442',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Roberts-Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (88,'Household',NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,'2169249835',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz family',5,NULL,'Dear DÃaz family',2,NULL,'DÃaz family',NULL,NULL,NULL,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (89,'Organization',NULL,'Green Action Partnership','Green Action Partnership',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Green Action Partnership',NULL,NULL,NULL,NULL,NULL,'3207633420',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Green Action Partnership',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (90,'Individual',NULL,'Omar Samuels Sr.',NULL,NULL,'Omar','D','Samuels',0,0,0,0,0,0,NULL,'Samuels, Omar',NULL,NULL,NULL,NULL,NULL,'1072276407',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Samuels Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (91,'Individual',NULL,'Dr. Sanford Ivanov III',NULL,NULL,'Sanford','J','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Sanford',NULL,NULL,NULL,'2',NULL,'868143877',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Dr. Sanford Ivanov III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (92,'Individual',NULL,'Nicole Cruz-Dimitrov',NULL,NULL,'Nicole','Z','Cruz-Dimitrov',0,0,0,0,1,0,NULL,'Cruz-Dimitrov, Nicole',NULL,NULL,NULL,'3',NULL,'1791683977',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Cruz-Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:33','Both'), - (93,'Individual',NULL,'Ms. Angelika McReynolds',NULL,NULL,'Angelika','','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Angelika',NULL,NULL,NULL,NULL,NULL,'3667136043',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Ms. Angelika McReynolds',NULL,NULL,'1992-12-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (94,'Individual',NULL,'Ms. Beula Patel',NULL,NULL,'Beula','','Patel',0,0,0,0,0,0,NULL,'Patel, Beula',NULL,NULL,NULL,'5',NULL,'945489022',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Ms. Beula Patel',NULL,1,'1990-11-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (95,'Individual',NULL,'rsmith99@fakemail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'rsmith99@fakemail.org',NULL,NULL,NULL,'2',NULL,'1079387116',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear rsmith99@fakemail.org',1,NULL,'Dear rsmith99@fakemail.org',1,NULL,'rsmith99@fakemail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (96,'Individual',NULL,'Truman Jacobs II',NULL,NULL,'Truman','I','Jacobs',0,0,0,0,1,0,NULL,'Jacobs, Truman',NULL,NULL,NULL,NULL,NULL,'2934376834',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Jacobs II',NULL,2,'1986-06-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (97,'Individual',NULL,'Rolando Roberts Jr.',NULL,NULL,'Rolando','K','Roberts',0,1,0,0,0,0,NULL,'Roberts, Rolando',NULL,NULL,NULL,'2',NULL,'3250154238',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Roberts Jr.',NULL,2,'1986-03-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (98,'Individual',NULL,'Ashlie Robertson',NULL,NULL,'Ashlie','D','Robertson',0,0,0,0,0,0,NULL,'Robertson, Ashlie',NULL,NULL,NULL,NULL,NULL,'23758279',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Robertson',NULL,1,'1983-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (99,'Individual',NULL,'Lincoln Zope-Robertson',NULL,NULL,'Lincoln','Y','Zope-Robertson',0,0,0,0,1,0,NULL,'Zope-Robertson, Lincoln',NULL,NULL,NULL,'2',NULL,'3816033638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Zope-Robertson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (100,'Individual',NULL,'Dr. Jerome Samuels',NULL,NULL,'Jerome','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Jerome',NULL,NULL,NULL,'5',NULL,'2129032486',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Dr. Jerome Samuels',NULL,2,'1980-01-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (101,'Individual',NULL,'Heidi Lee',NULL,NULL,'Heidi','Z','Lee',0,1,0,0,0,0,NULL,'Lee, Heidi',NULL,NULL,NULL,'4',NULL,'4039123195',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Lee',NULL,NULL,'1975-06-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (102,'Individual',NULL,'jensen.l.daren@example.info',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'jensen.l.daren@example.info',NULL,NULL,NULL,'2',NULL,'2984318360',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear jensen.l.daren@example.info',1,NULL,'Dear jensen.l.daren@example.info',1,NULL,'jensen.l.daren@example.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (103,'Individual',NULL,'Allen Zope',NULL,NULL,'Allen','','Zope',0,0,0,0,0,0,NULL,'Zope, Allen',NULL,NULL,NULL,'2',NULL,'1364035806',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (104,'Individual',NULL,'Mr. Rolando Blackwell','Texas Culture Alliance',NULL,'Rolando','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Rolando',NULL,NULL,NULL,NULL,NULL,'1317373414',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Mr. Rolando Blackwell',NULL,2,'1981-04-05',0,NULL,NULL,NULL,NULL,NULL,133,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (105,'Individual',NULL,'Dr. Landon Barkley',NULL,NULL,'Landon','','Barkley',0,0,0,0,0,0,NULL,'Barkley, Landon',NULL,NULL,NULL,NULL,NULL,'2012224076',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (106,'Individual',NULL,'Mrs. Justina Jacobs',NULL,NULL,'Justina','K','Jacobs',0,0,0,0,1,0,NULL,'Jacobs, Justina',NULL,NULL,NULL,NULL,NULL,'1829359712',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Mrs. Justina Jacobs',NULL,1,'1975-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (107,'Household',NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Yadav family',NULL,NULL,NULL,'2',NULL,'1777336212',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav family',5,NULL,'Dear Yadav family',2,NULL,'Yadav family',NULL,NULL,NULL,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (108,'Individual',NULL,'Mei McReynolds',NULL,NULL,'Mei','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Mei',NULL,NULL,NULL,NULL,NULL,'2223552605',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei McReynolds',NULL,NULL,'1975-08-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:32','Both'), - (109,'Individual',NULL,'Dr. Rolando Dimitrov Jr.',NULL,NULL,'Rolando','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Rolando',NULL,NULL,NULL,NULL,NULL,'2226225563',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Dimitrov Jr.',NULL,2,'1959-06-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (110,'Individual',NULL,'Josefa Samson',NULL,NULL,'Josefa','B','Samson',0,0,0,0,1,0,NULL,'Samson, Josefa',NULL,NULL,NULL,NULL,NULL,'3599094976',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Samson',NULL,NULL,'1966-04-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (111,'Organization',NULL,'States Action Systems','States Action Systems',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'States Action Systems',NULL,NULL,NULL,NULL,NULL,'2661521445',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'States Action Systems',NULL,NULL,NULL,0,NULL,NULL,45,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (112,'Organization',NULL,'Jamaica Arts Initiative','Jamaica Arts Initiative',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Jamaica Arts Initiative',NULL,NULL,NULL,NULL,NULL,'2401175641',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Jamaica Arts Initiative',NULL,NULL,NULL,0,NULL,NULL,136,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (113,'Individual',NULL,'jacobsj46@mymail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jacobsj46@mymail.com',NULL,NULL,NULL,'3',NULL,'3626232640',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear jacobsj46@mymail.com',1,NULL,'Dear jacobsj46@mymail.com',1,NULL,'jacobsj46@mymail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:28','Both'), - (114,'Individual',NULL,'Dr. Santina Robertson',NULL,NULL,'Santina','L','Robertson',0,0,0,0,0,0,NULL,'Robertson, Santina',NULL,NULL,NULL,NULL,NULL,'2867920569',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Dr. Santina Robertson',NULL,NULL,'1962-02-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (115,'Individual',NULL,'Landon Lee',NULL,NULL,'Landon','I','Lee',0,0,0,0,0,0,NULL,'Lee, Landon',NULL,NULL,NULL,NULL,NULL,'4144706447',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Lee',NULL,NULL,'1979-10-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (116,'Individual',NULL,'Mr. Teddy Olsen',NULL,NULL,'Teddy','A','Olsen',0,0,0,0,0,0,NULL,'Olsen, Teddy',NULL,NULL,NULL,'2',NULL,'72064715',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:30','Both'), - (117,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,'3',NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (118,'Organization',NULL,'Ohio Advocacy Association','Ohio Advocacy Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ohio Advocacy Association',NULL,NULL,NULL,NULL,NULL,'2716732841',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ohio Advocacy Association',NULL,NULL,NULL,0,NULL,NULL,12,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (119,'Individual',NULL,'Dr. Sherman ÅÄ…chowski',NULL,NULL,'Sherman','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Sherman',NULL,NULL,NULL,NULL,NULL,'2261039855',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Dr. Sherman ÅÄ…chowski',NULL,2,'1967-06-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:27','2023-10-07 01:51:29','Both'), - (120,'Individual',NULL,'Dr. Alexia Smith','West Virginia Software Center',NULL,'Alexia','','Smith',0,1,0,0,0,0,NULL,'Smith, Alexia',NULL,NULL,NULL,NULL,NULL,'528182465',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Dr. Alexia Smith',NULL,NULL,'1986-01-18',0,NULL,NULL,NULL,NULL,NULL,64,0,'2023-10-07 01:51:27','2023-10-07 01:51:31','Both'), - (121,'Organization',NULL,'California Sports Collective','California Sports Collective',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'California Sports Collective',NULL,NULL,NULL,NULL,NULL,'1529826053',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'California Sports Collective',NULL,NULL,NULL,0,NULL,NULL,58,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (122,'Individual',NULL,'Allan Jameson II','Florida Technology Partnership',NULL,'Allan','','Jameson',0,0,0,0,1,0,NULL,'Jameson, Allan',NULL,NULL,NULL,NULL,NULL,'3508046316',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Jameson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,190,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (123,'Individual',NULL,'Dr. Herminia Prentice',NULL,NULL,'Herminia','Q','Prentice',0,0,0,0,0,0,NULL,'Prentice, Herminia',NULL,NULL,NULL,'3',NULL,'4072784830',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Dr. Herminia Prentice',NULL,NULL,'1950-01-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:30','Both'), - (124,'Household',NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,'2255649769',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson family',5,NULL,'Dear Jameson family',2,NULL,'Jameson family',NULL,NULL,NULL,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (125,'Individual',NULL,'Errol Dimitrov III',NULL,NULL,'Errol','K','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Errol',NULL,NULL,NULL,'4',NULL,'3017354314',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Dimitrov III',NULL,2,'1967-12-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (126,'Individual',NULL,'Heidi Dimitrov',NULL,NULL,'Heidi','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Heidi',NULL,NULL,NULL,NULL,NULL,'90891784',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (127,'Individual',NULL,'terrells@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terrells@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,'538950638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrells@airmail.co.pl',1,NULL,'Dear terrells@airmail.co.pl',1,NULL,'terrells@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (128,'Individual',NULL,'deforest.maxwell@example.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'deforest.maxwell@example.net',NULL,NULL,NULL,NULL,NULL,'2495751068',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear deforest.maxwell@example.net',1,NULL,'Dear deforest.maxwell@example.net',1,NULL,'deforest.maxwell@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (129,'Individual',NULL,'Elbert Jones Sr.',NULL,NULL,'Elbert','I','Jones',0,0,0,0,0,0,NULL,'Jones, Elbert',NULL,NULL,NULL,'4',NULL,'3645053032',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Jones Sr.',NULL,NULL,'1996-07-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (130,'Household',NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,'1649131487',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Zope family',5,NULL,'Dear Zope family',2,NULL,'Zope family',NULL,NULL,NULL,0,NULL,'Zope family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (131,'Individual',NULL,'Dr. Laree Zope',NULL,NULL,'Laree','','Zope',1,0,0,0,0,0,NULL,'Zope, Laree',NULL,NULL,NULL,NULL,NULL,'3671966528',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Dr. Laree Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (132,'Household',NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,'350510798',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson family',5,NULL,'Dear Wilson family',2,NULL,'Wilson family',NULL,NULL,NULL,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (133,'Organization',NULL,'Texas Culture Alliance','Texas Culture Alliance',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Texas Culture Alliance',NULL,NULL,NULL,NULL,NULL,'729797420',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Texas Culture Alliance',NULL,NULL,NULL,0,NULL,NULL,104,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (134,'Individual',NULL,'Eleonor McReynolds',NULL,NULL,'Eleonor','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Eleonor',NULL,NULL,NULL,'4',NULL,'1720935960',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor McReynolds',NULL,1,'1983-03-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (135,'Household',NULL,'Jacobs family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jacobs family',NULL,NULL,NULL,NULL,NULL,'1498986649',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jacobs family',5,NULL,'Dear Jacobs family',2,NULL,'Jacobs family',NULL,NULL,NULL,0,NULL,'Jacobs family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (136,'Individual',NULL,'Russell Lee II','Jamaica Arts Initiative',NULL,'Russell','W','Lee',0,1,0,0,0,0,NULL,'Lee, Russell',NULL,NULL,NULL,'4',NULL,'776940323',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Lee II',NULL,2,'1984-03-02',0,NULL,NULL,NULL,NULL,NULL,112,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (137,'Individual',NULL,'wilsonj2@fakemail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wilsonj2@fakemail.biz',NULL,NULL,NULL,'3',NULL,'1914491688',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear wilsonj2@fakemail.biz',1,NULL,'Dear wilsonj2@fakemail.biz',1,NULL,'wilsonj2@fakemail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (138,'Individual',NULL,'Dr. Alida Terry',NULL,NULL,'Alida','I','Terry',0,0,0,0,0,0,NULL,'Terry, Alida',NULL,NULL,NULL,NULL,NULL,'2637023605',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Dr. Alida Terry',NULL,1,'1975-10-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (139,'Household',NULL,'Cruz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cruz family',NULL,NULL,NULL,NULL,NULL,'2326538497',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz family',5,NULL,'Dear Cruz family',2,NULL,'Cruz family',NULL,NULL,NULL,0,NULL,'Cruz family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (140,'Individual',NULL,'Toby Dimitrov-Deforest',NULL,NULL,'Toby','','Dimitrov-Deforest',0,0,0,0,0,0,NULL,'Dimitrov-Deforest, Toby',NULL,NULL,NULL,NULL,NULL,'3471721139',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Dimitrov-Deforest',NULL,2,'2000-02-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (141,'Individual',NULL,'jones-terrellm@example.co.pl',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'jones-terrellm@example.co.pl',NULL,NULL,NULL,'3',NULL,'3999067002',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear jones-terrellm@example.co.pl',1,NULL,'Dear jones-terrellm@example.co.pl',1,NULL,'jones-terrellm@example.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (142,'Individual',NULL,'Russell Yadav',NULL,NULL,'Russell','I','Yadav',0,1,0,0,0,0,NULL,'Yadav, Russell',NULL,NULL,NULL,NULL,NULL,'3160688610',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Yadav',NULL,NULL,'1966-02-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (143,'Individual',NULL,'Errol Wattson',NULL,NULL,'Errol','H','Wattson',0,1,0,0,0,0,NULL,'Wattson, Errol',NULL,NULL,NULL,'4',NULL,'3723119881',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Wattson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (144,'Individual',NULL,'terrell.w.sanford@example.co.nz',NULL,NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'terrell.w.sanford@example.co.nz',NULL,NULL,NULL,'4',NULL,'3445331431',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear terrell.w.sanford@example.co.nz',1,NULL,'Dear terrell.w.sanford@example.co.nz',1,NULL,'terrell.w.sanford@example.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (145,'Individual',NULL,'jsamuels68@sample.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jsamuels68@sample.org',NULL,NULL,NULL,NULL,NULL,'418746154',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear jsamuels68@sample.org',1,NULL,'Dear jsamuels68@sample.org',1,NULL,'jsamuels68@sample.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:33','Both'), - (146,'Individual',NULL,'valenew@notmail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'valenew@notmail.co.in',NULL,NULL,NULL,'4',NULL,'1355969892',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear valenew@notmail.co.in',1,NULL,'Dear valenew@notmail.co.in',1,NULL,'valenew@notmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (147,'Household',NULL,'Zope-Robertson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Zope-Robertson family',NULL,NULL,NULL,'1',NULL,'179865441',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Zope-Robertson family',5,NULL,'Dear Zope-Robertson family',2,NULL,'Zope-Robertson family',NULL,NULL,NULL,0,NULL,'Zope-Robertson family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (148,'Household',NULL,'Cruz-Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Cruz-Dimitrov family',NULL,NULL,NULL,'1',NULL,'3969029419',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Dimitrov family',5,NULL,'Dear Cruz-Dimitrov family',2,NULL,'Cruz-Dimitrov family',NULL,NULL,NULL,0,NULL,'Cruz-Dimitrov family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (149,'Individual',NULL,'Jerome Jensen',NULL,NULL,'Jerome','N','Jensen',0,0,0,0,0,0,NULL,'Jensen, Jerome',NULL,NULL,NULL,'4',NULL,'2774980739',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Jensen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (150,'Organization',NULL,'Van Ness Literacy Solutions','Van Ness Literacy Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Van Ness Literacy Solutions',NULL,NULL,NULL,NULL,NULL,'1560626758',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Van Ness Literacy Solutions',NULL,NULL,NULL,0,NULL,NULL,79,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (151,'Individual',NULL,'Sherman Blackwell',NULL,NULL,'Sherman','L','Blackwell',1,0,0,0,0,0,NULL,'Blackwell, Sherman',NULL,NULL,NULL,'2',NULL,'2994560608',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Blackwell',NULL,2,'2020-01-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:33','Both'), - (152,'Individual',NULL,'Elina Blackwell',NULL,NULL,'Elina','O','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Elina',NULL,NULL,NULL,NULL,NULL,'215876886',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (153,'Individual',NULL,'grant.maxwell@testing.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'grant.maxwell@testing.net',NULL,NULL,NULL,NULL,NULL,'737287809',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear grant.maxwell@testing.net',1,NULL,'Dear grant.maxwell@testing.net',1,NULL,'grant.maxwell@testing.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (154,'Individual',NULL,'Dr. Heidi Cruz',NULL,NULL,'Heidi','T','Cruz',0,0,0,0,0,0,NULL,'Cruz, Heidi',NULL,NULL,NULL,NULL,NULL,'1208374770',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi Cruz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (155,'Individual',NULL,'Mr. Norris Bachman Sr.',NULL,NULL,'Norris','J','Bachman',0,0,0,0,1,0,NULL,'Bachman, Norris',NULL,NULL,NULL,'3',NULL,'2902131761',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Bachman Sr.',NULL,NULL,'1946-06-15',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (156,'Individual',NULL,'Dr. Winford Yadav',NULL,NULL,'Winford','','Yadav',0,0,0,0,1,0,NULL,'Yadav, Winford',NULL,NULL,NULL,NULL,NULL,'3002231808',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Yadav',NULL,2,'1943-12-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (157,'Individual',NULL,'Ray Dimitrov Jr.',NULL,NULL,'Ray','Z','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Ray',NULL,NULL,NULL,'3',NULL,'213044700',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Dimitrov Jr.',NULL,2,'1956-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (158,'Individual',NULL,'Russell Jameson Sr.',NULL,NULL,'Russell','U','Jameson',0,0,0,0,1,0,NULL,'Jameson, Russell',NULL,NULL,NULL,NULL,NULL,'3424708861',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Jameson Sr.',NULL,NULL,'2004-09-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (159,'Individual',NULL,'Dr. Erik Yadav','Longville Action Center',NULL,'Erik','','Yadav',0,1,0,0,0,0,NULL,'Yadav, Erik',NULL,NULL,NULL,NULL,NULL,'3764928217',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Dr. Erik Yadav',NULL,NULL,'1985-04-21',0,NULL,NULL,NULL,NULL,NULL,74,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (160,'Individual',NULL,'Jina Yadav',NULL,NULL,'Jina','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Jina',NULL,NULL,NULL,NULL,NULL,'132914631',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (161,'Household',NULL,'Jones-Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jones-Terrell family',NULL,NULL,NULL,NULL,NULL,'753128947',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jones-Terrell family',5,NULL,'Dear Jones-Terrell family',2,NULL,'Jones-Terrell family',NULL,NULL,NULL,0,NULL,'Jones-Terrell family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (162,'Individual',NULL,'Clint Cruz',NULL,NULL,'Clint','','Cruz',0,0,0,0,1,0,NULL,'Cruz, Clint',NULL,NULL,NULL,NULL,NULL,'3677859642',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Cruz',NULL,2,'2001-11-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (163,'Individual',NULL,'Mr. Winford Jones',NULL,NULL,'Winford','K','Jones',0,0,0,0,0,0,NULL,'Jones, Winford',NULL,NULL,NULL,'5',NULL,'3992988064',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford Jones',NULL,NULL,'1959-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (164,'Individual',NULL,'Ray Terry',NULL,NULL,'Ray','L','Terry',0,1,0,0,0,0,NULL,'Terry, Ray',NULL,NULL,NULL,'1',NULL,'1646953938',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Terry',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (165,'Individual',NULL,'Mrs. Kandace Reynolds',NULL,NULL,'Kandace','A','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Kandace',NULL,NULL,NULL,NULL,NULL,'1783653514',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Mrs. Kandace Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (166,'Organization',NULL,'Mississippi Wellness Academy','Mississippi Wellness Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Mississippi Wellness Academy',NULL,NULL,NULL,NULL,NULL,'653649684',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Mississippi Wellness Academy',NULL,NULL,NULL,0,NULL,NULL,54,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (167,'Individual',NULL,'Jackson Ivanov III',NULL,NULL,'Jackson','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Jackson',NULL,NULL,NULL,NULL,NULL,'3246901602',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Ivanov III',NULL,2,'1944-07-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (168,'Organization',NULL,'Global Agriculture Systems','Global Agriculture Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Agriculture Systems',NULL,NULL,NULL,NULL,NULL,'1120005374',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Agriculture Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (169,'Individual',NULL,'Santina DÃaz','Jackson Peace Services',NULL,'Santina','H','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Santina',NULL,NULL,NULL,'1',NULL,'3076461979',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina DÃaz',NULL,NULL,'1944-02-19',0,NULL,NULL,NULL,NULL,NULL,171,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (170,'Individual',NULL,'Ms. Sharyn Deforest',NULL,NULL,'Sharyn','Y','Deforest',0,0,0,0,0,0,NULL,'Deforest, Sharyn',NULL,NULL,NULL,NULL,NULL,'2704728591',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Ms. Sharyn Deforest',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (171,'Organization',NULL,'Jackson Peace Services','Jackson Peace Services',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Jackson Peace Services',NULL,NULL,NULL,'5',NULL,'1536238043',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Jackson Peace Services',NULL,NULL,NULL,0,NULL,NULL,169,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (172,'Individual',NULL,'Dr. Erik Wilson',NULL,NULL,'Erik','C','Wilson',0,0,0,0,0,0,NULL,'Wilson, Erik',NULL,NULL,NULL,'4',NULL,'3965179222',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Dr. Erik Wilson',NULL,2,'1983-12-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (173,'Individual',NULL,'Scott Wilson',NULL,NULL,'Scott','','Wilson',0,0,0,0,0,0,NULL,'Wilson, Scott',NULL,NULL,NULL,'3',NULL,'3378305352',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Wilson',NULL,NULL,'1987-02-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (174,'Organization',NULL,'Maple Health Fellowship','Maple Health Fellowship',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Maple Health Fellowship',NULL,NULL,NULL,'1',NULL,'900732050',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Maple Health Fellowship',NULL,NULL,NULL,0,NULL,NULL,187,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (175,'Individual',NULL,'Elina Olsen-McReynolds',NULL,NULL,'Elina','','Olsen-McReynolds',1,1,0,0,0,0,NULL,'Olsen-McReynolds, Elina',NULL,NULL,NULL,'4',NULL,'1848814956',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Olsen-McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (176,'Individual',NULL,'Angelika Blackwell',NULL,NULL,'Angelika','K','Blackwell',1,1,0,0,1,0,NULL,'Blackwell, Angelika',NULL,NULL,NULL,'3',NULL,'2888403240',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Blackwell',NULL,1,'1992-05-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:33','Both'), - (177,'Individual',NULL,'Teddy Terry',NULL,NULL,'Teddy','','Terry',0,0,0,0,1,0,NULL,'Terry, Teddy',NULL,NULL,NULL,NULL,NULL,'1402049800',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Terry',NULL,2,'1949-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (178,'Individual',NULL,'Dr. Toby Terrell',NULL,NULL,'Toby','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Toby',NULL,NULL,NULL,NULL,NULL,'935057272',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Dr. Toby Terrell',NULL,NULL,'1982-09-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (179,'Individual',NULL,'Mr. Clint Ivanov Jr.',NULL,NULL,'Clint','B','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Clint',NULL,NULL,NULL,NULL,NULL,'3280498131',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Ivanov Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (180,'Individual',NULL,'barkleym81@spamalot.co.in','Community Education Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'barkleym81@spamalot.co.in',NULL,NULL,NULL,'3',NULL,'2546524336',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear barkleym81@spamalot.co.in',1,NULL,'Dear barkleym81@spamalot.co.in',1,NULL,'barkleym81@spamalot.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,53,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (181,'Individual',NULL,'Allen Yadav',NULL,NULL,'Allen','W','Yadav',0,0,0,0,0,0,NULL,'Yadav, Allen',NULL,NULL,NULL,'1',NULL,'1525270677',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Yadav',NULL,NULL,'1958-11-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (182,'Individual',NULL,'Margaret Jameson',NULL,NULL,'Margaret','','Jameson',0,0,0,0,1,0,NULL,'Jameson, Margaret',NULL,NULL,NULL,NULL,NULL,'1719938872',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Jameson',NULL,NULL,'1943-10-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (183,'Household',NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,'350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (184,'Individual',NULL,'Margaret Blackwell',NULL,NULL,'Margaret','','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Margaret',NULL,NULL,NULL,NULL,NULL,'894595567',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Blackwell',NULL,1,'1951-01-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (185,'Individual',NULL,'Dr. Sanford Terry',NULL,NULL,'Sanford','M','Terry',1,0,0,0,0,0,NULL,'Terry, Sanford',NULL,NULL,NULL,NULL,NULL,'4170670568',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Dr. Sanford Terry',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (186,'Individual',NULL,'elinay@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'elinay@fakemail.co.in',NULL,NULL,NULL,'3',NULL,'3148721013',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear elinay@fakemail.co.in',1,NULL,'Dear elinay@fakemail.co.in',1,NULL,'elinay@fakemail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (187,'Individual',NULL,'Carlos Jones-Terrell','Maple Health Fellowship',NULL,'Carlos','P','Jones-Terrell',0,0,0,0,1,0,NULL,'Jones-Terrell, Carlos',NULL,NULL,NULL,'4',NULL,'1542911489',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Jones-Terrell',NULL,2,'2002-11-24',0,NULL,NULL,NULL,NULL,NULL,174,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (188,'Individual',NULL,'Toby Patel',NULL,NULL,'Toby','','Patel',0,0,0,0,0,0,NULL,'Patel, Toby',NULL,NULL,NULL,'5',NULL,'2618763021',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Patel',NULL,NULL,'1986-01-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (189,'Individual',NULL,'Mr. Jacob Dimitrov',NULL,NULL,'Jacob','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Jacob',NULL,NULL,NULL,'3',NULL,'2306451370',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Mr. Jacob Dimitrov',NULL,2,'1976-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (190,'Organization',NULL,'Florida Technology Partnership','Florida Technology Partnership',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Florida Technology Partnership',NULL,NULL,NULL,'3',NULL,'49225528',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Florida Technology Partnership',NULL,NULL,NULL,0,NULL,NULL,122,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (191,'Individual',NULL,'Dr. Heidi Samuels',NULL,NULL,'Heidi','','Samuels',0,0,0,0,1,0,NULL,'Samuels, Heidi',NULL,NULL,NULL,NULL,NULL,'3595168109',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi Samuels',NULL,1,'1973-04-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:33','Both'), - (192,'Individual',NULL,'nielsen.v.rebekah@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'nielsen.v.rebekah@fakemail.co.in',NULL,NULL,NULL,'5',NULL,'4152494731',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear nielsen.v.rebekah@fakemail.co.in',1,NULL,'Dear nielsen.v.rebekah@fakemail.co.in',1,NULL,'nielsen.v.rebekah@fakemail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:30','Both'), - (193,'Individual',NULL,'Dr. Jacob DÃaz',NULL,NULL,'Jacob','','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Jacob',NULL,NULL,NULL,'3',NULL,'3488947578',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob DÃaz',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (194,'Individual',NULL,'Mr. Jackson Lee','Ben Franklin Music Association',NULL,'Jackson','','Lee',1,0,0,0,0,0,NULL,'Lee, Jackson',NULL,NULL,NULL,'4',NULL,'3405561048',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Lee',NULL,2,'1968-08-01',0,NULL,NULL,NULL,NULL,NULL,31,0,'2023-10-07 01:51:28','2023-10-07 01:51:32','Both'), - (195,'Individual',NULL,'terryb@notmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'terryb@notmail.biz',NULL,NULL,NULL,NULL,NULL,'1530894166',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear terryb@notmail.biz',1,NULL,'Dear terryb@notmail.biz',1,NULL,'terryb@notmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:30','Both'), - (196,'Individual',NULL,'Craig Bachman II',NULL,NULL,'Craig','H','Bachman',0,0,0,0,0,0,NULL,'Bachman, Craig',NULL,NULL,NULL,'3',NULL,'1117434169',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Bachman II',NULL,2,'1969-12-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (197,'Individual',NULL,'Dr. Mei Müller',NULL,NULL,'Mei','H','Müller',0,0,0,0,0,0,NULL,'Müller, Mei',NULL,NULL,NULL,NULL,NULL,'726297805',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Dr. Mei Müller',NULL,NULL,'1955-10-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (198,'Individual',NULL,'Ashley Jameson',NULL,NULL,'Ashley','I','Jameson',0,0,0,0,0,0,NULL,'Jameson, Ashley',NULL,NULL,NULL,'3',NULL,'3561508179',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Jameson',NULL,NULL,'1983-09-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (199,'Individual',NULL,'Dr. Norris Samson',NULL,NULL,'Norris','R','Samson',0,1,0,0,1,0,NULL,'Samson, Norris',NULL,NULL,NULL,NULL,NULL,'2564827585',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Dr. Norris Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:29','Both'), - (200,'Household',NULL,'Jensen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jensen family',NULL,NULL,NULL,'3',NULL,'797435572',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jensen family',5,NULL,'Dear Jensen family',2,NULL,'Jensen family',NULL,NULL,NULL,0,NULL,'Jensen family',NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:31','Both'), - (201,'Individual',NULL,'Ms. Iris Reynolds',NULL,NULL,'Iris','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Iris',NULL,NULL,NULL,'5',NULL,'3509379571',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Ms. Iris Reynolds',NULL,1,'1955-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:28','2023-10-07 01:51:28','Both'), - (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','f4e01cf09df9dcf67e0b03c983c89891',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-07 01:51:34','2023-10-07 01:51:35','Both'); + (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2023-10-19 21:22:28','Both'), + (2,'Individual',NULL,'Mr. Elbert Terrell II',NULL,NULL,'Elbert','','Terrell',0,0,0,0,1,0,NULL,'Terrell, Elbert',NULL,NULL,NULL,NULL,NULL,'1862258278',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Terrell II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (3,'Household',NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,'1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (4,'Individual',NULL,'Mrs. Damaris Smith','Global Sports Center',NULL,'Damaris','A','Smith',0,0,0,0,0,0,NULL,'Smith, Damaris',NULL,NULL,NULL,'1',NULL,'3693080437',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Mrs. Damaris Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,69,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (5,'Individual',NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,'4',NULL,'325908741',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'Dear jacobs.esta@testmail.co.nz',1,NULL,'jacobs.esta@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (6,'Individual',NULL,'Magan Reynolds',NULL,NULL,'Magan','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Magan',NULL,NULL,NULL,'1',NULL,'2569744381',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Reynolds',NULL,1,'1968-09-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (7,'Organization',NULL,'Hanover Education School','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Hanover Education School',NULL,NULL,NULL,NULL,NULL,'3329437880',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Hanover Education School',NULL,NULL,NULL,0,NULL,NULL,15,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (8,'Individual',NULL,'Ms. Laree Blackwell',NULL,NULL,'Laree','T','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Laree',NULL,NULL,NULL,'4',NULL,'122613497',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree Blackwell',NULL,1,'1987-03-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (9,'Individual',NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,'1',NULL,'1346258529',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'Dear brigetter@notmail.co.uk',1,NULL,'brigetter@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (10,'Household',NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,'558108751',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terry family',5,NULL,'Dear Terry family',2,NULL,'Terry family',NULL,NULL,NULL,0,NULL,'Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (11,'Individual',NULL,'Mr. Carlos Cruz II',NULL,NULL,'Carlos','N','Cruz',0,1,0,0,0,0,NULL,'Cruz, Carlos',NULL,NULL,NULL,'1',NULL,'149105357',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos Cruz II',NULL,NULL,'1970-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (12,'Individual',NULL,'Margaret Reynolds',NULL,NULL,'Margaret','','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Margaret',NULL,NULL,NULL,NULL,NULL,'1615992834',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Reynolds',NULL,1,'1995-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (13,'Individual',NULL,'Sonny Reynolds III',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds III',NULL,2,'1999-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (14,'Individual',NULL,'Delana Wattson',NULL,NULL,'Delana','','Wattson',1,0,0,0,0,0,NULL,'Wattson, Delana',NULL,NULL,NULL,'1',NULL,'4463545',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Wattson',NULL,1,'1958-04-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (15,'Individual',NULL,'olsenb@testmail.co.pl','Hanover Education School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,'3',NULL,'3294760178',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'Dear olsenb@testmail.co.pl',1,NULL,'olsenb@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,7,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (16,'Individual',NULL,'Mrs. Kiara Bachman',NULL,NULL,'Kiara','I','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'2',NULL,'3047638217',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Bachman',NULL,1,'1998-10-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (17,'Individual',NULL,'Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Olsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (18,'Individual',NULL,'Andrew DÃaz Sr.','Cranfills Gap Health Trust',NULL,'Andrew','E','DÃaz',1,0,0,0,0,0,NULL,'DÃaz, Andrew',NULL,NULL,NULL,NULL,NULL,'2189664098',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew DÃaz Sr.',NULL,NULL,'1989-09-08',0,NULL,NULL,NULL,NULL,NULL,122,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (19,'Organization',NULL,'Creative Peace Solutions','Creative Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Creative Peace Solutions',NULL,NULL,NULL,NULL,NULL,'2853948413',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,129,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (20,'Individual',NULL,'Claudio Cruz-Reynolds',NULL,NULL,'Claudio','','Cruz-Reynolds',0,0,0,0,0,0,NULL,'Cruz-Reynolds, Claudio',NULL,NULL,NULL,NULL,NULL,'2191699643',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Cruz-Reynolds',NULL,2,'1987-12-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (21,'Individual',NULL,'Jackson Wattson',NULL,NULL,'Jackson','C','Wattson',0,0,0,0,1,0,NULL,'Wattson, Jackson',NULL,NULL,NULL,NULL,NULL,'1720434610',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Wattson',NULL,2,'1969-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (22,'Organization',NULL,'Boston Development Academy','Boston Development Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Boston Development Academy',NULL,NULL,NULL,NULL,NULL,'3712082957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Boston Development Academy',NULL,NULL,NULL,0,NULL,NULL,33,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (23,'Household',NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Samson-Terry family',NULL,NULL,NULL,'1',NULL,'1196143838',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samson-Terry family',5,NULL,'Dear Samson-Terry family',2,NULL,'Samson-Terry family',NULL,NULL,NULL,0,NULL,'Samson-Terry family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (24,'Individual',NULL,'Sherman Bachman',NULL,NULL,'Sherman','','Bachman',0,1,0,0,0,0,NULL,'Bachman, Sherman',NULL,NULL,NULL,'4',NULL,'2672494279',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (25,'Individual',NULL,'Beula Wagner',NULL,NULL,'Beula','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Beula',NULL,NULL,NULL,NULL,NULL,'109524906',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Wagner',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (26,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,'2',NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (27,'Individual',NULL,'Mrs. Merrie Robertson',NULL,NULL,'Merrie','A','Robertson',0,0,0,0,0,0,NULL,'Robertson, Merrie',NULL,NULL,NULL,'4',NULL,'2954108447',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (28,'Individual',NULL,'Sharyn Nielsen',NULL,NULL,'Sharyn','','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Sharyn',NULL,NULL,NULL,'1',NULL,'3940504410',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (29,'Individual',NULL,'Ms. Beula Cruz',NULL,NULL,'Beula','G','Cruz',1,0,0,0,0,0,NULL,'Cruz, Beula',NULL,NULL,NULL,NULL,NULL,'3515356541',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Ms. Beula Cruz',NULL,1,'1943-06-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (30,'Individual',NULL,'Dr. Josefa Grant',NULL,NULL,'Josefa','R','Grant',0,0,0,0,1,0,NULL,'Grant, Josefa',NULL,NULL,NULL,NULL,NULL,'511786429',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Dr. Josefa Grant',NULL,NULL,'1983-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (31,'Individual',NULL,'Dr. Lincoln Yadav Sr.',NULL,NULL,'Lincoln','','Yadav',0,1,0,0,0,0,NULL,'Yadav, Lincoln',NULL,NULL,NULL,NULL,NULL,'3563160263',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Yadav Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (32,'Individual',NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,NULL,NULL,'3970115490',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'Dear jl.samson-terry93@notmail.biz',1,NULL,'jl.samson-terry93@notmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (33,'Individual',NULL,'dimitrovb20@infomail.co.uk','Boston Development Academy',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,'2',NULL,'3487863784',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'Dear dimitrovb20@infomail.co.uk',1,NULL,'dimitrovb20@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,22,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (34,'Individual',NULL,'Mr. Sonny Prentice II',NULL,NULL,'Sonny','G','Prentice',0,0,0,0,1,0,NULL,'Prentice, Sonny',NULL,NULL,NULL,'1',NULL,'2645636632',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Mr. Sonny Prentice II',NULL,2,'1977-10-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (35,'Individual',NULL,'Omar Müller',NULL,NULL,'Omar','','Müller',1,0,0,0,1,0,NULL,'Müller, Omar',NULL,NULL,NULL,NULL,NULL,'3845396679',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Müller',NULL,2,'1971-04-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (36,'Individual',NULL,'Mr. Lou Yadav',NULL,NULL,'Lou','J','Yadav',0,0,0,0,0,0,NULL,'Yadav, Lou',NULL,NULL,NULL,'5',NULL,'1442954395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Mr. Lou Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (37,'Individual',NULL,'Josefa Dimitrov',NULL,NULL,'Josefa','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Josefa',NULL,NULL,NULL,'4',NULL,'1492067390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Dimitrov',NULL,1,'1976-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (38,'Individual',NULL,'Landon Blackwell',NULL,NULL,'Landon','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Landon',NULL,NULL,NULL,'2',NULL,'1569508638',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Blackwell',NULL,2,'1944-11-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (39,'Individual',NULL,'Ms. Delana DÃaz-ÅÄ…chowski',NULL,NULL,'Delana','E','DÃaz-ÅÄ…chowski',1,0,0,0,0,0,NULL,'DÃaz-ÅÄ…chowski, Delana',NULL,NULL,NULL,NULL,NULL,'1952500554',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana DÃaz-ÅÄ…chowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (40,'Individual',NULL,'Mrs. Megan Parker',NULL,NULL,'Megan','J','Parker',0,0,0,0,0,0,NULL,'Parker, Megan',NULL,NULL,NULL,NULL,NULL,'4204728620',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Parker',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (41,'Individual',NULL,'Landon DÃaz-ÅÄ…chowski Jr.',NULL,NULL,'Landon','V','DÃaz-ÅÄ…chowski',0,1,0,0,0,0,NULL,'DÃaz-ÅÄ…chowski, Landon',NULL,NULL,NULL,'2',NULL,'1221970263',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon DÃaz-ÅÄ…chowski Jr.',NULL,NULL,'2011-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (42,'Individual',NULL,'Rolando Grant',NULL,NULL,'Rolando','','Grant',1,0,0,0,1,0,NULL,'Grant, Rolando',NULL,NULL,NULL,'2',NULL,'4031135000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Grant',NULL,2,'1935-02-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (43,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (44,'Individual',NULL,'Delana Ivanov',NULL,NULL,'Delana','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Delana',NULL,NULL,NULL,'3',NULL,'1796516445',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (45,'Individual',NULL,'Esta Wattson',NULL,NULL,'Esta','B','Wattson',0,1,0,0,0,0,NULL,'Wattson, Esta',NULL,NULL,NULL,'2',NULL,'1484476563',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Wattson',NULL,NULL,'2001-08-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (46,'Individual',NULL,'Dr. Miguel Samuels',NULL,NULL,'Miguel','','Samuels',1,0,0,0,0,0,NULL,'Samuels, Miguel',NULL,NULL,NULL,'3',NULL,'1633688376',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel Samuels',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (47,'Individual',NULL,'Ashley McReynolds Sr.',NULL,NULL,'Ashley','','McReynolds',0,1,0,0,0,0,NULL,'McReynolds, Ashley',NULL,NULL,NULL,NULL,NULL,'68872917',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley McReynolds Sr.',NULL,NULL,'1971-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (48,'Individual',NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,'2',NULL,'910006395',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'Dear teddywilson@lol.co.in',1,NULL,'teddywilson@lol.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (49,'Individual',NULL,'Dr. Carlos Ivanov Jr.',NULL,NULL,'Carlos','E','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Carlos',NULL,NULL,NULL,'5',NULL,'3509440467',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Ivanov Jr.',NULL,2,'1994-08-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (50,'Organization',NULL,'Illinois Food Fund','Illinois Food Fund',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Illinois Food Fund',NULL,NULL,NULL,'3',NULL,'1276770505',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Illinois Food Fund',NULL,NULL,NULL,0,NULL,NULL,74,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (51,'Household',NULL,'DÃaz-ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'DÃaz-ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,'1022464571',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz-ÅÄ…chowski family',5,NULL,'Dear DÃaz-ÅÄ…chowski family',2,NULL,'DÃaz-ÅÄ…chowski family',NULL,NULL,NULL,0,NULL,'DÃaz-ÅÄ…chowski family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (52,'Organization',NULL,'Lincoln Action Academy','Lincoln Action Academy',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Lincoln Action Academy',NULL,NULL,NULL,'4',NULL,'588269897',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lincoln Action Academy',NULL,NULL,NULL,0,NULL,NULL,109,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (53,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (54,'Individual',NULL,'Dr. Teddy Nielsen',NULL,NULL,'Teddy','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Teddy',NULL,NULL,NULL,'3',NULL,'1600610365',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Nielsen',NULL,2,'1945-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (55,'Individual',NULL,'Russell Ivanov Jr.',NULL,NULL,'Russell','P','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Russell',NULL,NULL,NULL,'5',NULL,'624189081',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Ivanov Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (56,'Individual',NULL,'Merrie Cooper',NULL,NULL,'Merrie','','Cooper',0,0,0,0,1,0,NULL,'Cooper, Merrie',NULL,NULL,NULL,'2',NULL,'340467569',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Cooper',NULL,1,'1939-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (57,'Individual',NULL,'Dr. Maxwell Deforest',NULL,NULL,'Maxwell','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Maxwell',NULL,NULL,NULL,'1',NULL,'1808949889',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (58,'Household',NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,'1714131215',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman family',5,NULL,'Dear Bachman family',2,NULL,'Bachman family',NULL,NULL,NULL,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (59,'Organization',NULL,'Global Sustainability Alliance','Global Sustainability Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,'1',NULL,'842567976',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sustainability Alliance',NULL,NULL,NULL,0,NULL,NULL,185,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (60,'Individual',NULL,'Dr. Lou Ivanov Jr.',NULL,NULL,'Lou','','Ivanov',0,1,0,0,0,0,NULL,'Ivanov, Lou',NULL,NULL,NULL,'2',NULL,'211844515',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Ivanov Jr.',NULL,2,'1981-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (61,'Individual',NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,'1',NULL,'1093174039',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'Dear reynoldsa@spamalot.co.uk',1,NULL,'reynoldsa@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (62,'Individual',NULL,'Alexia Reynolds',NULL,NULL,'Alexia','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Alexia',NULL,NULL,NULL,'5',NULL,'1389353396',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (63,'Individual',NULL,'Sonny Reynolds',NULL,NULL,'Sonny','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Sonny',NULL,NULL,NULL,NULL,NULL,'2914964394',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Reynolds',NULL,2,'2011-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (64,'Organization',NULL,'Dowlen Software Alliance','Dowlen Software Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,NULL,NULL,'1260268914',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Software Alliance',NULL,NULL,NULL,0,NULL,NULL,184,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (65,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,'4',NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (66,'Individual',NULL,'Barry Terry',NULL,NULL,'Barry','N','Terry',0,1,0,0,0,0,NULL,'Terry, Barry',NULL,NULL,NULL,NULL,NULL,'929041000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terry',NULL,NULL,'2007-11-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (67,'Organization',NULL,'Bay Empowerment School','Bay Empowerment School',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bay Empowerment School',NULL,NULL,NULL,NULL,NULL,'2478135666',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bay Empowerment School',NULL,NULL,NULL,0,NULL,NULL,76,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (68,'Organization',NULL,'United Agriculture Academy','United Agriculture Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'United Agriculture Academy',NULL,NULL,NULL,'2',NULL,'2961780957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Agriculture Academy',NULL,NULL,NULL,0,NULL,NULL,85,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (69,'Organization',NULL,'Global Sports Center','Global Sports Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Sports Center',NULL,NULL,NULL,NULL,NULL,'2901322748',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sports Center',NULL,NULL,NULL,0,NULL,NULL,4,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (70,'Individual',NULL,'Irvin DÃaz Jr.',NULL,NULL,'Irvin','','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Irvin',NULL,NULL,NULL,NULL,NULL,'2415400429',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin DÃaz Jr.',NULL,2,'1952-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (71,'Individual',NULL,'Ms. Bernadette Müller',NULL,NULL,'Bernadette','F','Müller',0,0,0,0,1,0,NULL,'Müller, Bernadette',NULL,NULL,NULL,NULL,NULL,'2804032609',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Ms. Bernadette Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (72,'Individual',NULL,'Mr. Miguel Wagner','Progressive Culture Partnership',NULL,'Miguel','D','Wagner',0,0,0,0,0,0,NULL,'Wagner, Miguel',NULL,NULL,NULL,NULL,NULL,'422482436',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Wagner',NULL,2,'1950-08-08',0,NULL,NULL,NULL,NULL,NULL,133,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (73,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (74,'Individual',NULL,'Valene Samuels','Illinois Food Fund',NULL,'Valene','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Valene',NULL,NULL,NULL,NULL,NULL,'1762584511',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Samuels',NULL,1,'2020-03-07',0,NULL,NULL,NULL,NULL,NULL,50,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (75,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'1',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (76,'Individual',NULL,'Mr. Miguel Prentice II','Bay Empowerment School',NULL,'Miguel','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Miguel',NULL,NULL,NULL,NULL,NULL,'3093767059',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Prentice II',NULL,NULL,'1978-08-28',0,NULL,NULL,NULL,NULL,NULL,67,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (77,'Organization',NULL,'Global Wellness Center','Global Wellness Center',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Wellness Center',NULL,NULL,NULL,'4',NULL,'2771241701',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Wellness Center',NULL,NULL,NULL,0,NULL,NULL,81,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (78,'Individual',NULL,'Shad Müller',NULL,NULL,'Shad','','Müller',0,0,0,0,0,0,NULL,'Müller, Shad',NULL,NULL,NULL,NULL,NULL,'233080666',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Müller',NULL,2,NULL,1,'2022-12-10',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (79,'Individual',NULL,'Irvin Müller',NULL,NULL,'Irvin','N','Müller',0,0,0,0,1,0,NULL,'Müller, Irvin',NULL,NULL,NULL,NULL,NULL,'1250430175',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Müller',NULL,2,'2016-02-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (80,'Individual',NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'Kathlyn','','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Kathlyn',NULL,NULL,NULL,NULL,NULL,'3934921435',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Dr. Kathlyn Dimitrov',NULL,NULL,'1970-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (81,'Individual',NULL,'Dr. Elina Smith','Global Wellness Center',NULL,'Elina','D','Smith',0,0,0,0,1,0,NULL,'Smith, Elina',NULL,NULL,NULL,'3',NULL,'1079819733',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Smith',NULL,1,'1942-10-13',0,NULL,NULL,NULL,NULL,NULL,77,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (82,'Individual',NULL,'Mrs. Margaret Cruz',NULL,NULL,'Margaret','M','Cruz',0,0,0,0,1,0,NULL,'Cruz, Margaret',NULL,NULL,NULL,'2',NULL,'680750633',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Mrs. Margaret Cruz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (83,'Individual',NULL,'Toby Barkley',NULL,NULL,'Toby','F','Barkley',1,0,0,0,1,0,NULL,'Barkley, Toby',NULL,NULL,NULL,'3',NULL,'2112758075',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Barkley',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (84,'Individual',NULL,'Mr. Craig Prentice',NULL,NULL,'Craig','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Craig',NULL,NULL,NULL,'1',NULL,'3778069057',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Prentice',NULL,2,'1964-12-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (85,'Individual',NULL,'Dr. Justina McReynolds','United Agriculture Academy',NULL,'Justina','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Justina',NULL,NULL,NULL,'5',NULL,'1146130692',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Dr. Justina McReynolds',NULL,1,'1989-07-29',0,NULL,NULL,NULL,NULL,NULL,68,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (86,'Individual',NULL,'Eleonor Parker',NULL,NULL,'Eleonor','K','Parker',0,0,0,0,0,0,NULL,'Parker, Eleonor',NULL,NULL,NULL,NULL,NULL,'3234463672',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Parker',NULL,1,'1995-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (87,'Individual',NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,NULL,NULL,'2789926097',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'Dear reynolds.q.laree29@fishmail.net',1,NULL,'reynolds.q.laree29@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (88,'Household',NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,'1990073228',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen family',5,NULL,'Dear Olsen family',2,NULL,'Olsen family',NULL,NULL,NULL,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (89,'Individual',NULL,'Kiara Nielsen',NULL,NULL,'Kiara','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Kiara',NULL,NULL,NULL,'2',NULL,'4265488572',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Nielsen',NULL,1,'1968-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (90,'Individual',NULL,'Junko ÅÄ…chowski',NULL,NULL,'Junko','E','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Junko',NULL,NULL,NULL,'5',NULL,'213828340',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko ÅÄ…chowski',NULL,NULL,'1989-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (91,'Individual',NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,'3825255427',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'Dear jameson.q.rebekah@fishmail.co.nz',1,NULL,'jameson.q.rebekah@fishmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (92,'Individual',NULL,'Mrs. Magan Wilson-Jameson',NULL,NULL,'Magan','','Wilson-Jameson',0,1,0,0,0,0,NULL,'Wilson-Jameson, Magan',NULL,NULL,NULL,NULL,NULL,'200719141',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Mrs. Magan Wilson-Jameson',NULL,1,'2002-10-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (93,'Individual',NULL,'Mr. Jackson McReynolds',NULL,NULL,'Jackson','Q','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Jackson',NULL,NULL,NULL,'3',NULL,'748161972',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (94,'Individual',NULL,'Omar Parker Jr.',NULL,NULL,'Omar','','Parker',0,1,0,0,0,0,NULL,'Parker, Omar',NULL,NULL,NULL,'2',NULL,'3921166397',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Parker Jr.',NULL,NULL,'1998-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (95,'Organization',NULL,'Rural Agriculture Trust','Rural Agriculture Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,'3',NULL,'3564832016',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Agriculture Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (96,'Individual',NULL,'blackwella@notmail.org','Local Environmental Trust',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'blackwella@notmail.org',NULL,NULL,NULL,NULL,NULL,'442145169',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear blackwella@notmail.org',1,NULL,'Dear blackwella@notmail.org',1,NULL,'blackwella@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,148,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (97,'Individual',NULL,'Bernadette ÅÄ…chowski',NULL,NULL,'Bernadette','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Bernadette',NULL,NULL,NULL,'2',NULL,'2108681272',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette ÅÄ…chowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (98,'Individual',NULL,'Shauna Patel',NULL,NULL,'Shauna','P','Patel',0,1,0,0,0,0,NULL,'Patel, Shauna',NULL,NULL,NULL,NULL,NULL,'607971339',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Patel',NULL,1,'1949-12-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (99,'Individual',NULL,'Ms. Mei Olsen',NULL,NULL,'Mei','R','Olsen',1,0,0,0,0,0,NULL,'Olsen, Mei',NULL,NULL,NULL,NULL,NULL,'258402374',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Ms. Mei Olsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (100,'Individual',NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,'4287671736',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'Dear justinawilson-deforest24@fishmail.co.in',1,NULL,'justinawilson-deforest24@fishmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (101,'Individual',NULL,'Delana Dimitrov',NULL,NULL,'Delana','L','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Delana',NULL,NULL,NULL,NULL,NULL,'4026480882',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Dimitrov',NULL,1,NULL,1,'2023-10-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (102,'Individual',NULL,'Mr. Barry Wagner',NULL,NULL,'Barry','N','Wagner',0,0,0,0,0,0,NULL,'Wagner, Barry',NULL,NULL,NULL,NULL,NULL,'1267143153',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Mr. Barry Wagner',NULL,2,'1953-12-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (103,'Organization',NULL,'Oregon Development Network','Oregon Development Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Oregon Development Network',NULL,NULL,NULL,'2',NULL,'784567487',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Oregon Development Network',NULL,NULL,NULL,0,NULL,NULL,187,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (104,'Individual',NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,NULL,NULL,'3914421875',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'Dear bj.wilson-jameson@testing.co.uk',1,NULL,'bj.wilson-jameson@testing.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (105,'Individual',NULL,'Dr. Elizabeth Roberts',NULL,NULL,'Elizabeth','D','Roberts',1,0,0,0,0,0,NULL,'Roberts, Elizabeth',NULL,NULL,NULL,'3',NULL,'3104864980',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Roberts',NULL,1,'1971-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (106,'Individual',NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,NULL,NULL,'1568362394',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'Dear daz.rosario@fishmail.info',1,NULL,'daz.rosario@fishmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (107,'Individual',NULL,'Esta ÅÄ…chowski',NULL,NULL,'Esta','G','ÅÄ…chowski',0,0,0,0,1,0,NULL,'ÅÄ…chowski, Esta',NULL,NULL,NULL,'1',NULL,'195412899',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta ÅÄ…chowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (108,'Individual',NULL,'Dr. Kiara ÅÄ…chowski',NULL,NULL,'Kiara','O','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Kiara',NULL,NULL,NULL,NULL,NULL,'1559609409',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara ÅÄ…chowski',NULL,NULL,'1982-01-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (109,'Individual',NULL,'Lashawnda Prentice','Lincoln Action Academy',NULL,'Lashawnda','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Lashawnda',NULL,NULL,NULL,NULL,NULL,'2396624366',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Prentice',NULL,NULL,'1977-07-17',0,NULL,NULL,NULL,NULL,NULL,52,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (110,'Individual',NULL,'Mr. Lawerence Deforest',NULL,NULL,'Lawerence','','Deforest',1,0,0,0,0,0,NULL,'Deforest, Lawerence',NULL,NULL,NULL,NULL,NULL,'2962516652',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (111,'Individual',NULL,'Kenny Yadav II',NULL,NULL,'Kenny','D','Yadav',0,0,0,0,0,0,NULL,'Yadav, Kenny',NULL,NULL,NULL,'4',NULL,'250746844',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Yadav II',NULL,NULL,'1995-06-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (112,'Individual',NULL,'Mr. Sherman Müller',NULL,NULL,'Sherman','H','Müller',1,0,0,0,0,0,NULL,'Müller, Sherman',NULL,NULL,NULL,'3',NULL,'1541323485',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Müller',NULL,2,'1991-05-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (113,'Individual',NULL,'Dr. Elizabeth Robertson',NULL,NULL,'Elizabeth','','Robertson',1,0,0,0,0,0,NULL,'Robertson, Elizabeth',NULL,NULL,NULL,NULL,NULL,'3762031116',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Robertson',NULL,NULL,'1954-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (114,'Individual',NULL,'Daren Samson-Terry',NULL,NULL,'Daren','F','Samson-Terry',1,0,0,0,0,0,NULL,'Samson-Terry, Daren',NULL,NULL,NULL,NULL,NULL,'1484741128',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Samson-Terry',NULL,2,'1982-06-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (115,'Individual',NULL,'Clint Deforest','Sacramento Empowerment Partners',NULL,'Clint','U','Deforest',0,0,0,0,0,0,NULL,'Deforest, Clint',NULL,NULL,NULL,'1',NULL,'2437706084',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,135,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (116,'Individual',NULL,'Teresa Olsen',NULL,NULL,'Teresa','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Teresa',NULL,NULL,NULL,NULL,NULL,'1784308763',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Olsen',NULL,1,'2007-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (117,'Individual',NULL,'Norris Reynolds',NULL,NULL,'Norris','S','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Norris',NULL,NULL,NULL,NULL,NULL,'3621358089',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Reynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (118,'Individual',NULL,'Alexia Lee-Yadav',NULL,NULL,'Alexia','P','Lee-Yadav',0,1,0,0,1,0,NULL,'Lee-Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'147177678',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Lee-Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (119,'Individual',NULL,'Mr. Ashley Wagner',NULL,NULL,'Ashley','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Ashley',NULL,NULL,NULL,'1',NULL,'1660268830',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mr. Ashley Wagner',NULL,2,'1981-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (120,'Individual',NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,'1',NULL,'2482041681',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'Dear blackwell.josefa@infomail.org',1,NULL,'blackwell.josefa@infomail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (121,'Individual',NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,'5',NULL,'2359360083',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'Dear terrells@mymail.co.pl',1,NULL,'terrells@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (122,'Organization',NULL,'Cranfills Gap Health Trust','Cranfills Gap Health Trust',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,'1',NULL,'45920780',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Cranfills Gap Health Trust',NULL,NULL,NULL,0,NULL,NULL,18,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (123,'Individual',NULL,'Kathlyn Roberts',NULL,NULL,'Kathlyn','Z','Roberts',0,0,0,0,0,0,NULL,'Roberts, Kathlyn',NULL,NULL,NULL,NULL,NULL,'2944584126',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Roberts',NULL,1,'1942-07-12',1,'2023-02-07',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (124,'Individual',NULL,'Dr. Scott Müller',NULL,NULL,'Scott','Q','Müller',0,0,0,0,0,0,NULL,'Müller, Scott',NULL,NULL,NULL,NULL,NULL,'2575613599',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Müller',NULL,2,'1963-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (125,'Individual',NULL,'Sharyn Ivanov',NULL,NULL,'Sharyn','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Sharyn',NULL,NULL,NULL,NULL,NULL,'4099997756',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (126,'Individual',NULL,'Troy Prentice',NULL,NULL,'Troy','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Troy',NULL,NULL,NULL,NULL,NULL,'2143976390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Prentice',NULL,NULL,'1996-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (127,'Individual',NULL,'Dr. Kiara Bachman',NULL,NULL,'Kiara','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kiara',NULL,NULL,NULL,'1',NULL,'3047638217',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Bachman',NULL,1,'1947-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (128,'Individual',NULL,'Dr. Lincoln Cruz',NULL,NULL,'Lincoln','Y','Cruz',0,0,0,0,1,0,NULL,'Cruz, Lincoln',NULL,NULL,NULL,'2',NULL,'3085396026',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Cruz',NULL,2,'1940-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (129,'Individual',NULL,'Erik Deforest','Creative Peace Solutions',NULL,'Erik','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Erik',NULL,NULL,NULL,NULL,NULL,'1691264565',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Deforest',NULL,2,'1973-02-04',0,NULL,NULL,NULL,NULL,NULL,19,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (130,'Individual',NULL,'Justina Jensen',NULL,NULL,'Justina','','Jensen',0,0,0,0,1,0,NULL,'Jensen, Justina',NULL,NULL,NULL,'4',NULL,'3253764259',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Jensen',NULL,1,'1982-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (131,'Household',NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samuels family',NULL,NULL,NULL,'5',NULL,'350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (132,'Individual',NULL,'Allen Cooper II',NULL,NULL,'Allen','K','Cooper',0,0,0,0,0,0,NULL,'Cooper, Allen',NULL,NULL,NULL,'3',NULL,'1888383899',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Cooper II',NULL,2,'1974-09-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (133,'Organization',NULL,'Progressive Culture Partnership','Progressive Culture Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,'3',NULL,'3653775844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Culture Partnership',NULL,NULL,NULL,0,NULL,NULL,72,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (134,'Household',NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,'3235379039',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest family',5,NULL,'Dear Deforest family',2,NULL,'Deforest family',NULL,NULL,NULL,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (135,'Organization',NULL,'Sacramento Empowerment Partners','Sacramento Empowerment Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,'2',NULL,'3370788420',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sacramento Empowerment Partners',NULL,NULL,NULL,0,NULL,NULL,115,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (136,'Individual',NULL,'Ms. Merrie Smith',NULL,NULL,'Merrie','L','Smith',1,0,0,0,0,0,NULL,'Smith, Merrie',NULL,NULL,NULL,'1',NULL,'2728255522',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (137,'Individual',NULL,'Mrs. Alexia Olsen',NULL,NULL,'Alexia','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Alexia',NULL,NULL,NULL,NULL,NULL,'1565274268',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia Olsen',NULL,1,'1986-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (138,'Individual',NULL,'Mr. Toby Jacobs',NULL,NULL,'Toby','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Toby',NULL,NULL,NULL,NULL,NULL,'247886444',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Jacobs',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (139,'Organization',NULL,'Rural Health Initiative','Rural Health Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Rural Health Initiative',NULL,NULL,NULL,NULL,NULL,'1369844291',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Health Initiative',NULL,NULL,NULL,0,NULL,NULL,197,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (140,'Individual',NULL,'Mr. Russell Terry',NULL,NULL,'Russell','','Terry',0,0,0,0,0,0,NULL,'Terry, Russell',NULL,NULL,NULL,NULL,NULL,'3994938484',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Mr. Russell Terry',NULL,2,'1952-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (141,'Individual',NULL,'Elbert Cruz',NULL,NULL,'Elbert','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Elbert',NULL,NULL,NULL,NULL,NULL,'418027726',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Cruz',NULL,2,'1966-11-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (142,'Individual',NULL,'Dr. Tanya Blackwell',NULL,NULL,'Tanya','H','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Tanya',NULL,NULL,NULL,NULL,NULL,'2751001066',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (143,'Individual',NULL,'Kenny Olsen III',NULL,NULL,'Kenny','L','Olsen',0,0,0,0,0,0,NULL,'Olsen, Kenny',NULL,NULL,NULL,NULL,NULL,'293860292',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Olsen III',NULL,NULL,'1982-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (144,'Individual',NULL,'Princess Terry',NULL,NULL,'Princess','','Terry',0,0,0,0,0,0,NULL,'Terry, Princess',NULL,NULL,NULL,NULL,NULL,'383206962',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (145,'Individual',NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'Shad','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Shad',NULL,NULL,NULL,NULL,NULL,'3732235082',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Jacobs Sr.',NULL,NULL,'1973-09-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (146,'Organization',NULL,'United Culture Initiative','United Culture Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'United Culture Initiative',NULL,NULL,NULL,'3',NULL,'1902448514',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Culture Initiative',NULL,NULL,NULL,0,NULL,NULL,178,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (147,'Individual',NULL,'Toby Samuels III',NULL,NULL,'Toby','L','Samuels',0,0,0,0,0,0,NULL,'Samuels, Toby',NULL,NULL,NULL,NULL,NULL,'126496012',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Samuels III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (148,'Organization',NULL,'Local Environmental Trust','Local Environmental Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Local Environmental Trust',NULL,NULL,NULL,'3',NULL,'1375669844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Environmental Trust',NULL,NULL,NULL,0,NULL,NULL,96,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (149,'Individual',NULL,'Dr. Nicole Samuels',NULL,NULL,'Nicole','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Nicole',NULL,NULL,NULL,'1',NULL,'3510229898',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Dr. Nicole Samuels',NULL,1,'1977-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (150,'Individual',NULL,'Mr. Allan Prentice',NULL,NULL,'Allan','H','Prentice',1,0,0,0,0,0,NULL,'Prentice, Allan',NULL,NULL,NULL,'5',NULL,'2464878706',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan Prentice',NULL,NULL,'1952-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (151,'Individual',NULL,'Kandace Cruz-Reynolds',NULL,NULL,'Kandace','Z','Cruz-Reynolds',0,0,0,0,1,0,NULL,'Cruz-Reynolds, Kandace',NULL,NULL,NULL,'1',NULL,'2077726550',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Cruz-Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (152,'Individual',NULL,'Alexia Yadav',NULL,NULL,'Alexia','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Alexia',NULL,NULL,NULL,NULL,NULL,'1312807214',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Yadav',NULL,NULL,'1987-05-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (153,'Individual',NULL,'Dr. Esta Nielsen',NULL,NULL,'Esta','','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Esta',NULL,NULL,NULL,'3',NULL,'2804173952',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Dr. Esta Nielsen',NULL,NULL,'1938-02-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (154,'Individual',NULL,'Valene Reynolds',NULL,NULL,'Valene','Z','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Valene',NULL,NULL,NULL,'4',NULL,'2505441873',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Reynolds',NULL,1,'1974-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (155,'Household',NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,'2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (156,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,'3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (157,'Individual',NULL,'Mrs. Megan Jameson',NULL,NULL,'Megan','','Jameson',1,1,0,0,0,0,NULL,'Jameson, Megan',NULL,NULL,NULL,NULL,NULL,'1706411142',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Jameson',NULL,1,'1986-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (158,'Individual',NULL,'Dr. Rosario Robertson II',NULL,NULL,'Rosario','M','Robertson',0,0,0,0,0,0,NULL,'Robertson, Rosario',NULL,NULL,NULL,'2',NULL,'1907398578',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Robertson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (159,'Household',NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Yadav family',NULL,NULL,NULL,'4',NULL,'1777336212',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav family',5,NULL,'Dear Yadav family',2,NULL,'Yadav family',NULL,NULL,NULL,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (160,'Individual',NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,NULL,NULL,'4284286130',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'Dear alexiad24@fishmail.net',1,NULL,'alexiad24@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (161,'Organization',NULL,'Progressive Music Network','Progressive Music Network',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Progressive Music Network',NULL,NULL,NULL,'4',NULL,'2461489408',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Music Network',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (162,'Individual',NULL,'Dr. Brigette Terry',NULL,NULL,'Brigette','','Terry',0,0,0,0,0,0,NULL,'Terry, Brigette',NULL,NULL,NULL,NULL,NULL,'2789451544',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (163,'Individual',NULL,'Mrs. Kathlyn Jensen-Terry',NULL,NULL,'Kathlyn','','Jensen-Terry',1,0,0,0,1,0,NULL,'Jensen-Terry, Kathlyn',NULL,NULL,NULL,'3',NULL,'4042544597',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Jensen-Terry',NULL,1,'1967-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (164,'Individual',NULL,'Dr. Bob Prentice',NULL,NULL,'Bob','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Bob',NULL,NULL,NULL,'3',NULL,'912966256',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (165,'Individual',NULL,'Landon Olsen',NULL,NULL,'Landon','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Landon',NULL,NULL,NULL,NULL,NULL,'496664817',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (166,'Individual',NULL,'Mr. Clint Terry',NULL,NULL,'Clint','A','Terry',0,0,0,0,0,0,NULL,'Terry, Clint',NULL,NULL,NULL,NULL,NULL,'1893701236',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Terry',NULL,2,'1952-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (167,'Individual',NULL,'Dr. Errol Ivanov',NULL,NULL,'Errol','S','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Errol',NULL,NULL,NULL,NULL,NULL,'3859438937',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Ivanov',NULL,2,'1959-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (168,'Individual',NULL,'Dr. Ivey Deforest',NULL,NULL,'Ivey','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Ivey',NULL,NULL,NULL,NULL,NULL,'1981648661',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Deforest',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (169,'Individual',NULL,'Kathlyn Jones',NULL,NULL,'Kathlyn','','Jones',1,0,0,0,1,0,NULL,'Jones, Kathlyn',NULL,NULL,NULL,NULL,NULL,'1774529515',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (170,'Individual',NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,NULL,NULL,'6529586',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wattsonm@infomail.net',1,NULL,'Dear wattsonm@infomail.net',1,NULL,'wattsonm@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (171,'Individual',NULL,'Mrs. Santina Robertson',NULL,NULL,'Santina','X','Robertson',1,0,0,0,0,0,NULL,'Robertson, Santina',NULL,NULL,NULL,'5',NULL,'2867920569',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Robertson',NULL,1,'1946-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (172,'Individual',NULL,'Allan Zope Sr.',NULL,NULL,'Allan','T','Zope',0,0,0,0,1,0,NULL,'Zope, Allan',NULL,NULL,NULL,'5',NULL,'891375066',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Zope Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (173,'Individual',NULL,'Mrs. Sharyn Yadav',NULL,NULL,'Sharyn','V','Yadav',0,0,0,0,0,0,NULL,'Yadav, Sharyn',NULL,NULL,NULL,NULL,NULL,'2905194815',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn Yadav',NULL,1,NULL,1,'2023-03-11',NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (174,'Individual',NULL,'Mr. Miguel Zope III',NULL,NULL,'Miguel','','Zope',0,0,0,0,0,0,NULL,'Zope, Miguel',NULL,NULL,NULL,'1',NULL,'1624097300',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Zope III',NULL,2,'1990-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (175,'Individual',NULL,'Betty McReynolds',NULL,NULL,'Betty','J','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Betty',NULL,NULL,NULL,NULL,NULL,'2136104008',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty McReynolds',NULL,NULL,'1982-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (176,'Individual',NULL,'Iris Reynolds',NULL,NULL,'Iris','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Iris',NULL,NULL,NULL,'4',NULL,'3509379571',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Reynolds',NULL,1,'1964-03-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (177,'Household',NULL,'Wattson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wattson family',NULL,NULL,NULL,'4',NULL,'2851339192',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wattson family',5,NULL,'Dear Wattson family',2,NULL,'Wattson family',NULL,NULL,NULL,0,NULL,'Wattson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (178,'Individual',NULL,'Dr. Rodrigo Jameson','United Culture Initiative',NULL,'Rodrigo','','Jameson',0,0,0,0,0,0,NULL,'Jameson, Rodrigo',NULL,NULL,NULL,NULL,NULL,'2012648674',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Dr. Rodrigo Jameson',NULL,2,'1954-05-09',0,NULL,NULL,NULL,NULL,NULL,146,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (179,'Individual',NULL,'Dr. Bernadette Jacobs-Prentice',NULL,NULL,'Bernadette','','Jacobs-Prentice',1,0,0,0,1,0,NULL,'Jacobs-Prentice, Bernadette',NULL,NULL,NULL,'5',NULL,'2581639941',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Jacobs-Prentice',NULL,1,'1974-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (180,'Individual',NULL,'Dr. Carlos Samson',NULL,NULL,'Carlos','F','Samson',0,1,0,0,0,0,NULL,'Samson, Carlos',NULL,NULL,NULL,'1',NULL,'3685526914',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (181,'Individual',NULL,'Ms. Tanya McReynolds',NULL,NULL,'Tanya','B','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Tanya',NULL,NULL,NULL,NULL,NULL,'2833475968',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Ms. Tanya McReynolds',NULL,1,'1989-08-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (182,'Individual',NULL,'Herminia Terry',NULL,NULL,'Herminia','Q','Terry',1,0,0,0,0,0,NULL,'Terry, Herminia',NULL,NULL,NULL,NULL,NULL,'356369010',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Terry',NULL,1,'1975-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (183,'Individual',NULL,'Mr. Kenny Ivanov',NULL,NULL,'Kenny','A','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Kenny',NULL,NULL,NULL,NULL,NULL,'4111336352',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Ivanov',NULL,2,'1980-09-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (184,'Individual',NULL,'Dr. Teddy Cooper III','Dowlen Software Alliance',NULL,'Teddy','','Cooper',0,0,0,0,0,0,NULL,'Cooper, Teddy',NULL,NULL,NULL,NULL,NULL,'828228061',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Cooper III',NULL,2,'1993-12-20',0,NULL,NULL,NULL,NULL,NULL,64,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (185,'Individual',NULL,'Sherman Robertson III','Global Sustainability Alliance',NULL,'Sherman','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Sherman',NULL,NULL,NULL,'3',NULL,'3479857214',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Robertson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,59,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (186,'Individual',NULL,'Mr. Kenny Jacobs III',NULL,NULL,'Kenny','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Kenny',NULL,NULL,NULL,NULL,NULL,'1044730065',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Jacobs III',NULL,NULL,'1944-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (187,'Individual',NULL,'Mr. Bob Terrell','Oregon Development Network',NULL,'Bob','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Bob',NULL,NULL,NULL,NULL,NULL,'1949116278',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Mr. Bob Terrell',NULL,2,'1985-04-15',0,NULL,NULL,NULL,NULL,NULL,103,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (188,'Individual',NULL,'Mrs. Alexia DÃaz',NULL,NULL,'Alexia','Q','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Alexia',NULL,NULL,NULL,'1',NULL,'352965868',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Mrs. Alexia DÃaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (189,'Individual',NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,NULL,NULL,'356570904',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'Dear bachman.maria@infomail.info',1,NULL,'bachman.maria@infomail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (190,'Household',NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,NULL,'3738961941',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Reynolds family',5,NULL,'Dear Cruz-Reynolds family',2,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,0,NULL,'Cruz-Reynolds family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (191,'Household',NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,NULL,'1733530397',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson-Jameson family',5,NULL,'Dear Wilson-Jameson family',2,NULL,'Wilson-Jameson family',NULL,NULL,NULL,0,NULL,'Wilson-Jameson family',NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (192,'Individual',NULL,'Mrs. Josefa Wilson',NULL,NULL,'Josefa','L','Wilson',0,1,0,0,0,0,NULL,'Wilson, Josefa',NULL,NULL,NULL,'2',NULL,'244303065',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Wilson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (193,'Individual',NULL,'Alexia Ivanov',NULL,NULL,'Alexia','','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Alexia',NULL,NULL,NULL,NULL,NULL,'393680941',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (194,'Individual',NULL,'Mr. Troy Müller',NULL,NULL,'Troy','','Müller',0,0,0,0,0,0,NULL,'Müller, Troy',NULL,NULL,NULL,NULL,NULL,'2080888850',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Mr. Troy Müller',NULL,NULL,'1958-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (195,'Individual',NULL,'Tanya Terrell',NULL,NULL,'Tanya','G','Terrell',0,0,0,0,1,0,NULL,'Terrell, Tanya',NULL,NULL,NULL,NULL,NULL,'1604022989',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Terrell',NULL,1,'1995-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (196,'Individual',NULL,'Barry Terrell',NULL,NULL,'Barry','','Terrell',0,1,0,0,1,0,NULL,'Terrell, Barry',NULL,NULL,NULL,'5',NULL,'1436486502',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (197,'Individual',NULL,'Ray Grant Jr.','Rural Health Initiative',NULL,'Ray','X','Grant',0,1,0,0,0,0,NULL,'Grant, Ray',NULL,NULL,NULL,'3',NULL,'2294694701',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Grant Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,139,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (198,'Individual',NULL,'Dr. Brent Reynolds Sr.',NULL,NULL,'Brent','','Reynolds',0,1,0,0,0,0,NULL,'Reynolds, Brent',NULL,NULL,NULL,NULL,NULL,'547975558',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Reynolds Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (199,'Individual',NULL,'Dr. Magan Müller',NULL,NULL,'Magan','O','Müller',0,0,0,0,0,0,NULL,'Müller, Magan',NULL,NULL,NULL,'3',NULL,'681120033',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (200,'Individual',NULL,'Lashawnda Deforest-Ivanov',NULL,NULL,'Lashawnda','A','Deforest-Ivanov',0,0,0,0,0,0,NULL,'Deforest-Ivanov, Lashawnda',NULL,NULL,NULL,NULL,NULL,'1651460725',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Deforest-Ivanov',NULL,1,'1972-08-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (201,'Individual',NULL,'Beula Nielsen',NULL,NULL,'Beula','R','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Beula',NULL,NULL,NULL,'1',NULL,'1989597446',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Nielsen',NULL,1,'1980-02-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'), + (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','2553ad08256bebb3da7d27de1801f4e3',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-10-19 21:22:30','2023-10-19 21:22:30','Both'); /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -2215,117 +2220,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution` WRITE; /*!40000 ALTER TABLE `civicrm_contribution` DISABLE KEYS */; INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`, `is_template`) VALUES - (1,2,1,NULL,4,'2013-10-07 01:51:39',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0), - (2,4,1,NULL,1,'2021-07-07 01:51:39',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (3,6,1,NULL,4,'2017-09-11 12:51:39',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0), - (4,8,1,NULL,4,'2021-07-07 01:51:39',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0), - (5,4,1,NULL,1,'2021-07-07 01:51:39',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (6,16,1,NULL,4,'2023-07-14 01:09:39',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0), - (7,19,1,NULL,1,'2023-10-05 01:51:39',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0), - (8,82,1,NULL,1,'2023-02-12 10:02:39',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (9,92,1,NULL,1,'2022-11-07 01:51:39',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (10,34,1,NULL,1,'2019-05-15 03:51:39',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (11,71,1,NULL,1,'2023-10-05 21:51:39',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (12,43,1,NULL,1,'2022-07-06 15:18:19',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (13,32,1,NULL,1,'2023-07-07 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (14,32,1,NULL,1,'2023-08-07 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (15,59,1,NULL,1,'2022-07-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (16,59,1,NULL,1,'2022-08-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (17,59,1,NULL,1,'2022-09-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (18,59,1,NULL,1,'2022-10-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (19,59,1,NULL,1,'2022-11-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (20,59,1,NULL,1,'2022-12-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (21,59,1,NULL,1,'2023-01-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (22,59,1,NULL,1,'2023-02-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (23,59,1,NULL,1,'2023-03-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (24,59,1,NULL,1,'2023-04-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (25,59,1,NULL,1,'2023-05-07 01:51:39',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (26,99,1,NULL,1,'2023-02-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (27,99,1,NULL,1,'2023-03-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (28,99,1,NULL,1,'2023-04-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (29,99,1,NULL,1,'2023-05-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (30,99,1,NULL,1,'2023-06-07 01:51:39',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (31,103,1,NULL,1,'2023-09-07 01:51:39',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (32,181,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'199fe91a3a34c8ce',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (33,143,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'92a30dc12bc6f89f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (34,69,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'b9a6747fd6568fc2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (35,140,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'82e83517499bed14',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (36,119,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'db59f4a2b5c5e910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (37,32,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'f4a649ade54561d2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (38,113,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'39c163eb3d4be45f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (39,157,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'247f664cf3df1315',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (40,18,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'500ccd7fcc2abbba',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (41,99,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'182b1f7585ecd170',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (42,23,2,NULL,1,'2023-10-07 01:51:39',0.00,1200.00,NULL,NULL,'b237ce5365d90585',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (43,115,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'335863057117965b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (44,128,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'f011e469b75a2a36',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (45,55,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'b6176b7b65ed72f1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (46,163,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'da38a9b7b64f40ca',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (47,126,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'9a4fc74545d39864',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (48,141,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'eb11e97806d830cb',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (49,125,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'05a06f6a774b5ff6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (50,172,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'5192d580921731bf',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (51,156,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'2950723f11f5e239',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (52,93,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'b7b728e2eaf732e1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (53,37,2,NULL,1,'2023-10-07 01:51:39',0.00,1200.00,NULL,NULL,'6600cd795ed03a60',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (54,81,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'94e3e06a9e9b53c1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (55,122,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'53b4c84f1f6d87f4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (56,36,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'fb0b2a2539f57eb6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (57,15,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'7ba0d6192288fd47',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (58,131,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'0eaed8d79ce1b8e2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (59,158,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'4dd4ba301641ab44',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (60,193,2,NULL,1,'2023-10-07 01:51:39',0.00,100.00,NULL,NULL,'377748d4cf02df93',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (61,30,2,NULL,1,'2023-10-07 01:51:39',0.00,50.00,NULL,NULL,'ce228497888c2378',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (63,1,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'4959fbae7c7cc84c',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (64,7,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'aba6ff5d44f34e7f',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (65,10,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'a94fec7ebdce0620',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (66,13,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'7b7e2bdd408bae45',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (67,14,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'2bee5ffd2592ca3d',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (68,17,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'42a7294b9baf02d3',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (69,27,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'4132024b570ff06c',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (70,29,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'0148e195bca51d81',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (71,32,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'165967a21ea2b659',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (72,37,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'5601aea891e87f0d',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (73,50,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'7ed9ae13f33e76df',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (74,53,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'e532775a80589dd2',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (75,54,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'ed1ca23c1c2945c3',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (76,61,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'89e19b42e174eb80',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (77,63,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'0be1bc2f90a806b7',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (78,64,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'3df236b8a47b5bb9',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (79,69,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'6884516bd1244063',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (80,78,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'043190c33aa17fd2',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (81,79,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'c5ee4eb0b3d0c901',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (82,81,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'faa306e7256fce34',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (83,85,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'692f41d144ba99b2',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (84,89,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'3e52e256b26e001d',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (85,93,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'66e129a8d6e297fa',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (86,95,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'45bb6ea0781be9f0',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (87,100,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'69be08504eee5355',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (88,101,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'f5b11319837ef1e6',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (89,102,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'0840f3d87c6e85fb',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (90,111,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'27132cb320864779',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (91,112,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'374e2f2ed959566e',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (92,114,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'d0430a4a2d99e47f',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (93,118,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'7d4564e1bdd09791',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (94,121,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'03a4f5fe114a9c59',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (95,122,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'fe47d7e306522352',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (96,126,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'60f18e18ad36e0a8',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (97,134,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'e9270c01cb7e7d87',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (98,141,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'b0ec3e0cb2cb6aee',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (99,147,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'11002b1a386b49ad',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (100,150,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'7ab5e66da17e8d68',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (101,152,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'ccb8e93eff3029fa',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (102,160,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'1b101efdd36b05cf',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (103,165,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'629d63496b32ec37',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (104,168,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'a7ff24e77623ff66',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (105,169,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'857dc2777c1a660c',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (106,172,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'7f1e20b2b28f8226',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (107,175,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'609e9f6ac922d912',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (108,181,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'b0f27fe74b6b4a8a',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (109,188,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'8e6e4153b0abab95',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (110,190,4,NULL,1,'2023-10-07 01:51:40',0.00,800.00,NULL,NULL,'d5dbc6b4bd2fac95',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (111,195,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'58ce3d135fec464e',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), - (112,200,4,NULL,1,'2023-10-07 01:51:40',0.00,50.00,NULL,NULL,'e6502ad537f88d38',NULL,NULL,'USD',NULL,NULL,'2023-10-07 01:51:40',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0); + (1,2,1,NULL,4,'2013-10-19 14:22:30',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0), + (2,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (3,6,1,NULL,4,'2017-09-24 01:22:30',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0), + (4,8,1,NULL,4,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0), + (5,4,1,NULL,1,'2021-07-19 14:22:30',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (6,16,1,NULL,4,'2023-07-26 13:40:30',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0), + (7,19,1,NULL,1,'2023-10-17 14:22:30',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0), + (8,82,1,NULL,1,'2023-02-24 22:33:30',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (9,92,1,NULL,1,'2022-11-19 14:22:30',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (10,34,1,NULL,1,'2019-05-27 16:22:30',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (11,71,1,NULL,1,'2023-10-18 10:22:30',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (12,43,1,NULL,1,'2022-07-19 03:49:10',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (13,32,1,NULL,1,'2023-07-19 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (14,32,1,NULL,1,'2023-08-19 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (15,59,1,NULL,1,'2022-07-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (16,59,1,NULL,1,'2022-08-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (17,59,1,NULL,1,'2022-09-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (18,59,1,NULL,1,'2022-10-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (19,59,1,NULL,1,'2022-11-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (20,59,1,NULL,1,'2022-12-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (21,59,1,NULL,1,'2023-01-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (22,59,1,NULL,1,'2023-02-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (23,59,1,NULL,1,'2023-03-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (24,59,1,NULL,1,'2023-04-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (25,59,1,NULL,1,'2023-05-19 14:22:30',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (26,99,1,NULL,1,'2023-02-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (27,99,1,NULL,1,'2023-03-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (28,99,1,NULL,1,'2023-04-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (29,99,1,NULL,1,'2023-05-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (30,99,1,NULL,1,'2023-06-19 14:22:30',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (31,103,1,NULL,1,'2023-09-19 14:22:30',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (32,55,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c908bcfa0cd5be20',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (33,168,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'4d24ed19cb02ed0c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (34,36,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'c7f53644ae2a7abd',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (35,87,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'df65e9305cdef133',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (36,48,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'9e43d605091634b7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (37,180,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e6d81f09a41d0f35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (38,8,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'e38f6ec37b9fabb3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (39,54,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'f739f79d40e7bd2d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (40,106,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'0937a86d9856d20f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (41,17,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'386a76c90a983717',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (42,175,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'1d446a98d22519c5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (43,28,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'6f302a92a8d039f4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (44,117,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'184c1625a0ab7dc0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (45,86,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'fd4792bd3a50da87',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (46,149,2,NULL,1,'2023-10-19 14:22:30',0.00,100.00,NULL,NULL,'2ae34338151a8c31',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (47,47,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'62904aaad7687d16',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (48,126,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'58c722d9ea8f60e4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (49,113,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'0e4d2cc74726c33e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (50,169,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'46fff670fdd88c83',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (51,164,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'126eb1cbca88ac46',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (52,39,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'8e1a4f823c309e35',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (53,49,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9183e73af132fbd1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (54,92,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'e7836a1040fc6647',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (55,136,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'dc8c98604902da07',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (56,187,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9668e4798e266def',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (57,100,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ef096073ba84bc0a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (58,78,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'aa13673d8ef85a65',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (59,66,2,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'32f851d09a3775f2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (60,93,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'fe44a2c192ab18be',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (61,5,2,NULL,1,'2023-10-19 14:22:30',0.00,1200.00,NULL,NULL,'ffed5868e9951a95',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (63,6,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b28927dfa09ab7b4',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (64,8,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'52b5a6a76b142227',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (65,10,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7245aac602b546bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (66,13,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ff5b5537da44c970',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (67,14,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fad72a1cf34cf68e',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (68,16,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'95a80169077a3dea',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (69,17,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'413cb05032f4ef86',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (70,19,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'755c91f4df5025f2',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (71,23,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'d39bcc7bf0e51cab',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (72,30,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'2169580b75789814',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (73,36,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'25a9f0b5ed29df0a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (74,40,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3eb2384d79bdaa10',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (75,41,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ed07590fe067cb07',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (76,45,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'96af8634550c39ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (77,57,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a2542bee3dc332de',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (78,69,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6cc8dd5a5b8e8913',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (79,73,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'a720e6fdf9eea694',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (80,76,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'732d30e0d1d41ca5',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (81,77,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'ac8995759a7a3270',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (82,80,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'6ba712ac9576b7b6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (83,84,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b056ac8b83186f79',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (84,88,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'24cc9f9c83795713',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (85,92,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'548746b3839860da',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (86,94,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'472bf4e471ef125f',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (87,96,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'188d57636c31422a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (88,97,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'c8d10d10dd2d66bb',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (89,101,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'082640d22f20fcf6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (90,117,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'7a53e74599f788ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (91,123,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f78524f14cda217c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (92,127,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'3de19df12cf6886c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (93,132,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'b7c48e40295cdc9a',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (94,135,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'648327e05cdee0ac',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (95,144,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'9dc4f36b0500ac35',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (96,154,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'fe477a4cedeef016',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (97,156,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'bd1cbf336bcdc529',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (98,158,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'146f0c5184fd503c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (99,159,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'6def5a3cac235219',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (100,160,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'0ab78d1432305653',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (101,163,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4bc019d5fcebe204',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (102,172,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'44c3f7faa315a724',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (103,175,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7749b8e4f077e05c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (104,178,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'7e35b99bd91e7b4c',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (105,179,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'504a9107e1c840c3',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (106,182,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'cca171d375cdc8f6',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (107,184,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'656d8e5060576829',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (108,189,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'b7318d85efca799b',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (109,192,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'4feacc260963ba72',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (110,195,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'f82bc2b76969d315',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (111,196,4,NULL,1,'2023-10-19 14:22:30',0.00,800.00,NULL,NULL,'a96ed671bbd3ea09',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (112,197,4,NULL,1,'2023-10-19 14:22:30',0.00,50.00,NULL,NULL,'60f19d9651d20536',NULL,NULL,'USD',NULL,NULL,'2023-10-19 14:22:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0); /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */; UNLOCK TABLES; @@ -2358,9 +2363,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution_recur` WRITE; /*!40000 ALTER TABLE `civicrm_contribution_recur` DISABLE KEYS */; INSERT INTO `civicrm_contribution_recur` (`id`, `contact_id`, `amount`, `currency`, `frequency_unit`, `frequency_interval`, `installments`, `start_date`, `create_date`, `modified_date`, `cancel_date`, `cancel_reason`, `end_date`, `processor_id`, `payment_token_id`, `trxn_id`, `invoice_id`, `contribution_status_id`, `is_test`, `cycle_day`, `next_sched_contribution_date`, `failure_count`, `failure_retry_date`, `auto_renew`, `payment_processor_id`, `financial_type_id`, `payment_instrument_id`, `campaign_id`, `is_email_receipt`) VALUES - (1,59,25.00,'USD','month',1,12,'2022-07-07 01:51:39','2023-10-07 01:51:39','2023-10-07 01:51:39',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), - (2,99,10.00,'CAD','month',1,6,'2023-02-07 01:51:39','2023-10-07 01:51:39','2023-10-07 01:51:39','2023-09-07 01:51:39','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), - (3,103,5.00,'EUR','month',3,3,'2023-09-07 01:51:39','2023-10-07 01:51:39','2023-10-07 01:51:39',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-12-07 01:51:39',0,NULL,0,1,NULL,NULL,NULL,1); + (1,59,25.00,'USD','month',1,12,'2022-07-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), + (2,99,10.00,'CAD','month',1,6,'2023-02-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30','2023-09-19 14:22:30','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1), + (3,103,5.00,'EUR','month',3,3,'2023-09-19 14:22:30','2023-10-19 14:22:30','2023-10-19 21:22:30',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-12-19 14:22:30',0,NULL,0,1,NULL,NULL,NULL,1); /*!40000 ALTER TABLE `civicrm_contribution_recur` ENABLE KEYS */; UNLOCK TABLES; @@ -2371,8 +2376,8 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution_soft` WRITE; /*!40000 ALTER TABLE `civicrm_contribution_soft` DISABLE KEYS */; INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES - (1,9,113,10.00,'USD',1,1,'Jones Family','Helping Hands',10), - (2,10,113,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); + (1,9,142,10.00,'USD',1,1,'Jones Family','Helping Hands',10), + (2,10,142,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */; UNLOCK TABLES; @@ -2970,7 +2975,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_domain` WRITE; /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */; INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES - (1,'Default Domain Name',NULL,'5.67.3',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); + (1,'Default Domain Name',NULL,'5.68.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */; UNLOCK TABLES; @@ -2982,207 +2987,196 @@ LOCK TABLES `civicrm_email` WRITE; /*!40000 ALTER TABLE `civicrm_email` DISABLE KEYS */; INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES (1,1,1,'fixme.domainemail@example.org',1,0,0,0,NULL,NULL,NULL,NULL), - (2,26,1,'craigcruz87@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (3,26,1,'cruz.craig@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (4,201,1,'reynolds.iris@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (5,113,1,'jacobsj46@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (6,153,1,'grant.maxwell@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), - (7,98,1,'ashlier@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (8,98,1,'ashlier9@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (9,78,1,'zope.lincoln4@example.org',1,0,0,0,NULL,NULL,NULL,NULL), - (10,78,1,'lincolnz81@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (11,180,1,'barkleym81@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (12,182,1,'jameson.margaret@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (13,109,1,'rolandodimitrov6@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (14,109,1,'dimitrovr@spamalot.info',0,0,0,0,NULL,NULL,NULL,NULL), - (15,83,1,'ajameson@lol.com',1,0,0,0,NULL,NULL,NULL,NULL), - (16,83,1,'ashleyjameson65@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (17,125,1,'ek.dimitrov84@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (18,125,1,'errold@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (19,33,1,'rosariosmith@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (20,33,1,'rosariosmith@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (21,90,1,'samuelso87@example.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (22,90,1,'samuels.omar@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (23,72,1,'chowski.irvin5@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (24,72,1,'chowskii@sample.com',0,0,0,0,NULL,NULL,NULL,NULL), - (25,129,1,'jones.elbert@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (26,185,1,'sanfordterry@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (27,44,1,'blackwellm13@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (28,114,1,'robertson.l.santina@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (29,160,1,'jyadav81@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), - (30,95,1,'rsmith99@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (31,106,1,'jk.jacobs2@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (32,20,1,'dazr@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (33,20,1,'rz.daz78@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (34,94,1,'beulap@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (35,104,1,'rolandoblackwell56@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (36,104,1,'rolandoblackwell@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (37,142,1,'russelly86@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (38,97,1,'roberts.k.rolando@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (39,97,1,'robertsr51@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (40,120,1,'smitha23@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (41,120,1,'asmith@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (42,119,1,'shermanchowski@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), - (43,16,1,'mcreynolds.u.junko9@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (44,47,1,'vo.barkley@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (45,47,1,'valeneb@testmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (46,15,1,'lcooper@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (47,15,1,'cooper.landon@lol.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (48,199,1,'nr.samson7@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL), - (49,199,1,'norriss@sample.info',0,0,0,0,NULL,NULL,NULL,NULL), - (50,165,1,'reynoldsk@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (51,146,1,'wilson.valene@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (52,146,1,'valenew@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (53,91,1,'sj.ivanov@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (54,91,1,'sanfordi@example.info',0,0,0,0,NULL,NULL,NULL,NULL), - (55,54,1,'gonzlez.carlos@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (56,30,1,'smith.o.mei95@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (57,164,1,'rayterry98@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (58,170,1,'deforests@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (59,138,1,'alidat@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (60,138,1,'terrya@example.net',0,0,0,0,NULL,NULL,NULL,NULL), - (61,177,1,'teddyterry@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (62,143,1,'wattson.h.errol73@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (63,143,1,'errolw@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (64,196,1,'bachman.craig8@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (65,198,1,'ashleyjameson@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL), - (66,198,1,'jamesona32@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (67,181,1,'yadava@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (68,181,1,'yadava@sample.info',0,0,0,0,NULL,NULL,NULL,NULL), - (69,102,1,'jensend@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (70,102,1,'jensen.l.daren@example.info',0,0,0,0,NULL,NULL,NULL,NULL), - (71,167,1,'ivanov.jackson59@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (72,167,1,'ivanov.jackson@testing.com',0,0,0,0,NULL,NULL,NULL,NULL), - (73,68,1,'meiyadav72@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (74,68,1,'yadavm72@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (75,189,1,'jdimitrov@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (76,189,1,'jacobdimitrov@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (77,12,1,'adamsl4@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (78,12,1,'adams.k.lawerence@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (79,195,1,'bd.terry11@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (80,195,1,'terryb@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (81,192,1,'rebekahnielsen@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (82,192,1,'nielsen.v.rebekah@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (83,36,1,'grantk80@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (84,32,1,'grantt@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (85,32,1,'grantt@example.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (86,116,1,'teddyo@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (87,116,1,'olsen.a.teddy73@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (88,24,1,'eleonorivanov@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (89,24,1,'ivanov.eleonor61@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (90,163,1,'jones.winford@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (91,163,1,'winfordjones@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (92,46,1,'sjensen26@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (93,46,1,'jensen.shauna37@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (94,149,1,'jeromej@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (95,18,1,'rblackwell57@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (96,18,1,'rosarioblackwell@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (97,184,1,'blackwellm64@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (98,184,1,'margaretb34@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (99,10,1,'blackwelln@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (100,63,1,'dimitrovw@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), - (101,87,1,'roberts-dimitrov.x.megan@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (102,87,1,'roberts-dimitrovm77@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (103,57,1,'tdimitrov@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (104,175,1,'eolsen-mcreynolds91@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL), - (105,93,1,'mcreynoldsa@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (106,93,1,'mcreynoldsa25@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (107,29,1,'lashawndamcreynolds@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (108,29,1,'mcreynolds.lashawnda@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (109,101,1,'hz.lee98@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (110,40,1,'llee51@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (111,40,1,'llee76@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (112,154,1,'ht.cruz@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (113,154,1,'heidicruz84@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (114,58,1,'zope.juliann@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (115,58,1,'zope.juliann@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (116,84,1,'ashleyjameson@lol.org',1,0,0,0,NULL,NULL,NULL,NULL), - (117,22,1,'jamesonl@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (118,22,1,'jamesonl91@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (119,158,1,'russelljameson@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (120,158,1,'jamesonr@testing.net',0,0,0,0,NULL,NULL,NULL,NULL), - (121,65,1,'rzope42@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (122,82,1,'erikyadav16@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (123,82,1,'yadav.n.erik79@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (124,186,1,'elinay@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (125,80,1,'teresayadav59@example.info',1,0,0,0,NULL,NULL,NULL,NULL), - (126,80,1,'tyadav@sample.org',0,0,0,0,NULL,NULL,NULL,NULL), - (127,159,1,'erikyadav83@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (128,159,1,'yadave@sample.com',0,0,0,0,NULL,NULL,NULL,NULL), - (129,45,1,'lawerencejones@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (130,48,1,'meganterrell@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (131,48,1,'mterrell83@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (132,141,1,'jones-terrell.o.mei@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (133,141,1,'jones-terrellm@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (134,157,1,'dimitrov.z.ray@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (135,157,1,'rayd@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (136,128,1,'deforest.maxwell@example.net',1,0,0,0,NULL,NULL,NULL,NULL), - (137,8,1,'mz.dimitrov-deforest@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (138,8,1,'dimitrov-deforest.z.merrie@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (139,140,1,'dimitrov-deforest.toby97@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (140,144,1,'terrell.w.sanford@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (141,4,1,'eleonorw@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (142,4,1,'ewattson-terrell@example.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (143,178,1,'tobyt@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (144,127,1,'terrells@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (145,56,1,'wilson-daz.ashley@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (146,193,1,'jdaz@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (147,193,1,'jacobdaz@example.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (148,39,1,'jacobs.w.lashawnda61@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (149,79,1,'jacobs.beula@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), - (150,79,1,'jacobs.beula34@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (151,49,1,'jacobs.beula@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (152,137,1,'wilsonj2@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (153,173,1,'wilson.scott@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (154,173,1,'wilson.scott@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (155,69,1,'mmcreynolds@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL), - (156,75,1,'allanm@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), - (157,75,1,'mcreynoldsa@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (158,38,1,'elizabethb36@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (159,38,1,'blackwelle@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (160,176,1,'blackwell.k.angelika11@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (161,176,1,'blackwell.angelika@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (162,145,1,'samuels.jacob13@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (163,145,1,'jsamuels68@sample.org',0,0,0,0,NULL,NULL,NULL,NULL), - (164,191,1,'hsamuels61@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (165,41,1,'samuels.s.rolando81@lol.org',1,0,0,0,NULL,NULL,NULL,NULL), - (166,25,1,'mdimitrov24@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (167,25,1,'merriedimitrov@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (168,28,1,'mariacruz-dimitrov48@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (169,28,1,'mariac75@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (170,31,3,'contact@bfmusicassociation.org',1,0,0,0,NULL,NULL,NULL,NULL), - (171,194,2,'lee.jackson@bfmusicassociation.org',1,0,0,0,NULL,NULL,NULL,NULL), - (172,150,3,'info@vnliteracysolutions.org',1,0,0,0,NULL,NULL,NULL,NULL), - (173,79,2,'bjacobs68@vnliteracysolutions.org',0,0,0,0,NULL,NULL,NULL,NULL), - (174,133,3,'info@texasculturealliance.org',1,0,0,0,NULL,NULL,NULL,NULL), - (175,104,2,'rolandoblackwell@texasculturealliance.org',0,0,0,0,NULL,NULL,NULL,NULL), - (176,168,3,'info@globalagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL), - (177,174,3,'info@maplehealthfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL), - (178,187,2,'jones-terrell.carlos17@maplehealthfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL), - (179,190,3,'feedback@floridatechnology.org',1,0,0,0,NULL,NULL,NULL,NULL), - (180,122,2,'allanjameson68@floridatechnology.org',1,0,0,0,NULL,NULL,NULL,NULL), - (181,74,3,'info@longvilleactioncenter.org',1,0,0,0,NULL,NULL,NULL,NULL), - (182,159,2,'erikyadav@longvilleactioncenter.org',0,0,0,0,NULL,NULL,NULL,NULL), - (183,89,3,'service@greenaction.org',1,0,0,0,NULL,NULL,NULL,NULL), - (184,171,3,'sales@jacksonpeace.org',1,0,0,0,NULL,NULL,NULL,NULL), - (185,169,2,'daz.h.santina57@jacksonpeace.org',1,0,0,0,NULL,NULL,NULL,NULL), - (186,121,3,'info@californiacollective.org',1,0,0,0,NULL,NULL,NULL,NULL), - (187,58,2,'juliannz19@californiacollective.org',0,0,0,0,NULL,NULL,NULL,NULL), - (188,50,3,'info@collegeadvocacy.org',1,0,0,0,NULL,NULL,NULL,NULL), - (189,112,3,'feedback@jamaicaarts.org',1,0,0,0,NULL,NULL,NULL,NULL), - (190,136,2,'lee.russell28@jamaicaarts.org',1,0,0,0,NULL,NULL,NULL,NULL), - (191,53,3,'info@communityeducationpartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), - (192,180,2,'robertson.lawerence31@communityeducationpartnership.org',0,0,0,0,NULL,NULL,NULL,NULL), - (193,111,3,'info@statesactionsystems.org',1,0,0,0,NULL,NULL,NULL,NULL), - (194,45,2,'bterrell@statesactionsystems.org',0,0,0,0,NULL,NULL,NULL,NULL), - (195,17,3,'contact@lancastersustainability.org',1,0,0,0,NULL,NULL,NULL,NULL), - (196,57,2,'chowski.maria@lancastersustainability.org',0,0,0,0,NULL,NULL,NULL,NULL), - (197,51,3,'feedback@montierpeace.org',1,0,0,0,NULL,NULL,NULL,NULL), - (198,75,2,'allanmcreynolds@montierpeace.org',0,0,0,0,NULL,NULL,NULL,NULL), - (199,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (200,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (201,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (202,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); + (2,25,1,'beulaw59@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (3,25,1,'wagnerb94@notmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (4,35,1,'mllero90@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (5,35,1,'omarmller@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (6,5,1,'jacobs.esta@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (7,54,1,'teddynielsen@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (8,4,1,'smith.a.damaris42@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (9,4,1,'smith.a.damaris@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (10,9,1,'brigetteroberts@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (11,9,1,'brigetter@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (12,143,1,'olsenk90@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (13,143,1,'olsenk@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (14,123,1,'kz.roberts@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (15,123,1,'kathlynroberts79@lol.org',0,0,0,0,NULL,NULL,NULL,NULL), + (16,70,1,'daz.irvin@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (17,70,1,'irvindaz@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (18,173,1,'yadav.sharyn@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (19,186,1,'jacobs.kenny@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (20,186,1,'jacobsk50@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (21,127,1,'kiarab15@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (22,101,1,'delanadimitrov@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (23,30,1,'josefag39@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (24,30,1,'grant.josefa82@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (25,89,1,'nielsenk60@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (26,187,1,'bobt59@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (27,194,1,'troymller@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (28,115,1,'deforest.u.clint2@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (29,115,1,'deforest.u.clint61@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (30,129,1,'erikd57@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (31,129,1,'deforest.erik32@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (32,168,1,'ideforest7@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (33,168,1,'iveyd@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (34,157,1,'jameson.megan@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (35,157,1,'jameson.megan@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (36,172,1,'allanz@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (37,172,1,'at.zope30@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (38,197,1,'rayg@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (39,197,1,'raygrant@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (40,98,1,'shaunapatel@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (41,94,1,'omarp@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (42,94,1,'omarp59@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (43,11,1,'cruzc@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (44,178,1,'rjameson4@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (45,144,1,'princessterry@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (46,201,1,'beulanielsen@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (47,87,1,'reynolds.q.laree29@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (48,8,1,'lt.blackwell40@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (49,8,1,'blackwell.t.laree45@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (50,33,1,'dimitrovb@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (51,33,1,'dimitrovb20@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (52,42,1,'grantr7@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (53,120,1,'blackwell.josefa@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (54,169,1,'kathlynj@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL), + (55,169,1,'kjones@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (56,17,1,'aolsen@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (57,17,1,'alexiao17@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (58,174,1,'miguelzope@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (59,71,1,'mllerb@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (60,71,1,'bf.mller@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (61,56,1,'cooper.merrie@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (62,171,1,'sx.robertson@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (63,171,1,'robertson.santina5@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (64,97,1,'chowski.bernadette@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (65,29,1,'cruz.beula75@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (66,138,1,'tobyj@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (67,138,1,'tjacobs90@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (68,107,1,'estachowski@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (69,107,1,'chowski.g.esta16@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (70,167,1,'ivanov.errol42@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (71,167,1,'ivanov.errol@testing.info',0,0,0,0,NULL,NULL,NULL,NULL), + (72,27,1,'robertson.merrie@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (73,27,1,'robertsonm44@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (74,184,1,'cooper.teddy48@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (75,184,1,'teddycooper72@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL), + (76,102,1,'wagner.n.barry@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (77,102,1,'barryw56@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (78,96,1,'blackwella@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (79,106,1,'dazr@sample.org',1,0,0,0,NULL,NULL,NULL,NULL), + (80,106,1,'daz.rosario@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (81,86,1,'eleonorp@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (82,86,1,'eleonorparker61@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (83,24,1,'sbachman@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (84,189,1,'bachman.maria@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (85,176,1,'reynolds.iris@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL), + (86,176,1,'ireynolds85@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (87,151,1,'kandacecruz-reynolds@example.com',1,0,0,0,NULL,NULL,NULL,NULL), + (88,49,1,'carlosivanov25@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL), + (89,49,1,'carlosi64@example.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (90,200,1,'deforest-ivanov.lashawnda36@testing.info',1,0,0,0,NULL,NULL,NULL,NULL), + (91,125,1,'ivanov.sharyn@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (92,125,1,'sharyni93@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (93,55,1,'ivanov.p.russell30@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (94,55,1,'russelli@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (95,150,1,'prentice.h.allan58@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (96,150,1,'prenticea@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (97,34,1,'sonnyprentice32@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (98,34,1,'sonnyprentice47@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (99,183,1,'ivanov.a.kenny24@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (100,183,1,'ivanovk@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (101,193,1,'ivanova@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (102,44,1,'divanov@sample.info',1,0,0,0,NULL,NULL,NULL,NULL), + (103,44,1,'delanai@example.com',0,0,0,0,NULL,NULL,NULL,NULL), + (104,60,1,'louivanov85@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (105,60,1,'livanov@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (106,109,1,'lashawndaprentice31@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (107,109,1,'lashawndap@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (108,76,1,'prenticem4@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (109,76,1,'prenticem86@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (110,126,1,'troyp@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (111,126,1,'tprentice83@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (112,46,1,'miguels@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (113,74,1,'samuels.valene96@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (114,163,1,'kjensen-terry@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (115,162,1,'terry.brigette@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (116,162,1,'brigettet@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (117,21,1,'jc.wattson@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (118,14,1,'delanaw69@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (119,14,1,'wattson.delana@lol.org',0,0,0,0,NULL,NULL,NULL,NULL), + (120,170,1,'wattsonm@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (121,45,1,'estaw12@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (122,45,1,'estawattson@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (123,199,1,'mo.mller8@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), + (124,199,1,'mllerm@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL), + (125,112,1,'mller.h.sherman73@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (126,79,1,'irvinmller41@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (127,79,1,'mlleri@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (128,48,1,'teddywilson@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (129,91,1,'rebekahj@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (130,91,1,'jameson.q.rebekah@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (131,104,1,'wilson-jameson.brittney@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (132,104,1,'bj.wilson-jameson@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (133,92,1,'maganwilson-jameson9@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (134,100,1,'justinawilson-deforest24@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (135,160,1,'alexiad24@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (136,198,1,'brentr@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (137,198,1,'reynoldsb42@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (138,6,1,'reynolds.magan75@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (139,15,1,'olsenb@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (140,137,1,'olsena@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (141,180,1,'cf.samson37@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (142,180,1,'cf.samson29@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (143,114,1,'darens@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (144,114,1,'darens48@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (145,32,1,'jl.samson-terry93@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (146,18,1,'andrewd35@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (147,18,1,'ae.daz94@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (148,90,1,'junkochowski28@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (149,39,1,'daz-chowskid16@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (150,121,1,'terrell.g.sherman70@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (151,121,1,'terrells@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (152,196,1,'terrell.barry@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (153,154,1,'vz.reynolds@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (154,61,1,'arlynereynolds@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (155,61,1,'reynoldsa@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (156,63,1,'sreynolds21@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (157,63,1,'sonnyreynolds@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (158,85,1,'mcreynolds.justina@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (159,85,1,'mcreynolds.justina@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (160,36,1,'yadav.j.lou79@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (161,36,1,'louyadav@testing.org',0,0,0,0,NULL,NULL,NULL,NULL), + (162,118,1,'ap.lee-yadav10@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (163,118,1,'lee-yadava5@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (164,103,3,'info@oregondevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL), + (165,187,2,'bterrell@oregondevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL), + (166,135,3,'service@sacramentopartners.org',1,0,0,0,NULL,NULL,NULL,NULL), + (167,115,2,'clintdeforest@sacramentopartners.org',0,0,0,0,NULL,NULL,NULL,NULL), + (168,77,3,'contact@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL), + (169,81,2,'smith.elina@globalwellnesscenter.org',1,0,0,0,NULL,NULL,NULL,NULL), + (170,22,3,'info@bostonacademy.org',1,0,0,0,NULL,NULL,NULL,NULL), + (171,33,2,'angelikaterrell45@bostonacademy.org',0,0,0,0,NULL,NULL,NULL,NULL), + (172,68,3,'contact@unitedagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL), + (173,85,2,'mcreynolds.justina@unitedagriculture.org',0,0,0,0,NULL,NULL,NULL,NULL), + (174,133,3,'feedback@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), + (175,72,2,'wagner.miguel@progressivepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), + (176,19,3,'info@creativesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL), + (177,129,2,'erikd10@creativesolutions.org',0,0,0,0,NULL,NULL,NULL,NULL), + (178,161,3,'info@progressivenetwork.org',1,0,0,0,NULL,NULL,NULL,NULL), + (179,69,3,'info@globalsportscenter.org',1,0,0,0,NULL,NULL,NULL,NULL), + (180,4,2,'smith.damaris@globalsportscenter.org',0,0,0,0,NULL,NULL,NULL,NULL), + (181,95,3,'info@ruralagriculturetrust.org',1,0,0,0,NULL,NULL,NULL,NULL), + (182,139,3,'sales@ruralinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL), + (183,197,2,'raygrant48@ruralinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL), + (184,7,3,'sales@hanovereducation.org',1,0,0,0,NULL,NULL,NULL,NULL), + (185,15,2,'juliannt81@hanovereducation.org',0,0,0,0,NULL,NULL,NULL,NULL), + (186,148,3,'contact@localtrust.org',1,0,0,0,NULL,NULL,NULL,NULL), + (187,96,2,'valeneb@localtrust.org',0,0,0,0,NULL,NULL,NULL,NULL), + (188,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), + (189,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (190,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (191,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */; UNLOCK TABLES; @@ -3306,165 +3300,165 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, (60,'civicrm_financial_item',30,30,10.00), (61,'civicrm_contribution',31,31,5.00), (62,'civicrm_financial_item',31,31,5.00), - (63,'civicrm_contribution',32,32,100.00), - (64,'civicrm_financial_item',32,32,100.00), - (65,'civicrm_contribution',34,33,100.00), + (63,'civicrm_contribution',61,32,1200.00), + (64,'civicrm_financial_item',32,32,1200.00), + (65,'civicrm_contribution',38,33,100.00), (66,'civicrm_financial_item',33,33,100.00), - (67,'civicrm_contribution',38,34,100.00), + (67,'civicrm_contribution',41,34,100.00), (68,'civicrm_financial_item',34,34,100.00), - (69,'civicrm_contribution',40,35,100.00), + (69,'civicrm_contribution',43,35,100.00), (70,'civicrm_financial_item',35,35,100.00), - (71,'civicrm_contribution',41,36,100.00), + (71,'civicrm_contribution',34,36,100.00), (72,'civicrm_financial_item',36,36,100.00), - (73,'civicrm_contribution',44,37,100.00), - (74,'civicrm_financial_item',37,37,100.00), - (75,'civicrm_contribution',46,38,100.00), - (76,'civicrm_financial_item',38,38,100.00), - (77,'civicrm_contribution',48,39,100.00), + (73,'civicrm_contribution',52,37,50.00), + (74,'civicrm_financial_item',37,37,50.00), + (75,'civicrm_contribution',47,38,50.00), + (76,'civicrm_financial_item',38,38,50.00), + (77,'civicrm_contribution',36,39,100.00), (78,'civicrm_financial_item',39,39,100.00), - (79,'civicrm_contribution',50,40,100.00), - (80,'civicrm_financial_item',40,40,100.00), - (81,'civicrm_contribution',51,41,100.00), + (79,'civicrm_contribution',53,40,50.00), + (80,'civicrm_financial_item',40,40,50.00), + (81,'civicrm_contribution',39,41,100.00), (82,'civicrm_financial_item',41,41,100.00), - (83,'civicrm_contribution',52,42,100.00), + (83,'civicrm_contribution',32,42,100.00), (84,'civicrm_financial_item',42,42,100.00), - (85,'civicrm_contribution',54,43,100.00), - (86,'civicrm_financial_item',43,43,100.00), - (87,'civicrm_contribution',56,44,100.00), - (88,'civicrm_financial_item',44,44,100.00), - (89,'civicrm_contribution',58,45,100.00), + (85,'civicrm_contribution',59,43,50.00), + (86,'civicrm_financial_item',43,43,50.00), + (87,'civicrm_contribution',58,44,50.00), + (88,'civicrm_financial_item',44,44,50.00), + (89,'civicrm_contribution',45,45,100.00), (90,'civicrm_financial_item',45,45,100.00), - (91,'civicrm_contribution',60,46,100.00), + (91,'civicrm_contribution',35,46,100.00), (92,'civicrm_financial_item',46,46,100.00), - (93,'civicrm_contribution',33,47,50.00), + (93,'civicrm_contribution',54,47,50.00), (94,'civicrm_financial_item',47,47,50.00), - (95,'civicrm_contribution',35,48,50.00), - (96,'civicrm_financial_item',48,48,50.00), - (97,'civicrm_contribution',36,49,50.00), + (95,'civicrm_contribution',60,48,1200.00), + (96,'civicrm_financial_item',48,48,1200.00), + (97,'civicrm_contribution',57,49,50.00), (98,'civicrm_financial_item',49,49,50.00), - (99,'civicrm_contribution',37,50,50.00), - (100,'civicrm_financial_item',50,50,50.00), - (101,'civicrm_contribution',39,51,50.00), + (99,'civicrm_contribution',40,50,100.00), + (100,'civicrm_financial_item',50,50,100.00), + (101,'civicrm_contribution',49,51,50.00), (102,'civicrm_financial_item',51,51,50.00), - (103,'civicrm_contribution',43,52,50.00), - (104,'civicrm_financial_item',52,52,50.00), - (105,'civicrm_contribution',45,53,50.00), + (103,'civicrm_contribution',44,52,100.00), + (104,'civicrm_financial_item',52,52,100.00), + (105,'civicrm_contribution',48,53,50.00), (106,'civicrm_financial_item',53,53,50.00), - (107,'civicrm_contribution',47,54,50.00), + (107,'civicrm_contribution',55,54,50.00), (108,'civicrm_financial_item',54,54,50.00), - (109,'civicrm_contribution',49,55,50.00), - (110,'civicrm_financial_item',55,55,50.00), - (111,'civicrm_contribution',55,56,50.00), + (109,'civicrm_contribution',46,55,100.00), + (110,'civicrm_financial_item',55,55,100.00), + (111,'civicrm_contribution',51,56,50.00), (112,'civicrm_financial_item',56,56,50.00), - (113,'civicrm_contribution',57,57,50.00), - (114,'civicrm_financial_item',57,57,50.00), - (115,'civicrm_contribution',59,58,50.00), + (113,'civicrm_contribution',33,57,100.00), + (114,'civicrm_financial_item',57,57,100.00), + (115,'civicrm_contribution',50,58,50.00), (116,'civicrm_financial_item',58,58,50.00), - (117,'civicrm_contribution',61,59,50.00), - (118,'civicrm_financial_item',59,59,50.00), - (119,'civicrm_contribution',42,60,1200.00), - (120,'civicrm_financial_item',60,60,1200.00), - (121,'civicrm_contribution',53,61,1200.00), - (122,'civicrm_financial_item',61,61,1200.00), - (123,'civicrm_contribution',83,62,50.00), + (117,'civicrm_contribution',42,59,100.00), + (118,'civicrm_financial_item',59,59,100.00), + (119,'civicrm_contribution',37,60,100.00), + (120,'civicrm_financial_item',60,60,100.00), + (121,'civicrm_contribution',56,61,50.00), + (122,'civicrm_financial_item',61,61,50.00), + (123,'civicrm_contribution',85,62,50.00), (124,'civicrm_financial_item',62,62,50.00), - (125,'civicrm_contribution',90,63,50.00), + (125,'civicrm_contribution',73,63,50.00), (126,'civicrm_financial_item',63,63,50.00), - (127,'civicrm_contribution',102,64,50.00), + (127,'civicrm_contribution',75,64,50.00), (128,'civicrm_financial_item',64,64,50.00), - (129,'civicrm_contribution',70,65,50.00), + (129,'civicrm_contribution',110,65,50.00), (130,'civicrm_financial_item',65,65,50.00), - (131,'civicrm_contribution',101,66,50.00), + (131,'civicrm_contribution',72,66,50.00), (132,'civicrm_financial_item',66,66,50.00), - (133,'civicrm_contribution',89,67,50.00), + (133,'civicrm_contribution',105,67,50.00), (134,'civicrm_financial_item',67,67,50.00), - (135,'civicrm_contribution',78,68,50.00), + (135,'civicrm_contribution',95,68,50.00), (136,'civicrm_financial_item',68,68,50.00), - (137,'civicrm_contribution',82,69,50.00), + (137,'civicrm_contribution',76,69,50.00), (138,'civicrm_financial_item',69,69,50.00), - (139,'civicrm_contribution',104,70,50.00), + (139,'civicrm_contribution',89,70,50.00), (140,'civicrm_financial_item',70,70,50.00), - (141,'civicrm_contribution',85,71,50.00), + (141,'civicrm_contribution',79,71,50.00), (142,'civicrm_financial_item',71,71,50.00), - (143,'civicrm_contribution',84,72,50.00), + (143,'civicrm_contribution',88,72,50.00), (144,'civicrm_financial_item',72,72,50.00), - (145,'civicrm_contribution',111,73,50.00), + (145,'civicrm_contribution',69,73,50.00), (146,'civicrm_financial_item',73,73,50.00), - (147,'civicrm_contribution',92,74,50.00), + (147,'civicrm_contribution',83,74,50.00), (148,'civicrm_financial_item',74,74,50.00), - (149,'civicrm_contribution',86,75,50.00), + (149,'civicrm_contribution',97,75,50.00), (150,'civicrm_financial_item',75,75,50.00), - (151,'civicrm_contribution',67,76,50.00), + (151,'civicrm_contribution',87,76,50.00), (152,'civicrm_financial_item',76,76,50.00), - (153,'civicrm_contribution',107,77,50.00), + (153,'civicrm_contribution',102,77,50.00), (154,'civicrm_financial_item',77,77,50.00), - (155,'civicrm_contribution',72,78,800.00), + (155,'civicrm_contribution',100,78,800.00), (156,'civicrm_financial_item',78,78,800.00), - (157,'civicrm_contribution',71,79,800.00), + (157,'civicrm_contribution',74,79,800.00), (158,'civicrm_financial_item',79,79,800.00), - (159,'civicrm_contribution',97,80,800.00), + (159,'civicrm_contribution',71,80,800.00), (160,'civicrm_financial_item',80,80,800.00), - (161,'civicrm_contribution',106,81,800.00), + (161,'civicrm_contribution',109,81,800.00), (162,'civicrm_financial_item',81,81,800.00), - (163,'civicrm_contribution',75,82,800.00), + (163,'civicrm_contribution',68,82,800.00), (164,'civicrm_financial_item',82,82,800.00), - (165,'civicrm_contribution',63,83,800.00), + (165,'civicrm_contribution',108,83,800.00), (166,'civicrm_financial_item',83,83,800.00), - (167,'civicrm_contribution',76,84,800.00), + (167,'civicrm_contribution',82,84,800.00), (168,'civicrm_financial_item',84,84,800.00), - (169,'civicrm_contribution',96,85,800.00), + (169,'civicrm_contribution',111,85,800.00), (170,'civicrm_financial_item',85,85,800.00), - (171,'civicrm_contribution',100,86,800.00), + (171,'civicrm_contribution',106,86,800.00), (172,'civicrm_financial_item',86,86,800.00), - (173,'civicrm_contribution',77,87,800.00), + (173,'civicrm_contribution',98,87,800.00), (174,'civicrm_financial_item',87,87,800.00), - (175,'civicrm_contribution',73,88,800.00), + (175,'civicrm_contribution',80,88,800.00), (176,'civicrm_financial_item',88,88,800.00), - (177,'civicrm_contribution',95,89,800.00), + (177,'civicrm_contribution',63,89,800.00), (178,'civicrm_financial_item',89,89,800.00), - (179,'civicrm_contribution',91,90,800.00), + (179,'civicrm_contribution',92,90,800.00), (180,'civicrm_financial_item',90,90,800.00), - (181,'civicrm_contribution',108,91,800.00), + (181,'civicrm_contribution',90,91,800.00), (182,'civicrm_financial_item',91,91,800.00), - (183,'civicrm_contribution',105,92,800.00), + (183,'civicrm_contribution',101,92,800.00), (184,'civicrm_financial_item',92,92,800.00), - (185,'civicrm_contribution',110,93,800.00), + (185,'civicrm_contribution',77,93,800.00), (186,'civicrm_financial_item',93,93,800.00), - (187,'civicrm_contribution',80,94,800.00), + (187,'civicrm_contribution',78,94,800.00), (188,'civicrm_financial_item',94,94,800.00), - (189,'civicrm_contribution',68,95,800.00), + (189,'civicrm_contribution',84,95,800.00), (190,'civicrm_financial_item',95,95,800.00), - (191,'civicrm_contribution',109,96,50.00), + (191,'civicrm_contribution',65,96,50.00), (192,'civicrm_financial_item',96,96,50.00), - (193,'civicrm_contribution',88,97,50.00), + (193,'civicrm_contribution',81,97,50.00), (194,'civicrm_financial_item',97,97,50.00), - (195,'civicrm_contribution',74,98,50.00), + (195,'civicrm_contribution',86,98,50.00), (196,'civicrm_financial_item',98,98,50.00), - (197,'civicrm_contribution',93,99,50.00), + (197,'civicrm_contribution',66,99,50.00), (198,'civicrm_financial_item',99,99,50.00), - (199,'civicrm_contribution',66,100,50.00), + (199,'civicrm_contribution',94,100,50.00), (200,'civicrm_financial_item',100,100,50.00), - (201,'civicrm_contribution',81,101,50.00), + (201,'civicrm_contribution',93,101,50.00), (202,'civicrm_financial_item',101,101,50.00), - (203,'civicrm_contribution',87,102,50.00), + (203,'civicrm_contribution',91,102,50.00), (204,'civicrm_financial_item',102,102,50.00), - (205,'civicrm_contribution',94,103,50.00), + (205,'civicrm_contribution',104,103,50.00), (206,'civicrm_financial_item',103,103,50.00), - (207,'civicrm_contribution',98,104,50.00), + (207,'civicrm_contribution',64,104,50.00), (208,'civicrm_financial_item',104,104,50.00), - (209,'civicrm_contribution',103,105,50.00), + (209,'civicrm_contribution',70,105,50.00), (210,'civicrm_financial_item',105,105,50.00), - (211,'civicrm_contribution',79,106,50.00), + (211,'civicrm_contribution',112,106,50.00), (212,'civicrm_financial_item',106,106,50.00), - (213,'civicrm_contribution',65,107,50.00), + (213,'civicrm_contribution',99,107,50.00), (214,'civicrm_financial_item',107,107,50.00), - (215,'civicrm_contribution',64,108,50.00), + (215,'civicrm_contribution',96,108,50.00), (216,'civicrm_financial_item',108,108,50.00), - (217,'civicrm_contribution',112,109,50.00), + (217,'civicrm_contribution',67,109,50.00), (218,'civicrm_financial_item',109,109,50.00), - (219,'civicrm_contribution',99,110,50.00), + (219,'civicrm_contribution',107,110,50.00), (220,'civicrm_financial_item',110,110,50.00), - (221,'civicrm_contribution',69,111,50.00), + (221,'civicrm_contribution',103,111,50.00), (222,'civicrm_financial_item',111,111,50.00); /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -3476,121 +3470,126 @@ UNLOCK TABLES; LOCK TABLES `civicrm_entity_tag` WRITE; /*!40000 ALTER TABLE `civicrm_entity_tag` DISABLE KEYS */; INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES - (43,'civicrm_contact',2,5), - (96,'civicrm_contact',8,5), - (69,'civicrm_contact',10,5), - (57,'civicrm_contact',12,4), - (58,'civicrm_contact',12,5), - (113,'civicrm_contact',13,5), - (9,'civicrm_contact',17,1), - (67,'civicrm_contact',18,4), - (68,'civicrm_contact',18,5), - (8,'civicrm_contact',19,1), - (32,'civicrm_contact',20,4), - (74,'civicrm_contact',23,4), - (11,'civicrm_contact',26,4), - (115,'civicrm_contact',28,4), - (1,'civicrm_contact',31,1), - (61,'civicrm_contact',32,5), - (22,'civicrm_contact',33,4), - (23,'civicrm_contact',33,5), - (101,'civicrm_contact',34,4), - (63,'civicrm_contact',37,5), - (78,'civicrm_contact',40,4), - (109,'civicrm_contact',42,4), - (110,'civicrm_contact',42,5), - (38,'civicrm_contact',43,5), - (92,'civicrm_contact',45,4), - (93,'civicrm_contact',45,5), - (40,'civicrm_contact',47,5), - (44,'civicrm_contact',54,4), - (45,'civicrm_contact',54,5), - (34,'civicrm_contact',55,5), - (72,'civicrm_contact',57,4), - (73,'civicrm_contact',57,5), - (82,'civicrm_contact',58,4), - (85,'civicrm_contact',60,4), - (86,'civicrm_contact',60,5), - (16,'civicrm_contact',61,4), - (70,'civicrm_contact',63,4), - (71,'civicrm_contact',63,5), - (87,'civicrm_contact',65,5), - (65,'civicrm_contact',66,4), - (66,'civicrm_contact',66,5), - (100,'civicrm_contact',67,5), - (106,'civicrm_contact',69,4), - (107,'civicrm_contact',69,5), - (114,'civicrm_contact',71,4), - (24,'civicrm_contact',72,4), - (25,'civicrm_contact',72,5), - (102,'civicrm_contact',77,5), - (103,'civicrm_contact',79,5), - (91,'civicrm_contact',80,5), - (90,'civicrm_contact',82,4), - (21,'civicrm_contact',83,5), - (83,'civicrm_contact',84,4), - (84,'civicrm_contact',84,5), - (79,'civicrm_contact',85,4), - (62,'civicrm_contact',86,5), - (5,'civicrm_contact',89,3), - (75,'civicrm_contact',93,4), - (76,'civicrm_contact',93,5), - (33,'civicrm_contact',94,4), - (17,'civicrm_contact',98,5), - (88,'civicrm_contact',99,4), - (89,'civicrm_contact',99,5), - (81,'civicrm_contact',103,4), - (31,'civicrm_contact',106,5), - (7,'civicrm_contact',112,2), - (28,'civicrm_contact',114,4), - (29,'civicrm_contact',114,5), - (4,'civicrm_contact',118,3), - (39,'civicrm_contact',119,5), - (36,'civicrm_contact',120,4), - (37,'civicrm_contact',120,5), - (6,'civicrm_contact',121,3), - (2,'civicrm_contact',133,1), - (108,'civicrm_contact',134,5), - (47,'civicrm_contact',138,4), - (48,'civicrm_contact',138,5), - (35,'civicrm_contact',142,4), - (51,'civicrm_contact',143,5), - (97,'civicrm_contact',144,4), - (98,'civicrm_contact',144,5), - (112,'civicrm_contact',145,5), - (111,'civicrm_contact',151,4), - (14,'civicrm_contact',153,4), - (15,'civicrm_contact',153,5), - (80,'civicrm_contact',154,5), - (95,'civicrm_contact',157,4), - (30,'civicrm_contact',160,5), - (64,'civicrm_contact',163,4), - (46,'civicrm_contact',164,4), - (10,'civicrm_contact',166,1), + (111,'civicrm_contact',2,5), + (14,'civicrm_contact',4,4), + (13,'civicrm_contact',5,4), + (15,'civicrm_contact',9,4), + (16,'civicrm_contact',9,5), + (98,'civicrm_contact',13,5), + (99,'civicrm_contact',15,4), + (100,'civicrm_contact',15,5), + (107,'civicrm_contact',18,4), + (108,'civicrm_contact',18,5), + (6,'civicrm_contact',19,3), + (86,'civicrm_contact',21,4), + (87,'civicrm_contact',21,5), + (64,'civicrm_contact',24,4), + (65,'civicrm_contact',24,5), + (51,'civicrm_contact',29,4), + (11,'civicrm_contact',31,5), + (37,'civicrm_contact',33,4), + (38,'civicrm_contact',33,5), + (73,'civicrm_contact',34,4), + (12,'civicrm_contact',35,4), + (117,'civicrm_contact',36,4), + (118,'civicrm_contact',36,5), + (55,'civicrm_contact',37,4), + (45,'civicrm_contact',38,5), + (109,'civicrm_contact',39,4), + (110,'civicrm_contact',39,5), + (56,'civicrm_contact',40,4), + (76,'civicrm_contact',44,4), + (80,'civicrm_contact',46,4), + (115,'civicrm_contact',47,4), + (91,'civicrm_contact',48,4), + (92,'civicrm_contact',48,5), + (69,'civicrm_contact',49,5), + (3,'civicrm_contact',50,3), + (4,'civicrm_contact',59,2), + (114,'civicrm_contact',61,4), + (8,'civicrm_contact',64,1), + (7,'civicrm_contact',69,3), + (19,'civicrm_contact',70,5), + (48,'civicrm_contact',71,4), + (79,'civicrm_contact',76,5), + (2,'civicrm_contact',77,1), + (39,'civicrm_contact',80,5), + (46,'civicrm_contact',81,4), + (47,'civicrm_contact',81,5), + (20,'civicrm_contact',83,5), + (77,'civicrm_contact',84,4), + (78,'civicrm_contact',84,5), + (63,'civicrm_contact',86,5), + (24,'civicrm_contact',89,5), + (43,'civicrm_contact',93,4), + (44,'civicrm_contact',93,5), + (32,'civicrm_contact',94,5), + (60,'civicrm_contact',96,4), + (61,'civicrm_contact',96,5), + (101,'civicrm_contact',99,4), + (102,'civicrm_contact',99,5), + (23,'civicrm_contact',101,4), + (58,'civicrm_contact',102,4), + (59,'civicrm_contact',102,5), + (1,'civicrm_contact',103,1), + (93,'civicrm_contact',104,5), + (53,'civicrm_contact',107,5), + (94,'civicrm_contact',110,5), + (119,'civicrm_contact',111,4), + (120,'civicrm_contact',111,5), + (90,'civicrm_contact',112,4), + (105,'civicrm_contact',114,4), + (106,'civicrm_contact',114,5), + (26,'civicrm_contact',115,5), + (62,'civicrm_contact',119,4), + (40,'civicrm_contact',120,4), + (41,'civicrm_contact',120,5), + (9,'civicrm_contact',122,1), + (17,'civicrm_contact',123,4), + (18,'civicrm_contact',123,5), + (89,'civicrm_contact',124,4), + (70,'civicrm_contact',125,4), + (36,'civicrm_contact',128,4), + (42,'civicrm_contact',130,5), + (5,'civicrm_contact',133,2), + (83,'civicrm_contact',140,4), + (66,'civicrm_contact',141,4), + (67,'civicrm_contact',141,5), + (52,'civicrm_contact',145,5), + (81,'civicrm_contact',147,4), + (82,'civicrm_contact',147,5), + (10,'civicrm_contact',148,2), + (71,'civicrm_contact',150,4), + (72,'civicrm_contact',150,5), + (68,'civicrm_contact',151,4), + (113,'civicrm_contact',154,5), + (95,'civicrm_contact',160,4), + (84,'civicrm_contact',162,4), + (85,'civicrm_contact',162,5), (54,'civicrm_contact',167,5), - (27,'civicrm_contact',169,5), - (104,'civicrm_contact',172,4), - (105,'civicrm_contact',173,4), - (3,'civicrm_contact',174,3), - (49,'civicrm_contact',177,4), - (50,'civicrm_contact',177,5), - (99,'civicrm_contact',178,4), - (20,'civicrm_contact',179,5), - (18,'civicrm_contact',180,4), - (19,'civicrm_contact',180,5), - (53,'civicrm_contact',181,5), - (26,'civicrm_contact',185,4), - (94,'civicrm_contact',187,4), - (42,'civicrm_contact',188,5), - (55,'civicrm_contact',189,4), - (56,'civicrm_contact',189,5), - (59,'civicrm_contact',192,4), - (60,'civicrm_contact',192,5), - (77,'civicrm_contact',194,5), - (52,'civicrm_contact',196,5), - (41,'civicrm_contact',199,4), - (12,'civicrm_contact',201,4), - (13,'civicrm_contact',201,5); + (27,'civicrm_contact',168,4), + (28,'civicrm_contact',168,5), + (88,'civicrm_contact',170,4), + (49,'civicrm_contact',171,4), + (50,'civicrm_contact',171,5), + (29,'civicrm_contact',172,4), + (116,'civicrm_contact',175,5), + (33,'civicrm_contact',178,5), + (103,'civicrm_contact',180,4), + (104,'civicrm_contact',180,5), + (74,'civicrm_contact',183,4), + (75,'civicrm_contact',183,5), + (57,'civicrm_contact',184,5), + (31,'civicrm_contact',185,5), + (21,'civicrm_contact',186,4), + (22,'civicrm_contact',186,5), + (25,'civicrm_contact',194,4), + (112,'civicrm_contact',196,4), + (30,'civicrm_contact',197,4), + (96,'civicrm_contact',198,4), + (97,'civicrm_contact',198,5), + (34,'civicrm_contact',201,4), + (35,'civicrm_contact',201,5); /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -3601,9 +3600,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_event` WRITE; /*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */; INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES - (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-04-07 17:00:00','2024-04-09 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), - (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-10-06 12:00:00','2023-10-06 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), - (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-05-07 07:00:00','2024-05-10 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-04-19 17:00:00','2024-04-21 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-10-18 12:00:00','2023-10-18 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-05-19 07:00:00','2024-05-22 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); @@ -3690,117 +3689,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_item` WRITE; /*!40000 ALTER TABLE `civicrm_financial_item` DISABLE KEYS */; INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES - (1,'2023-10-07 01:51:40','2013-10-07 01:51:39',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), - (2,'2023-10-07 01:51:40','2021-07-07 01:51:39',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), - (3,'2023-10-07 01:51:40','2017-09-11 12:51:39',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), - (4,'2023-10-07 01:51:40','2021-07-07 01:51:39',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), - (5,'2023-10-07 01:51:40','2021-07-07 01:51:39',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), - (6,'2023-10-07 01:51:40','2023-07-14 01:09:39',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), - (7,'2023-10-07 01:51:40','2023-10-05 01:51:39',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), - (8,'2023-10-07 01:51:40','2023-02-12 10:02:39',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), - (9,'2023-10-07 01:51:40','2022-11-07 01:51:39',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), - (10,'2023-10-07 01:51:40','2019-05-15 03:51:39',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), - (11,'2023-10-07 01:51:40','2023-10-05 21:51:39',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), - (12,'2023-10-07 01:51:40','2022-07-06 15:18:19',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), - (13,'2023-10-07 01:51:40','2023-07-07 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), - (14,'2023-10-07 01:51:40','2023-08-07 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), - (15,'2023-10-07 01:51:40','2022-07-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), - (16,'2023-10-07 01:51:40','2022-08-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), - (17,'2023-10-07 01:51:40','2022-09-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), - (18,'2023-10-07 01:51:40','2022-10-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), - (19,'2023-10-07 01:51:40','2022-11-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), - (20,'2023-10-07 01:51:40','2022-12-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), - (21,'2023-10-07 01:51:40','2023-01-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), - (22,'2023-10-07 01:51:40','2023-02-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), - (23,'2023-10-07 01:51:40','2023-03-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), - (24,'2023-10-07 01:51:40','2023-04-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), - (25,'2023-10-07 01:51:40','2023-05-07 01:51:39',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), - (26,'2023-10-07 01:51:40','2023-02-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), - (27,'2023-10-07 01:51:40','2023-03-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), - (28,'2023-10-07 01:51:40','2023-04-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), - (29,'2023-10-07 01:51:40','2023-05-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), - (30,'2023-10-07 01:51:40','2023-06-07 01:51:39',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), - (31,'2023-10-07 01:51:40','2023-09-07 01:51:39',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), - (32,'2023-10-07 01:51:40','2023-10-07 01:51:39',181,'General',100.00,'USD',2,1,'civicrm_line_item',32), - (33,'2023-10-07 01:51:40','2023-10-07 01:51:39',69,'General',100.00,'USD',2,1,'civicrm_line_item',33), - (34,'2023-10-07 01:51:40','2023-10-07 01:51:39',113,'General',100.00,'USD',2,1,'civicrm_line_item',34), - (35,'2023-10-07 01:51:40','2023-10-07 01:51:39',18,'General',100.00,'USD',2,1,'civicrm_line_item',35), - (36,'2023-10-07 01:51:40','2023-10-07 01:51:39',99,'General',100.00,'USD',2,1,'civicrm_line_item',36), - (37,'2023-10-07 01:51:40','2023-10-07 01:51:39',128,'General',100.00,'USD',2,1,'civicrm_line_item',37), - (38,'2023-10-07 01:51:40','2023-10-07 01:51:39',163,'General',100.00,'USD',2,1,'civicrm_line_item',38), - (39,'2023-10-07 01:51:40','2023-10-07 01:51:39',141,'General',100.00,'USD',2,1,'civicrm_line_item',39), - (40,'2023-10-07 01:51:40','2023-10-07 01:51:39',172,'General',100.00,'USD',2,1,'civicrm_line_item',40), - (41,'2023-10-07 01:51:40','2023-10-07 01:51:39',156,'General',100.00,'USD',2,1,'civicrm_line_item',41), - (42,'2023-10-07 01:51:40','2023-10-07 01:51:39',93,'General',100.00,'USD',2,1,'civicrm_line_item',42), - (43,'2023-10-07 01:51:40','2023-10-07 01:51:39',81,'General',100.00,'USD',2,1,'civicrm_line_item',43), - (44,'2023-10-07 01:51:40','2023-10-07 01:51:39',36,'General',100.00,'USD',2,1,'civicrm_line_item',44), - (45,'2023-10-07 01:51:40','2023-10-07 01:51:39',131,'General',100.00,'USD',2,1,'civicrm_line_item',45), - (46,'2023-10-07 01:51:40','2023-10-07 01:51:39',193,'General',100.00,'USD',2,1,'civicrm_line_item',46), - (47,'2023-10-07 01:51:40','2023-10-07 01:51:39',143,'Student',50.00,'USD',2,1,'civicrm_line_item',47), - (48,'2023-10-07 01:51:41','2023-10-07 01:51:39',140,'Student',50.00,'USD',2,1,'civicrm_line_item',48), - (49,'2023-10-07 01:51:41','2023-10-07 01:51:39',119,'Student',50.00,'USD',2,1,'civicrm_line_item',49), - (50,'2023-10-07 01:51:41','2023-10-07 01:51:39',32,'Student',50.00,'USD',2,1,'civicrm_line_item',50), - (51,'2023-10-07 01:51:41','2023-10-07 01:51:39',157,'Student',50.00,'USD',2,1,'civicrm_line_item',51), - (52,'2023-10-07 01:51:41','2023-10-07 01:51:39',115,'Student',50.00,'USD',2,1,'civicrm_line_item',52), - (53,'2023-10-07 01:51:41','2023-10-07 01:51:39',55,'Student',50.00,'USD',2,1,'civicrm_line_item',53), - (54,'2023-10-07 01:51:41','2023-10-07 01:51:39',126,'Student',50.00,'USD',2,1,'civicrm_line_item',54), - (55,'2023-10-07 01:51:41','2023-10-07 01:51:39',125,'Student',50.00,'USD',2,1,'civicrm_line_item',55), - (56,'2023-10-07 01:51:41','2023-10-07 01:51:39',122,'Student',50.00,'USD',2,1,'civicrm_line_item',56), - (57,'2023-10-07 01:51:41','2023-10-07 01:51:39',15,'Student',50.00,'USD',2,1,'civicrm_line_item',57), - (58,'2023-10-07 01:51:41','2023-10-07 01:51:39',158,'Student',50.00,'USD',2,1,'civicrm_line_item',58), - (59,'2023-10-07 01:51:41','2023-10-07 01:51:39',30,'Student',50.00,'USD',2,1,'civicrm_line_item',59), - (60,'2023-10-07 01:51:41','2023-10-07 01:51:39',23,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), - (61,'2023-10-07 01:51:41','2023-10-07 01:51:39',37,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), - (62,'2023-10-07 01:51:41','2023-10-07 01:51:40',85,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97), - (63,'2023-10-07 01:51:41','2023-10-07 01:51:40',111,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), - (64,'2023-10-07 01:51:41','2023-10-07 01:51:40',160,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), - (65,'2023-10-07 01:51:41','2023-10-07 01:51:40',29,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), - (66,'2023-10-07 01:51:41','2023-10-07 01:51:40',152,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), - (67,'2023-10-07 01:51:41','2023-10-07 01:51:40',102,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), - (68,'2023-10-07 01:51:41','2023-10-07 01:51:40',64,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), - (69,'2023-10-07 01:51:41','2023-10-07 01:51:40',81,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), - (70,'2023-10-07 01:51:41','2023-10-07 01:51:40',168,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), - (71,'2023-10-07 01:51:41','2023-10-07 01:51:40',93,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), - (72,'2023-10-07 01:51:41','2023-10-07 01:51:40',89,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), - (73,'2023-10-07 01:51:41','2023-10-07 01:51:40',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), - (74,'2023-10-07 01:51:41','2023-10-07 01:51:40',114,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), - (75,'2023-10-07 01:51:41','2023-10-07 01:51:40',95,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), - (76,'2023-10-07 01:51:41','2023-10-07 01:51:40',14,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), - (77,'2023-10-07 01:51:41','2023-10-07 01:51:40',175,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), - (78,'2023-10-07 01:51:41','2023-10-07 01:51:40',37,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), - (79,'2023-10-07 01:51:41','2023-10-07 01:51:40',32,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), - (80,'2023-10-07 01:51:41','2023-10-07 01:51:40',134,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), - (81,'2023-10-07 01:51:41','2023-10-07 01:51:40',172,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), - (82,'2023-10-07 01:51:41','2023-10-07 01:51:40',54,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), - (83,'2023-10-07 01:51:41','2023-10-07 01:51:40',1,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), - (84,'2023-10-07 01:51:41','2023-10-07 01:51:40',61,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), - (85,'2023-10-07 01:51:41','2023-10-07 01:51:40',126,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), - (86,'2023-10-07 01:51:41','2023-10-07 01:51:40',150,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), - (87,'2023-10-07 01:51:41','2023-10-07 01:51:40',63,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), - (88,'2023-10-07 01:51:41','2023-10-07 01:51:40',50,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), - (89,'2023-10-07 01:51:41','2023-10-07 01:51:40',122,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), - (90,'2023-10-07 01:51:41','2023-10-07 01:51:40',112,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), - (91,'2023-10-07 01:51:41','2023-10-07 01:51:40',181,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), - (92,'2023-10-07 01:51:41','2023-10-07 01:51:40',169,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), - (93,'2023-10-07 01:51:41','2023-10-07 01:51:40',190,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), - (94,'2023-10-07 01:51:41','2023-10-07 01:51:40',78,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), - (95,'2023-10-07 01:51:41','2023-10-07 01:51:40',17,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), - (96,'2023-10-07 01:51:41','2023-10-07 01:51:40',188,'Single',50.00,'USD',4,1,'civicrm_line_item',81), - (97,'2023-10-07 01:51:41','2023-10-07 01:51:40',101,'Single',50.00,'USD',4,1,'civicrm_line_item',82), - (98,'2023-10-07 01:51:41','2023-10-07 01:51:40',53,'Single',50.00,'USD',4,1,'civicrm_line_item',83), - (99,'2023-10-07 01:51:41','2023-10-07 01:51:40',118,'Single',50.00,'USD',4,1,'civicrm_line_item',84), - (100,'2023-10-07 01:51:41','2023-10-07 01:51:40',13,'Single',50.00,'USD',4,1,'civicrm_line_item',85), - (101,'2023-10-07 01:51:41','2023-10-07 01:51:40',79,'Single',50.00,'USD',4,1,'civicrm_line_item',86), - (102,'2023-10-07 01:51:41','2023-10-07 01:51:40',100,'Single',50.00,'USD',4,1,'civicrm_line_item',87), - (103,'2023-10-07 01:51:41','2023-10-07 01:51:40',121,'Single',50.00,'USD',4,1,'civicrm_line_item',88), - (104,'2023-10-07 01:51:41','2023-10-07 01:51:40',141,'Single',50.00,'USD',4,1,'civicrm_line_item',89), - (105,'2023-10-07 01:51:41','2023-10-07 01:51:40',165,'Single',50.00,'USD',4,1,'civicrm_line_item',90), - (106,'2023-10-07 01:51:41','2023-10-07 01:51:40',69,'Single',50.00,'USD',4,1,'civicrm_line_item',91), - (107,'2023-10-07 01:51:41','2023-10-07 01:51:40',10,'Single',50.00,'USD',4,1,'civicrm_line_item',92), - (108,'2023-10-07 01:51:41','2023-10-07 01:51:40',7,'Single',50.00,'USD',4,1,'civicrm_line_item',93), - (109,'2023-10-07 01:51:41','2023-10-07 01:51:40',200,'Single',50.00,'USD',4,1,'civicrm_line_item',94), - (110,'2023-10-07 01:51:41','2023-10-07 01:51:40',147,'Single',50.00,'USD',4,1,'civicrm_line_item',95), - (111,'2023-10-07 01:51:41','2023-10-07 01:51:40',27,'Single',50.00,'USD',4,1,'civicrm_line_item',96); + (1,'2023-10-19 21:22:30','2013-10-19 14:22:30',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), + (2,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), + (3,'2023-10-19 21:22:30','2017-09-24 01:22:30',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), + (4,'2023-10-19 21:22:30','2021-07-19 14:22:30',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), + (5,'2023-10-19 21:22:30','2021-07-19 14:22:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), + (6,'2023-10-19 21:22:30','2023-07-26 13:40:30',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), + (7,'2023-10-19 21:22:30','2023-10-17 14:22:30',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), + (8,'2023-10-19 21:22:30','2023-02-24 22:33:30',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), + (9,'2023-10-19 21:22:30','2022-11-19 14:22:30',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), + (10,'2023-10-19 21:22:30','2019-05-27 16:22:30',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), + (11,'2023-10-19 21:22:30','2023-10-18 10:22:30',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), + (12,'2023-10-19 21:22:30','2022-07-19 03:49:10',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), + (13,'2023-10-19 21:22:30','2023-07-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), + (14,'2023-10-19 21:22:30','2023-08-19 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), + (15,'2023-10-19 21:22:30','2022-07-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), + (16,'2023-10-19 21:22:30','2022-08-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), + (17,'2023-10-19 21:22:30','2022-09-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), + (18,'2023-10-19 21:22:30','2022-10-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), + (19,'2023-10-19 21:22:30','2022-11-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), + (20,'2023-10-19 21:22:30','2022-12-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), + (21,'2023-10-19 21:22:30','2023-01-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), + (22,'2023-10-19 21:22:30','2023-02-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), + (23,'2023-10-19 21:22:30','2023-03-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), + (24,'2023-10-19 21:22:30','2023-04-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), + (25,'2023-10-19 21:22:30','2023-05-19 14:22:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), + (26,'2023-10-19 21:22:30','2023-02-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), + (27,'2023-10-19 21:22:30','2023-03-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), + (28,'2023-10-19 21:22:30','2023-04-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), + (29,'2023-10-19 21:22:30','2023-05-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), + (30,'2023-10-19 21:22:30','2023-06-19 14:22:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), + (31,'2023-10-19 21:22:30','2023-09-19 14:22:30',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), + (32,'2023-10-19 21:22:30','2023-10-19 14:22:30',5,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), + (33,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'General',100.00,'USD',2,1,'civicrm_line_item',38), + (34,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'General',100.00,'USD',2,1,'civicrm_line_item',41), + (35,'2023-10-19 21:22:30','2023-10-19 14:22:30',28,'General',100.00,'USD',2,1,'civicrm_line_item',43), + (36,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'General',100.00,'USD',2,1,'civicrm_line_item',34), + (37,'2023-10-19 21:22:30','2023-10-19 14:22:30',39,'Student',50.00,'USD',2,1,'civicrm_line_item',52), + (38,'2023-10-19 21:22:30','2023-10-19 14:22:30',47,'Student',50.00,'USD',2,1,'civicrm_line_item',47), + (39,'2023-10-19 21:22:30','2023-10-19 14:22:30',48,'General',100.00,'USD',2,1,'civicrm_line_item',36), + (40,'2023-10-19 21:22:30','2023-10-19 14:22:30',49,'Student',50.00,'USD',2,1,'civicrm_line_item',53), + (41,'2023-10-19 21:22:30','2023-10-19 14:22:30',54,'General',100.00,'USD',2,1,'civicrm_line_item',39), + (42,'2023-10-19 21:22:30','2023-10-19 14:22:30',55,'General',100.00,'USD',2,1,'civicrm_line_item',32), + (43,'2023-10-19 21:22:30','2023-10-19 14:22:30',66,'Student',50.00,'USD',2,1,'civicrm_line_item',59), + (44,'2023-10-19 21:22:30','2023-10-19 14:22:30',78,'Student',50.00,'USD',2,1,'civicrm_line_item',58), + (45,'2023-10-19 21:22:30','2023-10-19 14:22:30',86,'General',100.00,'USD',2,1,'civicrm_line_item',45), + (46,'2023-10-19 21:22:30','2023-10-19 14:22:30',87,'General',100.00,'USD',2,1,'civicrm_line_item',35), + (47,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Student',50.00,'USD',2,1,'civicrm_line_item',54), + (48,'2023-10-19 21:22:30','2023-10-19 14:22:30',93,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), + (49,'2023-10-19 21:22:30','2023-10-19 14:22:30',100,'Student',50.00,'USD',2,1,'civicrm_line_item',57), + (50,'2023-10-19 21:22:30','2023-10-19 14:22:30',106,'General',100.00,'USD',2,1,'civicrm_line_item',40), + (51,'2023-10-19 21:22:30','2023-10-19 14:22:30',113,'Student',50.00,'USD',2,1,'civicrm_line_item',49), + (52,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'General',100.00,'USD',2,1,'civicrm_line_item',44), + (53,'2023-10-19 21:22:30','2023-10-19 14:22:30',126,'Student',50.00,'USD',2,1,'civicrm_line_item',48), + (54,'2023-10-19 21:22:30','2023-10-19 14:22:30',136,'Student',50.00,'USD',2,1,'civicrm_line_item',55), + (55,'2023-10-19 21:22:30','2023-10-19 14:22:30',149,'General',100.00,'USD',2,1,'civicrm_line_item',46), + (56,'2023-10-19 21:22:30','2023-10-19 14:22:30',164,'Student',50.00,'USD',2,1,'civicrm_line_item',51), + (57,'2023-10-19 21:22:30','2023-10-19 14:22:30',168,'General',100.00,'USD',2,1,'civicrm_line_item',33), + (58,'2023-10-19 21:22:30','2023-10-19 14:22:30',169,'Student',50.00,'USD',2,1,'civicrm_line_item',50), + (59,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'General',100.00,'USD',2,1,'civicrm_line_item',42), + (60,'2023-10-19 21:22:30','2023-10-19 14:22:30',180,'General',100.00,'USD',2,1,'civicrm_line_item',37), + (61,'2023-10-19 21:22:30','2023-10-19 14:22:30',187,'Student',50.00,'USD',2,1,'civicrm_line_item',56), + (62,'2023-10-19 21:22:30','2023-10-19 14:22:30',92,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97), + (63,'2023-10-19 21:22:30','2023-10-19 14:22:30',36,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), + (64,'2023-10-19 21:22:30','2023-10-19 14:22:30',41,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), + (65,'2023-10-19 21:22:30','2023-10-19 14:22:30',195,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), + (66,'2023-10-19 21:22:30','2023-10-19 14:22:30',30,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), + (67,'2023-10-19 21:22:30','2023-10-19 14:22:30',179,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), + (68,'2023-10-19 21:22:30','2023-10-19 14:22:30',144,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), + (69,'2023-10-19 21:22:30','2023-10-19 14:22:30',45,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), + (70,'2023-10-19 21:22:30','2023-10-19 14:22:30',101,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), + (71,'2023-10-19 21:22:30','2023-10-19 14:22:30',73,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), + (72,'2023-10-19 21:22:30','2023-10-19 14:22:30',97,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), + (73,'2023-10-19 21:22:30','2023-10-19 14:22:30',17,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), + (74,'2023-10-19 21:22:30','2023-10-19 14:22:30',84,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), + (75,'2023-10-19 21:22:30','2023-10-19 14:22:30',156,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), + (76,'2023-10-19 21:22:30','2023-10-19 14:22:30',96,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), + (77,'2023-10-19 21:22:30','2023-10-19 14:22:30',172,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), + (78,'2023-10-19 21:22:30','2023-10-19 14:22:30',160,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), + (79,'2023-10-19 21:22:30','2023-10-19 14:22:30',40,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), + (80,'2023-10-19 21:22:30','2023-10-19 14:22:30',23,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), + (81,'2023-10-19 21:22:30','2023-10-19 14:22:30',192,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), + (82,'2023-10-19 21:22:30','2023-10-19 14:22:30',16,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), + (83,'2023-10-19 21:22:30','2023-10-19 14:22:30',189,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), + (84,'2023-10-19 21:22:30','2023-10-19 14:22:30',80,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), + (85,'2023-10-19 21:22:30','2023-10-19 14:22:30',196,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), + (86,'2023-10-19 21:22:30','2023-10-19 14:22:30',182,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), + (87,'2023-10-19 21:22:30','2023-10-19 14:22:30',158,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), + (88,'2023-10-19 21:22:30','2023-10-19 14:22:30',76,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), + (89,'2023-10-19 21:22:30','2023-10-19 14:22:30',6,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), + (90,'2023-10-19 21:22:30','2023-10-19 14:22:30',127,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), + (91,'2023-10-19 21:22:30','2023-10-19 14:22:30',117,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), + (92,'2023-10-19 21:22:30','2023-10-19 14:22:30',163,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), + (93,'2023-10-19 21:22:30','2023-10-19 14:22:30',57,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), + (94,'2023-10-19 21:22:30','2023-10-19 14:22:30',69,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), + (95,'2023-10-19 21:22:30','2023-10-19 14:22:30',88,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), + (96,'2023-10-19 21:22:30','2023-10-19 14:22:30',10,'Single',50.00,'USD',4,1,'civicrm_line_item',81), + (97,'2023-10-19 21:22:30','2023-10-19 14:22:30',77,'Single',50.00,'USD',4,1,'civicrm_line_item',82), + (98,'2023-10-19 21:22:30','2023-10-19 14:22:30',94,'Single',50.00,'USD',4,1,'civicrm_line_item',83), + (99,'2023-10-19 21:22:30','2023-10-19 14:22:30',13,'Single',50.00,'USD',4,1,'civicrm_line_item',84), + (100,'2023-10-19 21:22:30','2023-10-19 14:22:30',135,'Single',50.00,'USD',4,1,'civicrm_line_item',85), + (101,'2023-10-19 21:22:30','2023-10-19 14:22:30',132,'Single',50.00,'USD',4,1,'civicrm_line_item',86), + (102,'2023-10-19 21:22:30','2023-10-19 14:22:30',123,'Single',50.00,'USD',4,1,'civicrm_line_item',87), + (103,'2023-10-19 21:22:30','2023-10-19 14:22:30',178,'Single',50.00,'USD',4,1,'civicrm_line_item',88), + (104,'2023-10-19 21:22:30','2023-10-19 14:22:30',8,'Single',50.00,'USD',4,1,'civicrm_line_item',89), + (105,'2023-10-19 21:22:30','2023-10-19 14:22:30',19,'Single',50.00,'USD',4,1,'civicrm_line_item',90), + (106,'2023-10-19 21:22:30','2023-10-19 14:22:30',197,'Single',50.00,'USD',4,1,'civicrm_line_item',91), + (107,'2023-10-19 21:22:30','2023-10-19 14:22:30',159,'Single',50.00,'USD',4,1,'civicrm_line_item',92), + (108,'2023-10-19 21:22:30','2023-10-19 14:22:30',154,'Single',50.00,'USD',4,1,'civicrm_line_item',93), + (109,'2023-10-19 21:22:30','2023-10-19 14:22:30',14,'Single',50.00,'USD',4,1,'civicrm_line_item',94), + (110,'2023-10-19 21:22:30','2023-10-19 14:22:30',184,'Single',50.00,'USD',4,1,'civicrm_line_item',95), + (111,'2023-10-19 21:22:30','2023-10-19 14:22:30',175,'Single',50.00,'USD',4,1,'civicrm_line_item',96); /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */; UNLOCK TABLES; @@ -3811,117 +3810,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_trxn` WRITE; /*!40000 ALTER TABLE `civicrm_financial_trxn` DISABLE KEYS */; INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`, `order_reference`) VALUES - (1,NULL,6,'2013-10-07 01:51:39',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), - (2,NULL,6,'2021-07-07 01:51:39',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (3,NULL,6,'2017-09-11 12:51:39',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), - (4,NULL,6,'2021-07-07 01:51:39',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), - (5,NULL,6,'2021-07-07 01:51:39',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (6,NULL,6,'2023-07-14 01:09:39',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), - (7,NULL,6,'2023-10-05 01:51:39',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), - (8,NULL,6,'2023-02-12 10:02:39',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (9,NULL,6,'2022-11-07 01:51:39',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (10,NULL,6,'2019-05-15 03:51:39',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (11,NULL,6,'2023-10-05 21:51:39',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (12,NULL,6,'2022-07-06 15:18:19',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (13,NULL,6,'2023-07-07 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (14,NULL,6,'2023-08-07 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (15,NULL,6,'2022-07-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (16,NULL,6,'2022-08-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (17,NULL,6,'2022-09-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (18,NULL,6,'2022-10-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (19,NULL,6,'2022-11-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (20,NULL,6,'2022-12-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (21,NULL,6,'2023-01-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (22,NULL,6,'2023-02-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (23,NULL,6,'2023-03-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (24,NULL,6,'2023-04-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (25,NULL,6,'2023-05-07 01:51:39',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (26,NULL,6,'2023-02-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (27,NULL,6,'2023-03-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (28,NULL,6,'2023-04-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (29,NULL,6,'2023-05-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (30,NULL,6,'2023-06-07 01:51:39',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (31,NULL,6,'2023-09-07 01:51:39',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (32,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'199fe91a3a34c8ce',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (33,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'b9a6747fd6568fc2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (34,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'39c163eb3d4be45f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (35,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'500ccd7fcc2abbba',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (36,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'182b1f7585ecd170',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (37,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'f011e469b75a2a36',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (38,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'da38a9b7b64f40ca',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (39,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'eb11e97806d830cb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (40,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'5192d580921731bf',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (41,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'2950723f11f5e239',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (42,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'b7b728e2eaf732e1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (43,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'94e3e06a9e9b53c1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (44,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'fb0b2a2539f57eb6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (45,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'0eaed8d79ce1b8e2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (46,NULL,6,'2023-10-07 01:51:39',100.00,NULL,NULL,'USD',1,'377748d4cf02df93',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (47,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'92a30dc12bc6f89f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (48,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'82e83517499bed14',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (49,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'db59f4a2b5c5e910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (50,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'f4a649ade54561d2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (51,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'247f664cf3df1315',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (52,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'335863057117965b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (53,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'b6176b7b65ed72f1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (54,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'9a4fc74545d39864',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (55,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'05a06f6a774b5ff6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (56,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'53b4c84f1f6d87f4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (57,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'7ba0d6192288fd47',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (58,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'4dd4ba301641ab44',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (59,NULL,6,'2023-10-07 01:51:39',50.00,NULL,NULL,'USD',1,'ce228497888c2378',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (60,NULL,6,'2023-10-07 01:51:39',1200.00,NULL,NULL,'USD',1,'b237ce5365d90585',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (61,NULL,6,'2023-10-07 01:51:39',1200.00,NULL,NULL,'USD',1,'6600cd795ed03a60',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (62,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'692f41d144ba99b2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (63,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'27132cb320864779',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (64,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'1b101efdd36b05cf',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (65,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'0148e195bca51d81',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (66,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'ccb8e93eff3029fa',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (67,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'0840f3d87c6e85fb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (68,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'3df236b8a47b5bb9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (69,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'faa306e7256fce34',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (70,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'a7ff24e77623ff66',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (71,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'66e129a8d6e297fa',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (72,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'3e52e256b26e001d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (73,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'58ce3d135fec464e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (74,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'d0430a4a2d99e47f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (75,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'45bb6ea0781be9f0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (76,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'2bee5ffd2592ca3d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (77,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'609e9f6ac922d912',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (78,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'5601aea891e87f0d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (79,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'165967a21ea2b659',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (80,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'e9270c01cb7e7d87',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (81,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'7f1e20b2b28f8226',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (82,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'ed1ca23c1c2945c3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (83,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'4959fbae7c7cc84c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (84,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'89e19b42e174eb80',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (85,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'60f18e18ad36e0a8',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (86,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'7ab5e66da17e8d68',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (87,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'0be1bc2f90a806b7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (88,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'7ed9ae13f33e76df',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (89,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'fe47d7e306522352',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (90,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'374e2f2ed959566e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (91,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'b0f27fe74b6b4a8a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (92,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'857dc2777c1a660c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (93,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'d5dbc6b4bd2fac95',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (94,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'043190c33aa17fd2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (95,NULL,6,'2023-10-07 01:51:40',800.00,NULL,NULL,'USD',1,'42a7294b9baf02d3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (96,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'8e6e4153b0abab95',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (97,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'f5b11319837ef1e6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (98,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'e532775a80589dd2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (99,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'7d4564e1bdd09791',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (100,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'7b7e2bdd408bae45',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (101,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'c5ee4eb0b3d0c901',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (102,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'69be08504eee5355',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (103,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'03a4f5fe114a9c59',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (104,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'b0ec3e0cb2cb6aee',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (105,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'629d63496b32ec37',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (106,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'6884516bd1244063',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (107,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'a94fec7ebdce0620',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (108,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'aba6ff5d44f34e7f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (109,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'e6502ad537f88d38',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (110,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'11002b1a386b49ad',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (111,NULL,6,'2023-10-07 01:51:40',50.00,NULL,NULL,'USD',1,'4132024b570ff06c',NULL,1,NULL,1,NULL,NULL,NULL,NULL); + (1,NULL,6,'2013-10-19 14:22:30',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), + (2,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (3,NULL,6,'2017-09-24 01:22:30',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), + (4,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), + (5,NULL,6,'2021-07-19 14:22:30',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (6,NULL,6,'2023-07-26 13:40:30',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), + (7,NULL,6,'2023-10-17 14:22:30',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), + (8,NULL,6,'2023-02-24 22:33:30',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (9,NULL,6,'2022-11-19 14:22:30',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (10,NULL,6,'2019-05-27 16:22:30',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (11,NULL,6,'2023-10-18 10:22:30',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (12,NULL,6,'2022-07-19 03:49:10',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (13,NULL,6,'2023-07-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (14,NULL,6,'2023-08-19 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (15,NULL,6,'2022-07-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (16,NULL,6,'2022-08-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (17,NULL,6,'2022-09-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (18,NULL,6,'2022-10-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (19,NULL,6,'2022-11-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (20,NULL,6,'2022-12-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (21,NULL,6,'2023-01-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (22,NULL,6,'2023-02-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (23,NULL,6,'2023-03-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (24,NULL,6,'2023-04-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (25,NULL,6,'2023-05-19 14:22:30',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (26,NULL,6,'2023-02-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (27,NULL,6,'2023-03-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (28,NULL,6,'2023-04-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (29,NULL,6,'2023-05-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (30,NULL,6,'2023-06-19 14:22:30',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (31,NULL,6,'2023-09-19 14:22:30',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (32,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'ffed5868e9951a95',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (33,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e38f6ec37b9fabb3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (34,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'386a76c90a983717',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (35,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'6f302a92a8d039f4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (36,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c7f53644ae2a7abd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (37,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'8e1a4f823c309e35',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (38,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'62904aaad7687d16',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (39,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'9e43d605091634b7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (40,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9183e73af132fbd1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (41,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'f739f79d40e7bd2d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (42,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'c908bcfa0cd5be20',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (43,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'32f851d09a3775f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (44,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'aa13673d8ef85a65',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (45,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'fd4792bd3a50da87',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (46,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'df65e9305cdef133',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (47,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'e7836a1040fc6647',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (48,NULL,6,'2023-10-19 14:22:30',1200.00,NULL,NULL,'USD',1,'fe44a2c192ab18be',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (49,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ef096073ba84bc0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (50,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'0937a86d9856d20f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (51,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'0e4d2cc74726c33e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (52,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'184c1625a0ab7dc0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (53,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'58c722d9ea8f60e4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (54,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'dc8c98604902da07',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (55,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'2ae34338151a8c31',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (56,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'126eb1cbca88ac46',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (57,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'4d24ed19cb02ed0c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (58,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'46fff670fdd88c83',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (59,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'1d446a98d22519c5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (60,NULL,6,'2023-10-19 14:22:30',100.00,NULL,NULL,'USD',1,'e6d81f09a41d0f35',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (61,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9668e4798e266def',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (62,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'548746b3839860da',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (63,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'25a9f0b5ed29df0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (64,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ed07590fe067cb07',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (65,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f82bc2b76969d315',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (66,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'2169580b75789814',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (67,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'504a9107e1c840c3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (68,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'9dc4f36b0500ac35',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (69,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'96af8634550c39ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (70,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'082640d22f20fcf6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (71,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'a720e6fdf9eea694',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (72,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'c8d10d10dd2d66bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (73,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'413cb05032f4ef86',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (74,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b056ac8b83186f79',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (75,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'bd1cbf336bcdc529',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (76,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'188d57636c31422a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (77,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'44c3f7faa315a724',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (78,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'0ab78d1432305653',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (79,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3eb2384d79bdaa10',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (80,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'d39bcc7bf0e51cab',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (81,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4feacc260963ba72',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (82,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'95a80169077a3dea',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (83,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b7318d85efca799b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (84,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6ba712ac9576b7b6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (85,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a96ed671bbd3ea09',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (86,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'cca171d375cdc8f6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (87,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'146f0c5184fd503c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (88,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'732d30e0d1d41ca5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (89,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'b28927dfa09ab7b4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (90,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'3de19df12cf6886c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (91,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'7a53e74599f788ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (92,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'4bc019d5fcebe204',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (93,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'a2542bee3dc332de',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (94,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'6cc8dd5a5b8e8913',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (95,NULL,6,'2023-10-19 14:22:30',800.00,NULL,NULL,'USD',1,'24cc9f9c83795713',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (96,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7245aac602b546bb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (97,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ac8995759a7a3270',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (98,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'472bf4e471ef125f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (99,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'ff5b5537da44c970',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (100,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'648327e05cdee0ac',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (101,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'b7c48e40295cdc9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (102,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'f78524f14cda217c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (103,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7e35b99bd91e7b4c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (104,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'52b5a6a76b142227',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (105,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'755c91f4df5025f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (106,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'60f19d9651d20536',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (107,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'6def5a3cac235219',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (108,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fe477a4cedeef016',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (109,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'fad72a1cf34cf68e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (110,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'656d8e5060576829',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (111,NULL,6,'2023-10-19 14:22:30',50.00,NULL,NULL,'USD',1,'7749b8e4f077e05c',NULL,1,NULL,1,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -3960,89 +3959,89 @@ UNLOCK TABLES; LOCK TABLES `civicrm_group_contact` WRITE; /*!40000 ALTER TABLE `civicrm_group_contact` DISABLE KEYS */; INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES - (1,2,26,'Added',NULL,NULL), - (2,2,35,'Added',NULL,NULL), - (3,2,201,'Added',NULL,NULL), - (4,2,113,'Added',NULL,NULL), - (5,2,153,'Added',NULL,NULL), - (6,2,81,'Added',NULL,NULL), - (7,2,61,'Added',NULL,NULL), - (8,2,5,'Added',NULL,NULL), - (9,2,98,'Added',NULL,NULL), - (10,2,78,'Added',NULL,NULL), - (11,2,180,'Added',NULL,NULL), - (12,2,182,'Added',NULL,NULL), - (13,2,179,'Added',NULL,NULL), - (14,2,109,'Added',NULL,NULL), + (1,2,31,'Added',NULL,NULL), + (2,2,25,'Added',NULL,NULL), + (3,2,35,'Added',NULL,NULL), + (4,2,142,'Added',NULL,NULL), + (5,2,5,'Added',NULL,NULL), + (6,2,54,'Added',NULL,NULL), + (7,2,4,'Added',NULL,NULL), + (8,2,82,'Added',NULL,NULL), + (9,2,9,'Added',NULL,NULL), + (10,2,143,'Added',NULL,NULL), + (11,2,123,'Added',NULL,NULL), + (12,2,78,'Added',NULL,NULL), + (13,2,70,'Added',NULL,NULL), + (14,2,173,'Added',NULL,NULL), (15,2,83,'Added',NULL,NULL), - (16,2,125,'Added',NULL,NULL), - (17,2,33,'Added',NULL,NULL), - (18,2,90,'Added',NULL,NULL), - (19,2,72,'Added',NULL,NULL), - (20,2,129,'Added',NULL,NULL), - (21,2,185,'Added',NULL,NULL), - (22,2,44,'Added',NULL,NULL), - (23,2,169,'Added',NULL,NULL), - (24,2,96,'Added',NULL,NULL), - (25,2,114,'Added',NULL,NULL), - (26,2,110,'Added',NULL,NULL), - (27,2,160,'Added',NULL,NULL), - (28,2,95,'Added',NULL,NULL), - (29,2,106,'Added',NULL,NULL), - (30,2,100,'Added',NULL,NULL), - (31,2,20,'Added',NULL,NULL), - (32,2,155,'Added',NULL,NULL), - (33,2,94,'Added',NULL,NULL), - (34,2,197,'Added',NULL,NULL), - (35,2,55,'Added',NULL,NULL), - (36,2,104,'Added',NULL,NULL), - (37,2,142,'Added',NULL,NULL), - (38,2,97,'Added',NULL,NULL), - (39,2,120,'Added',NULL,NULL), - (40,2,105,'Added',NULL,NULL), - (41,2,43,'Added',NULL,NULL), - (42,2,70,'Added',NULL,NULL), - (43,2,119,'Added',NULL,NULL), - (44,2,16,'Added',NULL,NULL), - (45,2,47,'Added',NULL,NULL), - (46,2,15,'Added',NULL,NULL), - (47,2,199,'Added',NULL,NULL), - (48,2,165,'Added',NULL,NULL), - (49,2,188,'Added',NULL,NULL), - (50,2,146,'Added',NULL,NULL), - (51,2,2,'Added',NULL,NULL), - (52,2,91,'Added',NULL,NULL), - (53,2,54,'Added',NULL,NULL), - (54,2,30,'Added',NULL,NULL), - (55,2,164,'Added',NULL,NULL), - (56,2,170,'Added',NULL,NULL), - (57,2,138,'Added',NULL,NULL), - (58,2,156,'Added',NULL,NULL), - (59,2,177,'Added',NULL,NULL), - (60,2,7,'Added',NULL,NULL), - (61,3,143,'Added',NULL,NULL), - (62,3,122,'Added',NULL,NULL), - (63,3,196,'Added',NULL,NULL), - (64,3,198,'Added',NULL,NULL), - (65,3,181,'Added',NULL,NULL), - (66,3,102,'Added',NULL,NULL), + (16,2,72,'Added',NULL,NULL), + (17,2,186,'Added',NULL,NULL), + (18,2,127,'Added',NULL,NULL), + (19,2,101,'Added',NULL,NULL), + (20,2,30,'Added',NULL,NULL), + (21,2,89,'Added',NULL,NULL), + (22,2,187,'Added',NULL,NULL), + (23,2,194,'Added',NULL,NULL), + (24,2,136,'Added',NULL,NULL), + (25,2,115,'Added',NULL,NULL), + (26,2,129,'Added',NULL,NULL), + (27,2,168,'Added',NULL,NULL), + (28,2,157,'Added',NULL,NULL), + (29,2,172,'Added',NULL,NULL), + (30,2,117,'Added',NULL,NULL), + (31,2,197,'Added',NULL,NULL), + (32,2,98,'Added',NULL,NULL), + (33,2,185,'Added',NULL,NULL), + (34,2,132,'Added',NULL,NULL), + (35,2,94,'Added',NULL,NULL), + (36,2,11,'Added',NULL,NULL), + (37,2,178,'Added',NULL,NULL), + (38,2,144,'Added',NULL,NULL), + (39,2,201,'Added',NULL,NULL), + (40,2,87,'Added',NULL,NULL), + (41,2,128,'Added',NULL,NULL), + (42,2,8,'Added',NULL,NULL), + (43,2,33,'Added',NULL,NULL), + (44,2,42,'Added',NULL,NULL), + (45,2,80,'Added',NULL,NULL), + (46,2,153,'Added',NULL,NULL), + (47,2,120,'Added',NULL,NULL), + (48,2,169,'Added',NULL,NULL), + (49,2,130,'Added',NULL,NULL), + (50,2,28,'Added',NULL,NULL), + (51,2,93,'Added',NULL,NULL), + (52,2,17,'Added',NULL,NULL), + (53,2,38,'Added',NULL,NULL), + (54,2,174,'Added',NULL,NULL), + (55,2,81,'Added',NULL,NULL), + (56,2,113,'Added',NULL,NULL), + (57,2,71,'Added',NULL,NULL), + (58,2,56,'Added',NULL,NULL), + (59,2,171,'Added',NULL,NULL), + (60,2,97,'Added',NULL,NULL), + (61,3,29,'Added',NULL,NULL), + (62,3,138,'Added',NULL,NULL), + (63,3,145,'Added',NULL,NULL), + (64,3,166,'Added',NULL,NULL), + (65,3,107,'Added',NULL,NULL), + (66,3,105,'Added',NULL,NULL), (67,3,167,'Added',NULL,NULL), - (68,3,68,'Added',NULL,NULL), - (69,3,189,'Added',NULL,NULL), - (70,3,115,'Added',NULL,NULL), - (71,3,12,'Added',NULL,NULL), - (72,3,195,'Added',NULL,NULL), - (73,3,192,'Added',NULL,NULL), - (74,3,36,'Added',NULL,NULL), - (75,3,32,'Added',NULL,NULL), - (76,4,26,'Added',NULL,NULL), - (77,4,5,'Added',NULL,NULL), + (68,3,192,'Added',NULL,NULL), + (69,3,37,'Added',NULL,NULL), + (70,3,27,'Added',NULL,NULL), + (71,3,40,'Added',NULL,NULL), + (72,3,165,'Added',NULL,NULL), + (73,3,184,'Added',NULL,NULL), + (74,3,158,'Added',NULL,NULL), + (75,3,102,'Added',NULL,NULL), + (76,4,31,'Added',NULL,NULL), + (77,4,82,'Added',NULL,NULL), (78,4,83,'Added',NULL,NULL), - (79,4,44,'Added',NULL,NULL), - (80,4,106,'Added',NULL,NULL), - (81,4,104,'Added',NULL,NULL), - (82,4,119,'Added',NULL,NULL), - (83,4,146,'Added',NULL,NULL), + (79,4,187,'Added',NULL,NULL), + (80,4,172,'Added',NULL,NULL), + (81,4,11,'Added',NULL,NULL), + (82,4,33,'Added',NULL,NULL), + (83,4,28,'Added',NULL,NULL), (84,4,202,'Added',NULL,NULL); /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -4158,85 +4157,85 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio (30,'civicrm_contribution',30,30,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL), (31,'civicrm_contribution',31,31,1,'Contribution Amount',1.00,5.00,5.00,0,1,1,0.00,0.00,NULL), (32,'civicrm_membership',1,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (33,'civicrm_membership',3,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (34,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (35,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (36,'civicrm_membership',10,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (37,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (38,'civicrm_membership',15,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (39,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (40,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (41,'civicrm_membership',20,51,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (42,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (43,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (44,'civicrm_membership',25,56,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (45,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (46,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), - (47,'civicrm_membership',2,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (48,'civicrm_membership',4,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (49,'civicrm_membership',5,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (50,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (51,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (52,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (53,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (54,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (55,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (56,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (57,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (58,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (59,'civicrm_membership',30,61,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), - (60,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), - (61,'civicrm_membership',22,53,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), - (63,'civicrm_participant',3,72,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (64,'civicrm_participant',6,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (65,'civicrm_participant',9,97,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (66,'civicrm_participant',12,106,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (67,'civicrm_participant',15,75,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (68,'civicrm_participant',18,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (69,'civicrm_participant',21,76,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (70,'civicrm_participant',24,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (71,'civicrm_participant',25,100,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (72,'civicrm_participant',28,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (73,'civicrm_participant',31,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (74,'civicrm_participant',34,95,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (75,'civicrm_participant',37,91,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (76,'civicrm_participant',40,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (77,'civicrm_participant',43,105,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (78,'civicrm_participant',46,110,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (79,'civicrm_participant',49,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (80,'civicrm_participant',50,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), - (81,'civicrm_participant',1,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (82,'civicrm_participant',4,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (83,'civicrm_participant',7,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (84,'civicrm_participant',10,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (85,'civicrm_participant',13,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (86,'civicrm_participant',16,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (87,'civicrm_participant',19,87,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (88,'civicrm_participant',22,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (89,'civicrm_participant',26,98,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (90,'civicrm_participant',29,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (91,'civicrm_participant',32,79,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (92,'civicrm_participant',35,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (93,'civicrm_participant',38,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (94,'civicrm_participant',41,112,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (95,'civicrm_participant',44,99,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (96,'civicrm_participant',47,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), - (97,'civicrm_participant',2,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (98,'civicrm_participant',5,90,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (99,'civicrm_participant',8,102,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (100,'civicrm_participant',11,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (101,'civicrm_participant',14,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (102,'civicrm_participant',17,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (103,'civicrm_participant',20,78,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (104,'civicrm_participant',23,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (105,'civicrm_participant',27,104,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (106,'civicrm_participant',30,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (107,'civicrm_participant',33,84,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (108,'civicrm_participant',36,111,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (109,'civicrm_participant',39,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (110,'civicrm_participant',42,86,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (111,'civicrm_participant',45,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), - (112,'civicrm_participant',48,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL); + (33,'civicrm_membership',3,33,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (34,'civicrm_membership',7,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (35,'civicrm_membership',9,35,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (36,'civicrm_membership',13,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (37,'civicrm_membership',15,37,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (38,'civicrm_membership',17,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (39,'civicrm_membership',19,39,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (40,'civicrm_membership',20,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (41,'civicrm_membership',21,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (42,'civicrm_membership',23,42,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (43,'civicrm_membership',25,43,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (44,'civicrm_membership',27,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (45,'civicrm_membership',29,45,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (46,'civicrm_membership',30,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (47,'civicrm_membership',2,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (48,'civicrm_membership',4,48,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (49,'civicrm_membership',5,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (50,'civicrm_membership',6,50,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (51,'civicrm_membership',8,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (52,'civicrm_membership',10,52,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (53,'civicrm_membership',12,53,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (54,'civicrm_membership',14,54,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (55,'civicrm_membership',16,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (56,'civicrm_membership',18,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (57,'civicrm_membership',24,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (58,'civicrm_membership',26,58,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (59,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (60,'civicrm_membership',11,60,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), + (61,'civicrm_membership',22,61,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL), + (63,'civicrm_participant',3,100,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (64,'civicrm_participant',6,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (65,'civicrm_participant',9,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (66,'civicrm_participant',12,109,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (67,'civicrm_participant',15,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (68,'civicrm_participant',18,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (69,'civicrm_participant',21,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (70,'civicrm_participant',24,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (71,'civicrm_participant',25,106,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (72,'civicrm_participant',28,98,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (73,'civicrm_participant',31,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (74,'civicrm_participant',34,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (75,'civicrm_participant',37,92,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (76,'civicrm_participant',40,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (77,'civicrm_participant',43,101,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (78,'civicrm_participant',46,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (79,'civicrm_participant',49,78,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (80,'civicrm_participant',50,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (81,'civicrm_participant',1,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (82,'civicrm_participant',4,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (83,'civicrm_participant',7,86,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (84,'civicrm_participant',10,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (85,'civicrm_participant',13,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (86,'civicrm_participant',16,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (87,'civicrm_participant',19,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (88,'civicrm_participant',22,104,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (89,'civicrm_participant',26,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (90,'civicrm_participant',29,70,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (91,'civicrm_participant',32,112,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (92,'civicrm_participant',35,99,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (93,'civicrm_participant',38,96,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (94,'civicrm_participant',41,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (95,'civicrm_participant',44,107,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (96,'civicrm_participant',47,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (97,'civicrm_participant',2,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (98,'civicrm_participant',5,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (99,'civicrm_participant',8,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (100,'civicrm_participant',11,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (101,'civicrm_participant',14,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (102,'civicrm_participant',17,105,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (103,'civicrm_participant',20,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (104,'civicrm_participant',23,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (105,'civicrm_participant',27,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (106,'civicrm_participant',30,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (107,'civicrm_participant',33,88,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (108,'civicrm_participant',36,69,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (109,'civicrm_participant',39,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (110,'civicrm_participant',42,97,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (111,'civicrm_participant',45,87,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (112,'civicrm_participant',48,102,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL); /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */; UNLOCK TABLES; @@ -4247,9 +4246,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_loc_block` WRITE; /*!40000 ALTER TABLE `civicrm_loc_block` DISABLE KEYS */; INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES - (1,185,200,173,NULL,NULL,NULL,NULL,NULL), - (2,186,201,174,NULL,NULL,NULL,NULL,NULL), - (3,187,202,175,NULL,NULL,NULL,NULL,NULL); + (1,178,189,175,NULL,NULL,NULL,NULL,NULL), + (2,179,190,176,NULL,NULL,NULL,NULL,NULL), + (3,180,191,177,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */; UNLOCK TABLES; @@ -4275,7 +4274,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_log` WRITE; /*!40000 ALTER TABLE `civicrm_log` DISABLE KEYS */; INSERT INTO `civicrm_log` (`id`, `entity_table`, `entity_id`, `data`, `modified_id`, `modified_date`) VALUES - (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-10-07 01:51:34'); + (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-10-19 14:22:30'); /*!40000 ALTER TABLE `civicrm_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4695,36 +4694,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership` WRITE; /*!40000 ALTER TABLE `civicrm_membership` DISABLE KEYS */; INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES - (1,181,1,'2023-10-07','2023-10-07','2025-10-06','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (2,143,2,'2023-10-06','2023-10-06','2024-10-05','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (3,69,1,'2023-10-05','2023-10-05','2025-10-04','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (4,140,2,'2023-10-04','2023-10-04','2024-10-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (5,119,2,'2022-10-03','2022-10-03','2023-10-02','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL), - (6,32,2,'2023-10-02','2023-10-02','2024-10-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (7,113,1,'2023-10-01','2023-10-01','2025-09-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (8,157,2,'2023-09-30','2023-09-30','2024-09-29','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (9,18,1,'2023-09-29','2023-09-29','2025-09-28','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (10,99,1,'2021-07-27','2021-07-27','2023-07-26','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (11,23,3,'2023-09-27','2023-09-27',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (12,115,2,'2023-09-26','2023-09-26','2024-09-25','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (13,128,1,'2023-09-25','2023-09-25','2025-09-24','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (14,55,2,'2023-09-24','2023-09-24','2024-09-23','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (15,163,1,'2021-06-17','2021-06-17','2023-06-16','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (16,126,2,'2023-09-22','2023-09-22','2024-09-21','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (17,141,1,'2023-09-21','2023-09-21','2025-09-20','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (18,125,2,'2023-09-20','2023-09-20','2024-09-19','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (19,172,1,'2023-09-19','2023-09-19','2025-09-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (20,156,1,'2021-05-08','2021-05-08','2023-05-07','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (21,93,1,'2023-09-17','2023-09-17','2025-09-16','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (22,37,3,'2023-09-16','2023-09-16',NULL,'Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (23,81,1,'2023-09-15','2023-09-15','2025-09-14','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (24,122,2,'2023-09-14','2023-09-14','2024-09-13','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (25,36,1,'2021-03-29','2021-03-29','2023-03-28','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (26,15,2,'2023-09-12','2023-09-12','2024-09-11','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (27,131,1,'2023-09-11','2023-09-11','2025-09-10','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (28,158,2,'2023-09-10','2023-09-10','2024-09-09','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (29,193,1,'2023-09-09','2023-09-09','2025-09-08','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (30,30,2,'2022-09-08','2022-09-08','2023-09-07','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL); + (1,55,1,'2023-10-19','2023-10-19','2025-10-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (2,47,2,'2023-10-18','2023-10-18','2024-10-17','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (3,168,1,'2023-10-17','2023-10-17','2025-10-16','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (4,126,2,'2023-10-16','2023-10-16','2024-10-15','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (5,113,2,'2022-10-15','2022-10-15','2023-10-14','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (6,169,2,'2023-10-14','2023-10-14','2024-10-13','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (7,36,1,'2023-10-13','2023-10-13','2025-10-12','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (8,164,2,'2023-10-12','2023-10-12','2024-10-11','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (9,87,1,'2023-10-11','2023-10-11','2025-10-10','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (10,39,2,'2022-10-10','2022-10-10','2023-10-09','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (11,93,3,'2023-10-09','2023-10-09',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (12,49,2,'2023-10-08','2023-10-08','2024-10-07','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (13,48,1,'2023-10-07','2023-10-07','2025-10-06','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (14,92,2,'2023-10-06','2023-10-06','2024-10-05','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (15,180,1,'2021-06-29','2021-06-29','2023-06-28','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (16,136,2,'2023-10-04','2023-10-04','2024-10-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (17,8,1,'2023-10-03','2023-10-03','2025-10-02','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (18,187,2,'2023-10-02','2023-10-02','2024-10-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (19,54,1,'2023-10-01','2023-10-01','2025-09-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (20,106,1,'2021-05-20','2021-05-20','2023-05-19','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (21,17,1,'2023-09-29','2023-09-29','2025-09-28','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (22,5,3,'2023-09-28','2023-09-28',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (23,175,1,'2023-09-27','2023-09-27','2025-09-26','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (24,100,2,'2023-09-26','2023-09-26','2024-09-25','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (25,28,1,'2021-04-10','2021-04-10','2023-04-09','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (26,78,2,'2023-09-24','2023-09-24','2024-09-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (27,117,1,'2023-09-23','2023-09-23','2025-09-22','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (28,66,2,'2023-09-22','2023-09-22','2024-09-21','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (29,86,1,'2023-09-21','2023-09-21','2025-09-20','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (30,149,1,'2021-03-01','2021-03-01','2023-02-28','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL); /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */; UNLOCK TABLES; @@ -4746,36 +4745,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership_log` WRITE; /*!40000 ALTER TABLE `civicrm_membership_log` DISABLE KEYS */; INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES - (1,26,1,'2023-09-12','2024-09-11',15,'2023-10-07',2,NULL), - (2,9,1,'2023-09-29','2025-09-28',18,'2023-10-07',1,NULL), - (3,11,1,'2023-09-27',NULL,23,'2023-10-07',3,NULL), - (4,30,4,'2022-09-08','2023-09-07',30,'2023-10-07',2,NULL), - (5,6,1,'2023-10-02','2024-10-01',32,'2023-10-07',2,NULL), - (6,25,3,'2021-03-29','2023-03-28',36,'2023-10-07',1,NULL), - (7,22,1,'2023-09-16',NULL,37,'2023-10-07',3,NULL), - (8,14,1,'2023-09-24','2024-09-23',55,'2023-10-07',2,NULL), - (9,3,1,'2023-10-05','2025-10-04',69,'2023-10-07',1,NULL), - (10,23,1,'2023-09-15','2025-09-14',81,'2023-10-07',1,NULL), - (11,21,1,'2023-09-17','2025-09-16',93,'2023-10-07',1,NULL), - (12,10,3,'2021-07-27','2023-07-26',99,'2023-10-07',1,NULL), - (13,7,1,'2023-10-01','2025-09-30',113,'2023-10-07',1,NULL), - (14,12,1,'2023-09-26','2024-09-25',115,'2023-10-07',2,NULL), - (15,5,4,'2022-10-03','2023-10-02',119,'2023-10-07',2,NULL), - (16,24,1,'2023-09-14','2024-09-13',122,'2023-10-07',2,NULL), - (17,18,1,'2023-09-20','2024-09-19',125,'2023-10-07',2,NULL), - (18,16,1,'2023-09-22','2024-09-21',126,'2023-10-07',2,NULL), - (19,13,1,'2023-09-25','2025-09-24',128,'2023-10-07',1,NULL), - (20,27,1,'2023-09-11','2025-09-10',131,'2023-10-07',1,NULL), - (21,4,1,'2023-10-04','2024-10-03',140,'2023-10-07',2,NULL), - (22,17,1,'2023-09-21','2025-09-20',141,'2023-10-07',1,NULL), - (23,2,1,'2023-10-06','2024-10-05',143,'2023-10-07',2,NULL), - (24,20,3,'2021-05-08','2023-05-07',156,'2023-10-07',1,NULL), - (25,8,1,'2023-09-30','2024-09-29',157,'2023-10-07',2,NULL), - (26,28,1,'2023-09-10','2024-09-09',158,'2023-10-07',2,NULL), - (27,15,3,'2021-06-17','2023-06-16',163,'2023-10-07',1,NULL), - (28,19,1,'2023-09-19','2025-09-18',172,'2023-10-07',1,NULL), - (29,1,1,'2023-10-07','2025-10-06',181,'2023-10-07',1,NULL), - (30,29,1,'2023-09-09','2025-09-08',193,'2023-10-07',1,NULL); + (1,22,1,'2023-09-28',NULL,5,'2023-10-19',3,NULL), + (2,17,1,'2023-10-03','2025-10-02',8,'2023-10-19',1,NULL), + (3,21,1,'2023-09-29','2025-09-28',17,'2023-10-19',1,NULL), + (4,25,3,'2021-04-10','2023-04-09',28,'2023-10-19',1,NULL), + (5,7,1,'2023-10-13','2025-10-12',36,'2023-10-19',1,NULL), + (6,10,4,'2022-10-10','2023-10-09',39,'2023-10-19',2,NULL), + (7,2,1,'2023-10-18','2024-10-17',47,'2023-10-19',2,NULL), + (8,13,1,'2023-10-07','2025-10-06',48,'2023-10-19',1,NULL), + (9,12,1,'2023-10-08','2024-10-07',49,'2023-10-19',2,NULL), + (10,19,1,'2023-10-01','2025-09-30',54,'2023-10-19',1,NULL), + (11,1,1,'2023-10-19','2025-10-18',55,'2023-10-19',1,NULL), + (12,28,1,'2023-09-22','2024-09-21',66,'2023-10-19',2,NULL), + (13,26,1,'2023-09-24','2024-09-23',78,'2023-10-19',2,NULL), + (14,29,1,'2023-09-21','2025-09-20',86,'2023-10-19',1,NULL), + (15,9,1,'2023-10-11','2025-10-10',87,'2023-10-19',1,NULL), + (16,14,1,'2023-10-06','2024-10-05',92,'2023-10-19',2,NULL), + (17,11,1,'2023-10-09',NULL,93,'2023-10-19',3,NULL), + (18,24,1,'2023-09-26','2024-09-25',100,'2023-10-19',2,NULL), + (19,20,3,'2021-05-20','2023-05-19',106,'2023-10-19',1,NULL), + (20,5,4,'2022-10-15','2023-10-14',113,'2023-10-19',2,NULL), + (21,27,1,'2023-09-23','2025-09-22',117,'2023-10-19',1,NULL), + (22,4,1,'2023-10-16','2024-10-15',126,'2023-10-19',2,NULL), + (23,16,1,'2023-10-04','2024-10-03',136,'2023-10-19',2,NULL), + (24,30,3,'2021-03-01','2023-02-28',149,'2023-10-19',1,NULL), + (25,8,1,'2023-10-12','2024-10-11',164,'2023-10-19',2,NULL), + (26,3,1,'2023-10-17','2025-10-16',168,'2023-10-19',1,NULL), + (27,6,1,'2023-10-14','2024-10-13',169,'2023-10-19',2,NULL), + (28,23,1,'2023-09-27','2025-09-26',175,'2023-10-19',1,NULL), + (29,15,3,'2021-06-29','2023-06-28',180,'2023-10-19',1,NULL), + (30,18,1,'2023-10-02','2024-10-01',187,'2023-10-19',2,NULL); /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4786,36 +4785,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership_payment` WRITE; /*!40000 ALTER TABLE `civicrm_membership_payment` DISABLE KEYS */; INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES - (29,1,32), - (23,2,33), - (9,3,34), - (21,4,35), - (15,5,36), - (5,6,37), - (13,7,38), - (25,8,39), - (2,9,40), - (12,10,41), - (3,11,42), - (14,12,43), - (19,13,44), - (8,14,45), - (27,15,46), - (18,16,47), - (22,17,48), - (17,18,49), - (28,19,50), - (24,20,51), - (11,21,52), - (7,22,53), - (10,23,54), - (16,24,55), - (6,25,56), - (1,26,57), - (20,27,58), - (26,28,59), - (30,29,60), - (4,30,61); + (1,1,32), + (2,3,33), + (3,7,34), + (4,9,35), + (5,13,36), + (6,15,37), + (7,17,38), + (8,19,39), + (9,20,40), + (10,21,41), + (11,23,42), + (12,25,43), + (13,27,44), + (14,29,45), + (15,30,46), + (16,2,47), + (17,4,48), + (18,5,49), + (19,6,50), + (20,8,51), + (21,10,52), + (22,12,53), + (23,14,54), + (24,16,55), + (25,18,56), + (26,24,57), + (27,26,58), + (28,28,59), + (29,11,60), + (30,22,61); /*!40000 ALTER TABLE `civicrm_membership_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -4856,134 +4855,134 @@ UNLOCK TABLES; LOCK TABLES `civicrm_menu` WRITE; /*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */; INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES - (1,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'), - (2,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'), - (3,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (4,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (5,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (6,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'), - (7,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), - (8,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), - (9,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (10,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), - (11,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'), - (12,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), - (13,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (14,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'), - (15,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (16,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (17,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (18,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (19,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'), - (20,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (21,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (22,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (23,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (24,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (25,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (26,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (27,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'), - (28,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'), - (29,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'), - (30,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'), - (31,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'), - (32,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'), - (33,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'), - (34,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (35,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (36,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (37,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (38,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (39,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (40,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (41,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (42,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (43,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (44,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (45,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (46,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (47,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (48,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (49,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (50,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (51,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (52,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (53,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (54,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (55,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (56,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (57,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'), - (58,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (59,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (60,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (61,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (62,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (63,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (64,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (65,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (66,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (67,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (68,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), - (69,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), - (70,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), - (71,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'), - (72,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), - (73,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'), - (74,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), - (75,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (76,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (77,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (78,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (79,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (80,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (81,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (82,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (83,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (84,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (85,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (86,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (87,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (88,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (89,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (90,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (91,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (92,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (93,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (94,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (95,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (96,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), - (97,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'), - (98,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (99,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'), - (100,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (101,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), - (102,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'), - (103,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'), - (104,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'), - (105,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (106,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (107,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (108,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'), - (109,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'), - (110,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (111,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (112,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (113,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (114,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (115,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (116,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'), - (117,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (118,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (119,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (120,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (121,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (122,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (123,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (124,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (125,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (126,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (127,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (128,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (1,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (2,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (3,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (4,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (5,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (6,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (7,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (8,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (9,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (10,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (11,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'), + (12,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (13,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (14,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (15,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (16,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (17,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (18,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (19,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'), + (20,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'), + (21,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'), + (22,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'), + (23,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'), + (24,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'), + (25,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'), + (26,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (27,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (28,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (29,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (30,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (31,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (32,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (33,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (34,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (35,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (36,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (37,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (38,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (39,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (40,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (41,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (42,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (43,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (44,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (45,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), + (46,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (47,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (48,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (49,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'), + (50,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (51,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (52,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (53,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (54,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (55,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (56,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (57,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (58,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (59,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (60,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), + (61,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), + (62,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'), + (63,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'), + (64,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), + (65,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'), + (66,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'), + (67,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (68,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (69,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (70,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (71,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (72,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (73,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (74,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (75,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (76,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (77,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (78,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (79,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (80,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (81,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (82,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (83,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (84,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (85,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (86,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (87,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (88,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), + (89,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'), + (90,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (91,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'), + (92,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (93,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), + (94,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'), + (95,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'), + (96,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'), + (97,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (98,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (99,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (100,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'), + (101,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'), + (102,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (103,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (104,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (105,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (106,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (107,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), + (108,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'), + (109,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (110,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (111,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (112,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'), + (113,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), + (114,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'), + (115,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (116,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), + (117,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'), + (118,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'), + (119,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (120,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'), + (121,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (122,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (123,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (124,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'), + (125,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'), + (126,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (127,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (128,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (129,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (130,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (131,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), @@ -5037,181 +5036,181 @@ INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title` (179,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (180,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (181,1,'civicrm/note',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Note_Form_Note\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (182,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), - (183,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'), - (184,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'), - (185,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (186,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (187,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (188,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'), - (189,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'), - (190,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (191,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (192,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (193,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (194,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (195,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (196,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (197,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (198,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (199,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (200,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (201,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (202,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (203,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (204,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (205,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (206,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (207,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (208,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (209,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (210,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (211,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (212,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (213,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (214,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (215,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (216,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (217,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (218,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (219,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (220,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (221,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (222,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (223,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (224,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (225,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (226,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (227,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (228,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (229,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (230,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (231,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (232,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (233,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), - (234,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (235,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (236,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (237,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'), - (238,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (239,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (240,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (241,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (242,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (243,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (244,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (245,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (246,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (247,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (248,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (249,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (250,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (251,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (252,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (253,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (254,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (255,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (256,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'), - (257,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (258,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (259,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (260,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (261,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (262,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (263,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (264,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), - (265,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (266,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (267,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), - (268,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), - (269,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), - (270,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), - (271,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), - (272,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (273,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (274,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (275,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (276,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (277,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (278,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (279,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (280,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (281,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'), - (282,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'), - (283,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), - (284,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'), - (285,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), - (286,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'), - (287,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), - (288,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'), - (289,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'), - (290,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'), - (291,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'), - (292,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'), - (293,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'), - (294,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'), - (295,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'), - (296,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), - (297,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), - (298,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (299,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (300,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), - (301,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'), - (302,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), - (303,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), - (304,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (305,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (306,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (307,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,1,0,1,0,0,'a:0:{}'), - (308,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,360,1,0,0,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (309,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:0:{}'), - (310,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:0:{}'), - (311,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), - (312,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), - (313,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), - (314,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,440,1,0,0,'a:0:{}'), - (315,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,460,1,0,0,'a:0:{}'), - (316,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,470,1,0,0,'a:0:{}'), - (317,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'), - (318,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (319,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (320,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (321,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (322,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (323,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (324,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (325,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (326,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (327,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (328,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (329,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (330,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (331,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'), - (332,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'), - (333,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,530,1,1,0,'a:0:{}'), - (334,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'), - (335,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (336,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (337,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (338,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (339,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (340,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (341,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'), - (342,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'), - (343,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'), - (344,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'), - (345,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'), - (346,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (347,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (348,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (349,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), - (350,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (351,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (352,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (353,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), - (354,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), - (355,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'), - (356,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (182,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (183,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (184,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (185,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (186,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), + (187,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'), + (188,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'), + (189,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (190,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (191,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (192,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'), + (193,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'), + (194,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (195,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (196,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (197,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (198,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (199,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (200,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (201,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (202,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (203,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (204,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (205,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (206,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (207,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (208,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (209,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (210,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (211,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (212,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (213,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (214,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (215,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (216,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (217,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (218,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (219,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (220,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (221,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (222,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (223,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (224,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (225,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (226,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (227,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (228,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (229,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (230,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (231,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (232,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (233,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (234,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (235,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (236,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (237,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'), + (238,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (239,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (240,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (241,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'), + (242,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (243,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (244,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (245,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (246,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (247,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (248,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (249,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (250,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (251,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (252,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (253,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (254,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (255,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (256,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (257,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (258,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (259,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (260,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (261,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (262,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (263,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (264,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (265,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (266,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (267,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'), + (268,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), + (269,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (270,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), + (271,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), + (272,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), + (273,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), + (274,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), + (275,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (276,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (277,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (278,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (279,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (280,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (281,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (282,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (283,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (284,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'), + (285,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'), + (286,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), + (287,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'), + (288,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), + (289,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'), + (290,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'), + (291,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'), + (292,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'), + (293,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'), + (294,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'), + (295,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'), + (296,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'), + (297,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'), + (298,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'), + (299,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), + (300,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'), + (301,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (302,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (303,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'), + (304,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'), + (305,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (306,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (307,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (308,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (309,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,1,0,1,0,0,'a:0:{}'), + (310,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,360,1,0,0,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (311,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:0:{}'), + (312,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:0:{}'), + (313,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), + (314,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), + (315,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), + (316,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,440,1,0,0,'a:0:{}'), + (317,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,460,1,0,0,'a:0:{}'), + (318,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,470,1,0,0,'a:0:{}'), + (319,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'), + (320,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (321,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (322,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (323,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (324,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (325,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (326,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (327,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (328,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (329,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (330,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (331,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (332,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (333,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'), + (334,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'), + (335,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,530,1,1,0,'a:0:{}'), + (336,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'), + (337,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (338,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (339,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (340,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (341,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (342,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (343,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'), + (344,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'), + (345,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'), + (346,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'), + (347,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'), + (348,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (349,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (350,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (351,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (352,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (353,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (354,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (355,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (356,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), (357,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'), (358,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'), (359,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'), @@ -5308,8 +5307,8 @@ INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title` (450,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (451,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (452,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (453,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (454,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}'); + (453,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:20:\"administer recaptcha\";}i:1;s:2:\"or\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";}'), + (454,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}'); /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */; UNLOCK TABLES; @@ -5348,10 +5347,10 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text` (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n {/if}\n </p>\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n <tr><td>{ts}Contribution Date{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n </table>\n</body>\n</html>\n',1,826,'pcp_owner_notify',0,1,0,NULL), (27,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n {if $paymentsComplete}\n <p>{ts}Thank you for completing this contribution.{/ts}</p>\n {/if}\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney:$currency}\n </td>\n </tr>\n {else}\n <tr>\n <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n {if !empty($paidBy)}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n <tr>\n <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n </tr>\n {if $totalAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Fee{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $totalPaid}\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $amountOwed}\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney:$currency}\n </td> {* This will be zero after final payment. *}\n </tr>\n {/if}\n </table>\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !empty($billingName) || !empty($address)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if !empty($billingName)}{$billingName}{/if}<br />\n {if !empty($address)}{$address|nl2br}{/if}\n </td>\n </tr>\n {/if}\n {if !empty($credit_card_number)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $component eq \'event\'}\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if !empty($event.participant_role)}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n </table>\n </td>\n </tr>\n\n </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',1,0,0,NULL), (28,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n {if $paymentsComplete}\n <p>{ts}Thank you for completing this contribution.{/ts}</p>\n {/if}\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney:$currency}\n </td>\n </tr>\n {else}\n <tr>\n <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n {if !empty($paidBy)}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n <tr>\n <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n </tr>\n {if $totalAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Fee{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $totalPaid}\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $amountOwed}\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney:$currency}\n </td> {* This will be zero after final payment. *}\n </tr>\n {/if}\n </table>\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !empty($billingName) || !empty($address)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if !empty($billingName)}{$billingName}{/if}<br />\n {if !empty($address)}{$address|nl2br}{/if}\n </td>\n </tr>\n {/if}\n {if !empty($credit_card_number)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $component eq \'event\'}\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if !empty($event.participant_role)}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n </table>\n </td>\n </tr>\n\n </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',0,1,0,NULL), - (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n===============================================================================\n\n{$pay_later_receipt}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n{ts}Event Contacts:{/ts}\n\n{if {event.loc_block_id.phone_id.phone|boolean}}\n{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.phone_2_id.phone|boolean}}\n{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n\n\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if {contact.email_primary.email|boolean}}\n\n===============================================================================\n\n{ts}Registered Email{/ts}\n\n===============================================================================\n\n{contact.email_primary.email}\n{/if}\n{if {event.is_monetary|boolean}} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if {event.is_monetary|boolean}}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n-----------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n{if {event.is_monetary|boolean}}\n\n{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{ts}Balance{/ts}: {contribution.balance_amount}\n{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n===============================================================================\n\n{$pay_later_receipt}\n===============================================================================\n\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{if !empty($billingName)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n==============================================================================\n\n{$customName}\n==============================================================================\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{$event.confirm_email_text}</p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br />\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if {event.is_show_location|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {contact.email_primary.email|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email_primary.email}\n </td>\n </tr>\n {/if}\n\n\n {if {event.is_monetary|boolean}}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $isShowParticipantCount}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if $isShowParticipantCount}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {/if}\n {if $isShowParticipantCount}\n <tr>\n <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n <td {$valueStyle}>{$line.participant_count}</td>\n </tr>\n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {event.pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.trxn_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br/>\n {$address|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',1,0,0,NULL), - (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n===============================================================================\n\n{$pay_later_receipt}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n{ts}Event Contacts:{/ts}\n\n{if {event.loc_block_id.phone_id.phone|boolean}}\n{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.phone_2_id.phone|boolean}}\n{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n{/if}\n\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n\n\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if {contact.email_primary.email|boolean}}\n\n===============================================================================\n\n{ts}Registered Email{/ts}\n\n===============================================================================\n\n{contact.email_primary.email}\n{/if}\n{if {event.is_monetary|boolean}} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if {event.is_monetary|boolean}}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n-----------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n{if {event.is_monetary|boolean}}\n\n{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{ts}Balance{/ts}: {contribution.balance_amount}\n{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n===============================================================================\n\n{$pay_later_receipt}\n===============================================================================\n\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{if !empty($billingName)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n==============================================================================\n\n{$customName}\n==============================================================================\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{$event.confirm_email_text}</p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br />\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if {event.is_show_location|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {contact.email_primary.email|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email_primary.email}\n </td>\n </tr>\n {/if}\n\n\n {if {event.is_monetary|boolean}}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $isShowParticipantCount}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if $isShowParticipantCount}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {/if}\n {if $isShowParticipantCount}\n <tr>\n <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n <td {$valueStyle}>{$line.participant_count}</td>\n </tr>\n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {event.pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.trxn_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br/>\n {$address|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',0,1,0,NULL), - (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n {else}\n <p>{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n {/if}\n {/if}\n </p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n {if $isPrimary}\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {/if}\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n {if $isPrimary}\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br/>\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {event.is_share|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n </td>\n </tr>\n {/if}\n {if !empty($payer.name)}\n <tr>\n <th {$headerStyle}>\n {ts}You were registered by:{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$payer.name}\n </td>\n </tr>\n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if !empty($pricesetFieldsCount)}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if !empty($pricesetFieldsCount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($financialTypeName)}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$financialTypeName}\n </td>\n </tr>\n {/if}\n\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br/>\n {$address|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n <tr>\n <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n </tr>\n {foreach from=$customPr item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n <tr>\n <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n </tr>\n {foreach from=$customPos item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr>\n <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n </tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr>\n <th {$headerStyle}>{$customProfile.title.$pid}</th>\n </tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>\n {foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n {if !empty($event.allow_selfcancelxfer)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',1,0,0,NULL), - (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n {else}\n <p>{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n {/if}\n {/if}\n </p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n {if $isPrimary}\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {/if}\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n {if $isPrimary}\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br/>\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {event.is_share|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n </td>\n </tr>\n {/if}\n {if !empty($payer.name)}\n <tr>\n <th {$headerStyle}>\n {ts}You were registered by:{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$payer.name}\n </td>\n </tr>\n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if !empty($pricesetFieldsCount)}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if !empty($pricesetFieldsCount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($financialTypeName)}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$financialTypeName}\n </td>\n </tr>\n {/if}\n\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br/>\n {$address|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n <tr>\n <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n </tr>\n {foreach from=$customPr item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n <tr>\n <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n </tr>\n {foreach from=$customPos item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr>\n <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n </tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr>\n <th {$headerStyle}>{$customProfile.title.$pid}</th>\n </tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>\n {foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n {if !empty($event.allow_selfcancelxfer)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',0,1,0,NULL), + (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{$event.confirm_email_text}</p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br />\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if {event.is_show_location|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {contact.email_primary.email|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email_primary.email}\n </td>\n </tr>\n {/if}\n\n\n {if {event.is_monetary|boolean}}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $isShowParticipantCount}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if $isShowParticipantCount}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {/if}\n {if $isShowParticipantCount}\n <tr>\n <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n <td {$valueStyle}>{$line.participant_count}</td>\n </tr>\n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {event.pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.trxn_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contribution.address_id.name}<br/>\n {contribution.address_id.display}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',1,0,0,NULL), + (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{$event.confirm_email_text}</p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n <p>{event.pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br />\n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if {event.is_show_location|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {contact.email_primary.email|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email_primary.email}\n </td>\n </tr>\n {/if}\n\n\n {if {event.is_monetary|boolean}}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $isShowParticipantCount}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if $isShowParticipantCount}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {/if}\n {if $isShowParticipantCount}\n <tr>\n <td {$labelStyle}>{ts}Total Participants{/ts}</td>\n <td {$valueStyle}>{$line.participant_count}</td>\n </tr>\n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {event.pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.trxn_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contribution.address_id.name}<br/>\n {contribution.address_id.display}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,828,'event_offline_receipt',0,1,0,NULL), + (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n {else}\n <p>{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n {/if}\n {/if}\n </p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n {if $isPrimary}\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {/if}\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n {if $isPrimary}\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br/>\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {event.is_share|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n </td>\n </tr>\n {/if}\n {if !empty($payer.name)}\n <tr>\n <th {$headerStyle}>\n {ts}You were registered by:{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$payer.name}\n </td>\n </tr>\n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if !empty($pricesetFieldsCount)}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if !empty($pricesetFieldsCount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($financialTypeName)}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$financialTypeName}\n </td>\n </tr>\n {/if}\n\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contribution.address_id.name}<br/>\n {contribution.address_id.display}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n <tr>\n <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n </tr>\n {foreach from=$customPr item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n <tr>\n <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n </tr>\n {foreach from=$customPos item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr>\n <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n </tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr>\n <th {$headerStyle}>{$customProfile.title.$pid}</th>\n </tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>\n {foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n {if !empty($event.allow_selfcancelxfer)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',1,0,0,NULL), + (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n===============================================================================\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n===============================================================================\n\n{elseif !empty($isRequireApproval)}\n===============================================================================\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n===============================================================================\n\n{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n\n\n===============================================================================\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n===============================================================================\n\n{/if}\n\n\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n\n{if \"{participant.role_id:label}\" neq \'Attendee\'}\n{ts}Participant Role{/ts}: {participant.role_id:label}\n{/if}\n\n{if !empty($isShowLocation)}\n{event.location}\n{/if}{*End of isShowLocation condition*}\n\n{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n\n{ts}Event Contacts:{/ts}\n{if {event.loc_block_id.phone_id.phone|boolean}}\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n{/if}\n{if {event.loc_block_id.email_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_id.email}\n{/if}\n{if {event.loc_block_id.email_2_id.email|boolean}}\n{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if}\n{/if}\n{if {event.is_public|boolean}}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if {event.is_monetary|boolean} and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n===============================================================================\n\n{event.fee_label}\n===============================================================================\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if $isPrimary}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n{/if}\n\n{if !$isShowLineItems}\n{foreach from=$participants key=index item=currentParticipant}\n{if $isPrimary || {participant.id} === $currentParticipant.id}\n{foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n{$currentLineItem.label} {if $isPrimary} - {$currentParticipant.contact.display_name}{/if} - {$currentLineItem.line_total|crmMoney:$currency}\n{/foreach}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n{/if}\n{if $isPrimary}\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount)}\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if {contribution.receive_date|boolean}}\n{ts}Transaction Date{/ts}: {contribution.receive_date}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if {contribution.address_id.display|boolean}}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{contribution.address_id.name}\n{contribution.address_id.display}\n{/if}\n\n{if !empty($credit_card_type)}\n===============================================================================\n\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n===============================================================================\n\n{$customPre_grouptitle.$i}\n===============================================================================\n\n{foreach from=$customPr item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n===============================================================================\n\n{$customPost_grouptitle.$j}\n===============================================================================\n\n{foreach from=$customPos item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n===============================================================================\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n===============================================================================\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n------------------------------------------------------------------------------\n\n{$customProfile.title.$pid}\n------------------------------------------------------------------------------\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer)}\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n {else}\n <p>{ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to<strong> %1</strong>.{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to<strong>waitlisted</strong>.{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}\n {/if}\n {/if}\n </p>\n {/if}\n\n {if !empty($isOnWaitlist)}\n <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n {if $isPrimary}\n <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n {/if}\n {elseif !empty($isRequireApproval)}\n <p>{ts}Your registration has been submitted.{/ts}</p>\n {if $isPrimary}\n <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n {/if}\n {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n <p>{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.title}<br/>\n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {event.location}\n </td>\n </tr>\n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n <tr>\n <td {$labelStyle}>\n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_id.email}\n </td>\n </tr>\n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {event.loc_block_id.email_2_id.email}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if {event.is_share|boolean}}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n </td>\n </tr>\n {/if}\n {if !empty($payer.name)}\n <tr>\n <th {$headerStyle}>\n {ts}You were registered by:{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$payer.name}\n </td>\n </tr>\n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$currentParticipant.contact.display_name}\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if !empty($pricesetFieldsCount)}\n <th>{ts}Total Participants{/ts}</th>\n {/if}\n </tr>\n {foreach from=$currentParticipant.line_items item=line}\n <tr>\n <td {$tdfirstStyle}>{$line.title}</td>\n <td {$tdStyle} align=\"middle\">{$line.qty}</td>\n <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.line_total|crmMoney:$currency}</td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n <td>{$line.tax_amount|crmMoney:$currency}</td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total_inclusive|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}\n <td {$tdStyle}>{$line.participant_count}</td>\n {/if}\n </tr>\n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n <tr {$participantTotalStyle}>\n <td colspan=3>{ts 1=$currentParticipant.contact.display_name}Total for %1{/ts}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n <tr>\n <td {$valueStyle}>\n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n </td>\n <td {$valueStyle}>\n {$currentLineItem.line_total|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n </td>\n </tr>\n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if !empty($pricesetFieldsCount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1}\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n\n {if {participant.register_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($financialTypeName)}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$financialTypeName}\n </td>\n </tr>\n {/if}\n\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {/if}\n\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contribution.address_id.name}<br/>\n {contribution.address_id.display}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}<br/>\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n <tr>\n <th {$headerStyle}>{$customPre_grouptitle.$i}</th>\n </tr>\n {foreach from=$customPr item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n <tr>\n <th {$headerStyle}>{$customPost_grouptitle.$j}</th>\n </tr>\n {foreach from=$customPos item=customValue key=customName}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr>\n <th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th>\n </tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr>\n <th {$headerStyle}>{$customProfile.title.$pid}</th>\n </tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>\n {foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n {if !empty($event.allow_selfcancelxfer)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br/>\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </table>\n\n</body>\n</html>\n',1,829,'event_online_receipt',0,1,0,NULL), (33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $is_pay_later}\n <p>\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n </p>\n {else}\n <p>\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n </p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p>\n {/if}\n\n <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$billing_name}<br />\n {$billing_street_address}<br />\n {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n <br/>\n {$email}\n </td>\n </tr>\n </table>\n{/if}\n{if $credit_card_type}\n <p> </p>\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n </td>\n </tr>\n </table>\n{/if}\n{if !empty($source)}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"700\">\n <thead>\n <tr>\n{if $line_items}\n <th style=\"text-align: left;\">\n Event\n </th>\n <th style=\"text-align: left;\">\n Participants\n </th>\n{/if}\n <th style=\"text-align: left;\">\n Price\n </th>\n <th style=\"text-align: left;\">\n Total\n </th>\n </tr>\n </thead>\n <tbody>\n {foreach from=$line_items item=line_item}\n <tr>\n <td style=\"width: 220px\">\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}<br /><br />\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n </td>\n <td style=\"width: 180px\">\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:<br/>\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n </td>\n <td style=\"width: 100px\">\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n <td style=\"width: 100px\">\n {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {/foreach}\n </tbody>\n <tfoot>\n {if $discounts}\n <tr>\n <td>\n </td>\n <td>\n </td>\n <td>\n Subtotal:\n </td>\n <td>\n {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {foreach from=$discounts key=myId item=i}\n <tr>\n <td>\n {$i.title}\n </td>\n <td>\n </td>\n <td>\n </td>\n <td>\n -{$i.amount}\n </td>\n </tr>\n {/foreach}\n {/if}\n <tr>\n{if $line_items}\n <td>\n </td>\n <td>\n </td>\n{/if}\n <td>\n <strong>Total:</strong>\n </td>\n <td>\n <strong> {$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n </td>\n </tr>\n </tfoot>\n </table>\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n </body>\n</html>\n',1,830,'event_registration_receipt',1,0,0,NULL), (34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $is_pay_later}\n <p>\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n </p>\n {else}\n <p>\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n </p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p>\n {/if}\n\n <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$billing_name}<br />\n {$billing_street_address}<br />\n {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n <br/>\n {$email}\n </td>\n </tr>\n </table>\n{/if}\n{if $credit_card_type}\n <p> </p>\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n </td>\n </tr>\n </table>\n{/if}\n{if !empty($source)}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"700\">\n <thead>\n <tr>\n{if $line_items}\n <th style=\"text-align: left;\">\n Event\n </th>\n <th style=\"text-align: left;\">\n Participants\n </th>\n{/if}\n <th style=\"text-align: left;\">\n Price\n </th>\n <th style=\"text-align: left;\">\n Total\n </th>\n </tr>\n </thead>\n <tbody>\n {foreach from=$line_items item=line_item}\n <tr>\n <td style=\"width: 220px\">\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}<br /><br />\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n </td>\n <td style=\"width: 180px\">\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:<br/>\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n </td>\n <td style=\"width: 100px\">\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n <td style=\"width: 100px\">\n {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {/foreach}\n </tbody>\n <tfoot>\n {if $discounts}\n <tr>\n <td>\n </td>\n <td>\n </td>\n <td>\n Subtotal:\n </td>\n <td>\n {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {foreach from=$discounts key=myId item=i}\n <tr>\n <td>\n {$i.title}\n </td>\n <td>\n </td>\n <td>\n </td>\n <td>\n -{$i.amount}\n </td>\n </tr>\n {/foreach}\n {/if}\n <tr>\n{if $line_items}\n <td>\n </td>\n <td>\n </td>\n{/if}\n <td>\n <strong>Total:</strong>\n </td>\n <td>\n <strong> {$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n </td>\n </tr>\n </tfoot>\n </table>\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n </body>\n</html>\n',1,830,'event_registration_receipt',0,1,0,NULL), (35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts}Your Event Registration has been cancelled.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email}\n </td>\n </tr>\n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,831,'participant_cancelled',1,0,0,NULL), @@ -5366,8 +5365,8 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text` (44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{$senderMessage}</p>\n {if $generalLink}\n <p><a href=\"{$generalLink}\">{ts}More information{/ts}</a></p>\n {/if}\n {if $contribute}\n <p><a href=\"{$pageURL}\">{ts}Make a contribution{/ts}</a></p>\n {/if}\n {if $event}\n <p><a href=\"{$pageURL}\">{ts}Find out more about this event{/ts}</a></p>\n {/if}\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n',1,835,'friend',0,1,0,NULL), (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-membership_receipt\"\n style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $receipt_text}\n <p>{$receipt_text|htmlize}</p>\n {else}\n <p>{ts}Thank you for this contribution.{/ts}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !$isShowLineItems}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {membership.membership_type_id:name}\n </td>\n </tr>\n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {membership.start_date|crmDate:\"Full\"}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {membership.end_date|crmDate:\"Full\"}\n </td>\n </tr>\n {/if}\n {if {contribution.total_amount|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if $isShowLineItems}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>{$line.title}</td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>\n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n </td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n </td>\n {/if}\n <td>\n {$line.membership.start_date|crmDate:\"Full\"}\n </td>\n <td>\n {$line.membership.end_date|crmDate:\"Full\"}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_exclusive_amount}\n </td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_amount}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n {/if}\n {/if}\n </table>\n </td>\n </tr>\n\n {if !empty($isPrimary)}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {$billingName}<br/>\n {$address}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Expires{/ts}\n </td>\n <td {$valueStyle}>\n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {/if}\n\n {if !empty($customValues)}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Membership Options{/ts}\n </th>\n </tr>\n {foreach from=$customValues item=value key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',1,0,0,NULL), (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-membership_receipt\"\n style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $receipt_text}\n <p>{$receipt_text|htmlize}</p>\n {else}\n <p>{ts}Thank you for this contribution.{/ts}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !$isShowLineItems}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {membership.membership_type_id:name}\n </td>\n </tr>\n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {membership.start_date|crmDate:\"Full\"}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {membership.end_date|crmDate:\"Full\"}\n </td>\n </tr>\n {/if}\n {if {contribution.total_amount|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n {if {contribution.financial_type_id|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n </tr>\n {/if}\n\n {if $isShowLineItems}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>{$line.title}</td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>\n {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n </td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n </td>\n {/if}\n <td>\n {$line.membership.start_date|crmDate:\"Full\"}\n </td>\n <td>\n {$line.membership.end_date|crmDate:\"Full\"}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_exclusive_amount}\n </td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_amount}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {if {contribution.receive_date|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date}\n </td>\n </tr>\n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.payment_instrument_id:label}\n </td>\n </tr>\n {if {contribution.check_number|boolean}}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n {/if}\n {/if}\n </table>\n </td>\n </tr>\n\n {if !empty($isPrimary)}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {$billingName}<br/>\n {$address}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$valueStyle}>\n {$credit_card_type}<br/>\n {$credit_card_number}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Expires{/ts}\n </td>\n <td {$valueStyle}>\n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {/if}\n\n {if !empty($customValues)}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Membership Options{/ts}\n </th>\n </tr>\n {foreach from=$customValues item=value key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,836,'membership_offline_receipt',0,1,0,NULL), - (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if !empty($receipt_text)}\n <p>{$receipt_text|htmlize}</p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $membership_assign && !$useForMember}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_name}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n\n {if $amount}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n {if $amount && !$is_separate_payment}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total{/ts}\n </td>\n <td {$valueStyle}>\n {$amount+$membership_amount|crmMoney}\n </td>\n </tr>\n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {$line.description|truncate:30:\"...\"}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if !empty($dataArray)}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if !empty($dataArray)}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if ($line.tax_rate || $line.tax_amount != \"\")}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {/if}\n <td>\n {$line.start_date}\n </td>\n <td>\n {$line.end_date}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if !empty($dataArray)}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}NO{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n\n\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($membership_trx_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_trx_id}\n </td>\n </tr>\n {/if}\n {if !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n {/if}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Display In Honor Roll{/ts}\n </td>\n <td {$valueStyle}>\n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n </td>\n </tr>\n {if $pcp_roll_nickname}\n <tr>\n <td {$labelStyle}>\n {ts}Nickname{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_roll_nickname}\n </td>\n </tr>\n {/if}\n {if $pcp_personal_note}\n <tr>\n <td {$labelStyle}>\n {ts}Personal Note{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_personal_note}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n <tr>\n <th {$headerStyle}>\n {$onBehalfProfile_grouptitle}\n </th>\n </tr>\n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n <tr>\n <td {$labelStyle}>\n {$onBehalfName}\n </td>\n <td {$valueStyle}>\n {$onBehalfValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n {elseif !empty($email)}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n {/if}\n\n {if !empty($selectPremium)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$product_name}\n </td>\n </tr>\n {if $option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$option}\n </td>\n </tr>\n {/if}\n {if $sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$sku}\n </td>\n </tr>\n {/if}\n {if $start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $end_date}\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$end_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if !empty($contact_email)}\n <p>{$contact_email}</p>\n {/if}\n {if !empty($contact_phone)}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND !empty($price)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',1,0,0,NULL), - (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if !empty($receipt_text)}\n <p>{$receipt_text|htmlize}</p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $membership_assign && !$useForMember}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_name}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n\n {if $amount}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n {if $amount && !$is_separate_payment}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total{/ts}\n </td>\n <td {$valueStyle}>\n {$amount+$membership_amount|crmMoney}\n </td>\n </tr>\n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {$line.description|truncate:30:\"...\"}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if !empty($dataArray)}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if !empty($dataArray)}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if ($line.tax_rate || $line.tax_amount != \"\")}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {/if}\n <td>\n {$line.start_date}\n </td>\n <td>\n {$line.end_date}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if !empty($dataArray)}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}NO{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n\n\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($membership_trx_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_trx_id}\n </td>\n </tr>\n {/if}\n {if !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n {/if}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Display In Honor Roll{/ts}\n </td>\n <td {$valueStyle}>\n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n </td>\n </tr>\n {if $pcp_roll_nickname}\n <tr>\n <td {$labelStyle}>\n {ts}Nickname{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_roll_nickname}\n </td>\n </tr>\n {/if}\n {if $pcp_personal_note}\n <tr>\n <td {$labelStyle}>\n {ts}Personal Note{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_personal_note}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n <tr>\n <th {$headerStyle}>\n {$onBehalfProfile_grouptitle}\n </th>\n </tr>\n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n <tr>\n <td {$labelStyle}>\n {$onBehalfName}\n </td>\n <td {$valueStyle}>\n {$onBehalfValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n {elseif !empty($email)}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n {/if}\n\n {if !empty($selectPremium)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$product_name}\n </td>\n </tr>\n {if $option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$option}\n </td>\n </tr>\n {/if}\n {if $sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$sku}\n </td>\n </tr>\n {/if}\n {if $start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $end_date}\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$end_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if !empty($contact_email)}\n <p>{$contact_email}</p>\n {/if}\n {if !empty($contact_phone)}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND !empty($price)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',0,1,0,NULL), + (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if !empty($receipt_text)}\n <p>{$receipt_text|htmlize}</p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $membership_assign && !$useForMember}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_name}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n\n {if $amount}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n {if $amount && !$is_separate_payment}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total{/ts}\n </td>\n <td {$valueStyle}>\n {$amount+$membership_amount|crmMoney}\n </td>\n </tr>\n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {$line.description|truncate:30:\"...\"}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if !empty($dataArray)}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if !empty($dataArray)}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if ($line.tax_rate || $line.tax_amount != \"\")}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {/if}\n <td>\n {$line.start_date}\n </td>\n <td>\n {$line.end_date}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if !empty($dataArray)}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}NO{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n\n\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($membership_trx_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_trx_id}\n </td>\n </tr>\n {/if}\n {if !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n {/if}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Display In Honor Roll{/ts}\n </td>\n <td {$valueStyle}>\n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n </td>\n </tr>\n {if $pcp_roll_nickname}\n <tr>\n <td {$labelStyle}>\n {ts}Nickname{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_roll_nickname}\n </td>\n </tr>\n {/if}\n {if $pcp_personal_note}\n <tr>\n <td {$labelStyle}>\n {ts}Personal Note{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_personal_note}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n <tr>\n <th {$headerStyle}>\n {$onBehalfProfile_grouptitle}\n </th>\n </tr>\n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n <tr>\n <td {$labelStyle}>\n {$onBehalfName}\n </td>\n <td {$valueStyle}>\n {$onBehalfValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n {elseif !empty($email)}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n {/if}\n\n {if !empty($selectPremium)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$product_name}\n </td>\n </tr>\n {if $option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$option}\n </td>\n </tr>\n {/if}\n {if $sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$sku}\n </td>\n </tr>\n {/if}\n {if $start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $end_date}\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$end_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if !empty($contact_email)}\n <p>{$contact_email}</p>\n {/if}\n {if !empty($contact_phone)}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND !empty($price)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',1,0,0,NULL), + (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment}\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level)} - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n {$customName}: {$customValue}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if !empty($receipt_text)}\n <p>{$receipt_text|htmlize}</p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {/if}\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $membership_assign && !$useForMember}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Type{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_name}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n\n {if $amount}\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n\n {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n {if $amount && !$is_separate_payment}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total{/ts}\n </td>\n <td {$valueStyle}>\n {$amount+$membership_amount|crmMoney}\n </td>\n </tr>\n {/if}\n\n {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {$line.description|truncate:30:\"...\"}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney}\n </td>\n </tr>\n\n {else}\n {if $useForMember && $lineItem and empty($is_quick_config)}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table>\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if !empty($dataArray)}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n <th>{ts}Total{/ts}</th>\n {/if}\n <th>{ts}Membership Start Date{/ts}</th>\n <th>{ts}Membership Expiration Date{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.line_total|crmMoney}\n </td>\n {if !empty($dataArray)}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if ($line.tax_rate || $line.tax_amount != \"\")}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {/if}\n <td>\n {$line.start_date}\n </td>\n <td>\n {$line.end_date}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if !empty($dataArray)}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}NO{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif isset($membership_amount)}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$membership_name}%1 Membership{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_amount|crmMoney}\n </td>\n </tr>\n\n\n {/if}\n\n {if !empty($receive_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if !empty($is_monetary) and !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($membership_trx_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_trx_id}\n </td>\n </tr>\n {/if}\n {if !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n {/if}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Display In Honor Roll{/ts}\n </td>\n <td {$valueStyle}>\n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n </td>\n </tr>\n {if $pcp_roll_nickname}\n <tr>\n <td {$labelStyle}>\n {ts}Nickname{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_roll_nickname}\n </td>\n </tr>\n {/if}\n {if $pcp_personal_note}\n <tr>\n <td {$labelStyle}>\n {ts}Personal Note{/ts}\n </td>\n <td {$valueStyle}>\n {$pcp_personal_note}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n <tr>\n <th {$headerStyle}>\n {$onBehalfProfile_grouptitle}\n </th>\n </tr>\n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n <tr>\n <td {$labelStyle}>\n {$onBehalfName}\n </td>\n <td {$valueStyle}>\n {$onBehalfValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($billingName)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n {elseif !empty($email)}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n {if !empty($credit_card_type)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n {/if}\n\n {if !empty($selectPremium)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$product_name}\n </td>\n </tr>\n {if $option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$option}\n </td>\n </tr>\n {/if}\n {if $sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$sku}\n </td>\n </tr>\n {/if}\n {if $start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $end_date}\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$end_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if !empty($contact_email)}\n <p>{$contact_email}</p>\n {/if}\n {if !empty($contact_phone)}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND !empty($price)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_online_receipt',0,1,0,NULL), (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Status{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_status}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',1,0,0,NULL), (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Status{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_status}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',0,1,0,NULL), (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,839,'membership_autorenew_billing',1,0,0,NULL), @@ -5652,26 +5651,26 @@ UNLOCK TABLES; LOCK TABLES `civicrm_note` WRITE; /*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */; INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `note_date`, `created_date`, `modified_date`, `subject`, `privacy`) VALUES - (1,'civicrm_contact',183,'Send newsletter for April 2005',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-09-17 21:35:11',NULL,'0'), - (2,'civicrm_contact',9,'Organize the Terry Fox run',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-10-29 06:16:48',NULL,'0'), - (3,'civicrm_contact',183,'Get the registration done for NGO status',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-05-22 07:40:08',NULL,'0'), - (4,'civicrm_contact',76,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-03-16 12:45:10',NULL,'0'), - (5,'civicrm_contact',3,'Send newsletter for April 2005',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-11-03 18:40:45',NULL,'0'), - (6,'civicrm_contact',64,'Connect for presentation',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-11-19 00:33:50',NULL,'0'), - (7,'civicrm_contact',151,'Arrange for cricket match with Sunil Gavaskar',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-03-01 19:56:31',NULL,'0'), - (8,'civicrm_contact',167,'Send newsletter for April 2005',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-12-03 16:06:54',NULL,'0'), - (9,'civicrm_contact',149,'Send reminder for annual dinner',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-06-25 09:28:58',NULL,'0'), - (10,'civicrm_contact',47,'Reminder screening of \"Black\" on next Friday',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-04-21 10:56:44',NULL,'0'), - (11,'civicrm_contact',176,'Organize the Terry Fox run',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-04-13 07:09:04',NULL,'0'), - (12,'civicrm_contact',175,'Arrange collection of funds from members',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-09-19 02:55:32',NULL,'0'), - (13,'civicrm_contact',161,'Get the registration done for NGO status',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-08-19 21:42:17',NULL,'0'), - (14,'civicrm_contact',140,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-10-30 11:23:44',NULL,'0'), - (15,'civicrm_contact',81,'Arrange for cricket match with Sunil Gavaskar',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-07-04 07:00:20',NULL,'0'), - (16,'civicrm_contact',52,'Send newsletter for April 2005',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-01-01 04:09:42',NULL,'0'), - (17,'civicrm_contact',150,'Reminder screening of \"Black\" on next Friday',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2022-10-14 15:49:05',NULL,'0'), - (18,'civicrm_contact',70,'Contact the Commissioner of Charities',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-06-17 10:56:50',NULL,'0'), - (19,'civicrm_contact',90,'Send reminder for annual dinner',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-02-19 21:13:07',NULL,'0'), - (20,'civicrm_contact',40,'Arrange collection of funds from members',1,'2023-10-07 01:51:35','2023-10-07 01:51:35','2023-01-13 21:47:53',NULL,'0'); + (1,'civicrm_contact',114,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-01-16 11:08:46',NULL,'0'), + (2,'civicrm_contact',17,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-07-05 07:23:18',NULL,'0'), + (3,'civicrm_contact',20,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 14:07:31',NULL,'0'), + (4,'civicrm_contact',18,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 15:25:51',NULL,'0'), + (5,'civicrm_contact',41,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-07 11:05:21',NULL,'0'), + (6,'civicrm_contact',148,'Organize the Terry Fox run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-28 19:57:06',NULL,'0'), + (7,'civicrm_contact',53,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-10-24 13:07:48',NULL,'0'), + (8,'civicrm_contact',89,'Chart out route map for next 10k run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-09 07:36:28',NULL,'0'), + (9,'civicrm_contact',12,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-11-11 03:25:47',NULL,'0'), + (10,'civicrm_contact',107,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-08-16 01:33:00',NULL,'0'), + (11,'civicrm_contact',38,'Reminder screening of \"Black\" on next Friday',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-04 04:20:12',NULL,'0'), + (12,'civicrm_contact',165,'Contact the Commissioner of Charities',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-22 04:04:51',NULL,'0'), + (13,'civicrm_contact',189,'Connect for presentation',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-02-02 21:42:27',NULL,'0'), + (14,'civicrm_contact',70,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-03-13 02:59:38',NULL,'0'), + (15,'civicrm_contact',83,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-30 02:27:16',NULL,'0'), + (16,'civicrm_contact',119,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-04-04 21:03:38',NULL,'0'), + (17,'civicrm_contact',157,'Send reminder for annual dinner',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2022-12-10 22:02:49',NULL,'0'), + (18,'civicrm_contact',124,'Get the registration done for NGO status',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-06-14 01:33:44',NULL,'0'), + (19,'civicrm_contact',196,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-09-08 05:58:30',NULL,'0'), + (20,'civicrm_contact',49,'Send newsletter for April 2005',1,'2023-10-19 21:22:30','2023-10-19 21:22:30','2023-05-26 14:48:43',NULL,'0'); /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */; UNLOCK TABLES; @@ -6678,56 +6677,56 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant` WRITE; /*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */; INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`, `created_id`) VALUES - (1,188,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (2,85,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (3,37,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (4,101,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (5,111,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (6,32,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (7,53,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (8,160,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (9,134,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (10,118,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (11,29,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (12,172,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (13,13,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (14,152,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (15,54,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (16,79,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (17,102,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (18,1,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (19,100,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (20,64,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (21,61,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (22,121,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (23,81,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (24,126,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (25,150,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (26,141,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (27,168,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (28,63,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (29,165,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (30,93,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (31,50,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (32,69,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (33,89,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (34,122,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (35,10,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (36,195,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (37,112,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (38,7,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (39,114,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (40,181,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (41,200,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (42,95,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (43,169,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (44,147,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (45,14,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (46,190,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (47,27,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (48,175,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (49,78,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), - (50,17,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL); + (1,10,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (2,92,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (3,160,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (4,77,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (5,36,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (6,40,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (7,94,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (8,41,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (9,23,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (10,13,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (11,195,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (12,192,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (13,135,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (14,30,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (15,16,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (16,132,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (17,179,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (18,189,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (19,123,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (20,144,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (21,80,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (22,178,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (23,45,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (24,196,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (25,182,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (26,8,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (27,101,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (28,158,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (29,19,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (30,73,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (31,76,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (32,197,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (33,97,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (34,6,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (35,159,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (36,17,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (37,127,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (38,154,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (39,84,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (40,117,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (41,14,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (42,156,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (43,163,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (44,184,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (45,96,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (46,57,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (47,175,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (48,172,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (49,69,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL), + (50,88,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */; UNLOCK TABLES; @@ -6738,56 +6737,56 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant_payment` WRITE; /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */; INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES - (1,18,63), - (2,38,64), - (3,35,65), - (4,13,66), - (5,45,67), - (6,50,68), - (7,47,69), - (8,11,70), - (9,6,71), - (10,3,72), - (11,31,73), - (12,7,74), - (13,15,75), - (14,21,76), - (15,28,77), - (16,20,78), - (17,32,79), - (18,49,80), - (19,16,81), - (20,23,82), - (21,2,83), - (22,33,84), - (23,30,85), - (24,42,86), - (25,19,87), - (26,4,88), - (27,17,89), - (28,5,90), - (29,37,91), - (30,39,92), - (31,10,93), - (32,22,94), - (33,34,95), - (34,24,96), - (35,9,97), - (36,26,98), - (37,44,99), - (38,25,100), - (39,14,101), - (40,8,102), - (41,29,103), - (42,27,104), - (43,43,105), - (44,12,106), - (45,48,107), - (46,40,108), - (47,1,109), - (48,46,110), - (49,36,111), - (50,41,112); + (1,34,63), + (2,26,64), + (3,1,65), + (4,10,66), + (5,41,67), + (6,15,68), + (7,36,69), + (8,29,70), + (9,9,71), + (10,14,72), + (11,5,73), + (12,6,74), + (13,8,75), + (14,23,76), + (15,46,77), + (16,49,78), + (17,30,79), + (18,31,80), + (19,4,81), + (20,21,82), + (21,39,83), + (22,50,84), + (23,2,85), + (24,7,86), + (25,45,87), + (26,33,88), + (27,27,89), + (28,40,90), + (29,19,91), + (30,37,92), + (31,16,93), + (32,13,94), + (33,20,95), + (34,38,96), + (35,42,97), + (36,28,98), + (37,35,99), + (38,3,100), + (39,43,101), + (40,48,102), + (41,47,103), + (42,22,104), + (43,17,105), + (44,25,106), + (45,44,107), + (46,18,108), + (47,12,109), + (48,11,110), + (49,24,111), + (50,32,112); /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -6860,7 +6859,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_pcp` WRITE; /*!40000 ALTER TABLE `civicrm_pcp` DISABLE KEYS */; INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES - (1,113,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1); + (1,142,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1); /*!40000 ALTER TABLE `civicrm_pcp` ENABLE KEYS */; UNLOCK TABLES; @@ -6882,181 +6881,183 @@ UNLOCK TABLES; LOCK TABLES `civicrm_phone` WRITE; /*!40000 ALTER TABLE `civicrm_phone` DISABLE KEYS */; INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES - (1,26,1,1,0,NULL,'626-4452',NULL,'6264452',1), - (2,201,1,1,0,NULL,'(601) 877-3596',NULL,'6018773596',1), - (3,201,1,0,0,NULL,'516-4306',NULL,'5164306',2), - (4,153,1,1,0,NULL,'(358) 601-7395',NULL,'3586017395',1), - (5,153,1,0,0,NULL,'308-1097',NULL,'3081097',1), - (6,81,1,1,0,NULL,'645-2038',NULL,'6452038',2), - (7,61,1,1,0,NULL,'(249) 569-3805',NULL,'2495693805',2), - (8,5,1,1,0,NULL,'(339) 424-4730',NULL,'3394244730',2), - (9,78,1,1,0,NULL,'(852) 800-1134',NULL,'8528001134',2), - (10,182,1,1,0,NULL,'(308) 606-9887',NULL,'3086069887',2), - (11,182,1,0,0,NULL,'406-2390',NULL,'4062390',1), - (12,109,1,1,0,NULL,'(721) 755-7020',NULL,'7217557020',2), - (13,125,1,1,0,NULL,'(777) 747-4203',NULL,'7777474203',2), - (14,33,1,1,0,NULL,'(522) 513-5343',NULL,'5225135343',1), - (15,33,1,0,0,NULL,'246-4005',NULL,'2464005',2), - (16,72,1,1,0,NULL,'302-9143',NULL,'3029143',1), - (17,72,1,0,0,NULL,'248-8006',NULL,'2488006',2), - (18,129,1,1,0,NULL,'440-9856',NULL,'4409856',2), - (19,129,1,0,0,NULL,'(882) 427-5654',NULL,'8824275654',1), - (20,185,1,1,0,NULL,'(651) 851-4106',NULL,'6518514106',1), - (21,185,1,0,0,NULL,'(668) 892-3651',NULL,'6688923651',1), - (22,44,1,1,0,NULL,'482-8124',NULL,'4828124',2), - (23,44,1,0,0,NULL,'270-9054',NULL,'2709054',2), - (24,169,1,1,0,NULL,'(599) 556-8363',NULL,'5995568363',1), - (25,169,1,0,0,NULL,'203-1147',NULL,'2031147',1), - (26,96,1,1,0,NULL,'(812) 562-6926',NULL,'8125626926',1), - (27,96,1,0,0,NULL,'766-4045',NULL,'7664045',1), - (28,114,1,1,0,NULL,'(327) 206-1159',NULL,'3272061159',1), - (29,160,1,1,0,NULL,'803-3643',NULL,'8033643',1), - (30,160,1,0,0,NULL,'(402) 532-8458',NULL,'4025328458',1), - (31,95,1,1,0,NULL,'(615) 382-3038',NULL,'6153823038',2), - (32,95,1,0,0,NULL,'361-7641',NULL,'3617641',1), - (33,106,1,1,0,NULL,'526-4509',NULL,'5264509',1), - (34,106,1,0,0,NULL,'523-8678',NULL,'5238678',2), - (35,100,1,1,0,NULL,'(783) 848-5368',NULL,'7838485368',2), - (36,100,1,0,0,NULL,'827-7185',NULL,'8277185',1), - (37,155,1,1,0,NULL,'666-4681',NULL,'6664681',2), - (38,155,1,0,0,NULL,'267-3399',NULL,'2673399',2), - (39,197,1,1,0,NULL,'706-3696',NULL,'7063696',2), - (40,142,1,1,0,NULL,'(815) 428-7800',NULL,'8154287800',1), - (41,97,1,1,0,NULL,'(611) 631-6002',NULL,'6116316002',1), - (42,97,1,0,0,NULL,'(735) 209-4377',NULL,'7352094377',2), - (43,105,1,1,0,NULL,'271-4577',NULL,'2714577',1), - (44,43,1,1,0,NULL,'(822) 378-7074',NULL,'8223787074',1), - (45,70,1,1,0,NULL,'575-9967',NULL,'5759967',2), - (46,70,1,0,0,NULL,'(474) 708-2621',NULL,'4747082621',1), - (47,16,1,1,0,NULL,'660-6224',NULL,'6606224',2), - (48,47,1,1,0,NULL,'(818) 576-3760',NULL,'8185763760',2), - (49,47,1,0,0,NULL,'(379) 438-1039',NULL,'3794381039',2), - (50,199,1,1,0,NULL,'567-8499',NULL,'5678499',1), - (51,199,1,0,0,NULL,'(393) 220-2518',NULL,'3932202518',1), - (52,165,1,1,0,NULL,'(476) 227-4887',NULL,'4762274887',1), - (53,165,1,0,0,NULL,'(343) 783-2679',NULL,'3437832679',2), - (54,188,1,1,0,NULL,'(346) 565-8167',NULL,'3465658167',2), - (55,54,1,1,0,NULL,'667-8248',NULL,'6678248',1), - (56,164,1,1,0,NULL,'(650) 339-7133',NULL,'6503397133',1), - (57,164,1,0,0,NULL,'323-7421',NULL,'3237421',2), - (58,170,1,1,0,NULL,'791-9346',NULL,'7919346',1), - (59,138,1,1,0,NULL,'(303) 823-1661',NULL,'3038231661',2), - (60,156,1,1,0,NULL,'(614) 548-1388',NULL,'6145481388',2), - (61,156,1,0,0,NULL,'(578) 580-9693',NULL,'5785809693',1), - (62,177,1,1,0,NULL,'(830) 835-8328',NULL,'8308358328',1), - (63,177,1,0,0,NULL,'272-7601',NULL,'2727601',2), - (64,7,1,1,0,NULL,'495-7276',NULL,'4957276',1), - (65,7,1,0,0,NULL,'554-6513',NULL,'5546513',1), - (66,143,1,1,0,NULL,'313-2230',NULL,'3132230',1), - (67,143,1,0,0,NULL,'443-8070',NULL,'4438070',2), - (68,122,1,1,0,NULL,'872-1807',NULL,'8721807',2), - (69,122,1,0,0,NULL,'201-4413',NULL,'2014413',2), - (70,196,1,1,0,NULL,'548-1138',NULL,'5481138',1), - (71,196,1,0,0,NULL,'(593) 258-8785',NULL,'5932588785',1), - (72,198,1,1,0,NULL,'(546) 798-8341',NULL,'5467988341',1), - (73,198,1,0,0,NULL,'(556) 293-5499',NULL,'5562935499',2), - (74,181,1,1,0,NULL,'(269) 523-5210',NULL,'2695235210',1), - (75,181,1,0,0,NULL,'760-3813',NULL,'7603813',1), - (76,167,1,1,0,NULL,'(555) 291-1194',NULL,'5552911194',1), - (77,167,1,0,0,NULL,'609-9136',NULL,'6099136',1), - (78,12,1,1,0,NULL,'(421) 498-6332',NULL,'4214986332',2), - (79,12,1,0,0,NULL,'341-9113',NULL,'3419113',2), - (80,195,1,1,0,NULL,'(383) 636-3232',NULL,'3836363232',1), - (81,36,1,1,0,NULL,'(279) 241-7027',NULL,'2792417027',1), - (82,36,1,0,0,NULL,'443-1835',NULL,'4431835',2), - (83,32,1,1,0,NULL,'256-5859',NULL,'2565859',1), - (84,37,1,1,0,NULL,'594-8325',NULL,'5948325',2), - (85,37,1,0,0,NULL,'400-3124',NULL,'4003124',2), - (86,123,1,1,0,NULL,'690-3904',NULL,'6903904',2), - (87,123,1,0,0,NULL,'744-4576',NULL,'7444576',2), - (88,163,1,1,0,NULL,'310-5682',NULL,'3105682',2), - (89,163,1,0,0,NULL,'795-3038',NULL,'7953038',2), - (90,46,1,1,0,NULL,'428-6045',NULL,'4286045',2), - (91,66,1,1,0,NULL,'(301) 737-9585',NULL,'3017379585',2), - (92,149,1,1,0,NULL,'(784) 358-2801',NULL,'7843582801',1), - (93,149,1,0,0,NULL,'(452) 586-4393',NULL,'4525864393',1), - (94,18,1,1,0,NULL,'(500) 830-8578',NULL,'5008308578',1), - (95,18,1,0,0,NULL,'824-4374',NULL,'8244374',2), - (96,184,1,1,0,NULL,'(492) 602-6601',NULL,'4926026601',2), - (97,10,1,1,0,NULL,'748-1140',NULL,'7481140',1), - (98,63,1,1,0,NULL,'(525) 886-6876',NULL,'5258866876',2), - (99,63,1,0,0,NULL,'795-1814',NULL,'7951814',1), - (100,57,1,1,0,NULL,'280-4050',NULL,'2804050',1), - (101,175,1,1,0,NULL,'(225) 327-4446',NULL,'2253274446',1), - (102,175,1,0,0,NULL,'(836) 875-2003',NULL,'8368752003',1), - (103,93,1,1,0,NULL,'286-3814',NULL,'2863814',2), - (104,29,1,1,0,NULL,'791-6883',NULL,'7916883',2), - (105,29,1,0,0,NULL,'847-2190',NULL,'8472190',2), - (106,101,1,1,0,NULL,'487-6713',NULL,'4876713',2), - (107,40,1,1,0,NULL,'755-2296',NULL,'7552296',2), - (108,40,1,0,0,NULL,'245-5267',NULL,'2455267',1), - (109,136,1,1,0,NULL,'515-8076',NULL,'5158076',2), - (110,85,1,1,0,NULL,'269-5707',NULL,'2695707',2), - (111,162,1,1,0,NULL,'(732) 342-4533',NULL,'7323424533',1), - (112,103,1,1,0,NULL,'659-6791',NULL,'6596791',2), - (113,103,1,0,0,NULL,'(337) 260-7949',NULL,'3372607949',1), - (114,58,1,1,0,NULL,'(689) 711-1407',NULL,'6897111407',2), - (115,84,1,1,0,NULL,'(720) 688-3131',NULL,'7206883131',2), - (116,84,1,0,0,NULL,'804-6332',NULL,'8046332',1), - (117,60,1,1,0,NULL,'202-5712',NULL,'2025712',1), - (118,60,1,0,0,NULL,'(397) 533-8934',NULL,'3975338934',1), - (119,65,1,1,0,NULL,'(320) 201-3967',NULL,'3202013967',1), - (120,99,1,1,0,NULL,'704-3868',NULL,'7043868',2), - (121,99,1,0,0,NULL,'(858) 886-3121',NULL,'8588863121',2), - (122,82,1,1,0,NULL,'(480) 443-8208',NULL,'4804438208',2), - (123,186,1,1,0,NULL,'259-1752',NULL,'2591752',1), - (124,186,1,0,0,NULL,'(871) 414-6154',NULL,'8714146154',2), - (125,80,1,1,0,NULL,'(799) 712-3640',NULL,'7997123640',2), - (126,48,1,1,0,NULL,'(388) 583-9146',NULL,'3885839146',2), - (127,141,1,1,0,NULL,'832-7394',NULL,'8327394',2), - (128,141,1,0,0,NULL,'607-1851',NULL,'6071851',2), - (129,128,1,1,0,NULL,'(716) 406-7646',NULL,'7164067646',2), - (130,8,1,1,0,NULL,'(502) 493-4962',NULL,'5024934962',1), - (131,8,1,0,0,NULL,'(411) 824-5904',NULL,'4118245904',1), - (132,144,1,1,0,NULL,'(482) 437-3978',NULL,'4824373978',2), - (133,144,1,0,0,NULL,'631-8441',NULL,'6318441',1), - (134,4,1,1,0,NULL,'205-1528',NULL,'2051528',1), - (135,178,1,1,0,NULL,'(596) 650-9099',NULL,'5966509099',1), - (136,178,1,0,0,NULL,'560-4777',NULL,'5604777',2), - (137,127,1,1,0,NULL,'(238) 449-1118',NULL,'2384491118',1), - (138,127,1,0,0,NULL,'292-5458',NULL,'2925458',1), - (139,67,1,1,0,NULL,'366-9985',NULL,'3669985',1), - (140,67,1,0,0,NULL,'(778) 800-1139',NULL,'7788001139',2), - (141,56,1,1,0,NULL,'362-2510',NULL,'3622510',1), - (142,56,1,0,0,NULL,'474-4970',NULL,'4744970',2), - (143,34,1,1,0,NULL,'(545) 780-9250',NULL,'5457809250',2), - (144,34,1,0,0,NULL,'(798) 772-6598',NULL,'7987726598',1), - (145,193,1,1,0,NULL,'(696) 639-7693',NULL,'6966397693',1), - (146,77,1,1,0,NULL,'(709) 304-5994',NULL,'7093045994',1), - (147,77,1,0,0,NULL,'397-4425',NULL,'3974425',2), - (148,39,1,1,0,NULL,'(398) 727-2939',NULL,'3987272939',2), - (149,79,1,1,0,NULL,'657-8933',NULL,'6578933',1), - (150,172,1,1,0,NULL,'(337) 793-6277',NULL,'3377936277',1), - (151,172,1,0,0,NULL,'(747) 298-3682',NULL,'7472983682',1), - (152,173,1,1,0,NULL,'(206) 468-8799',NULL,'2064688799',1), - (153,27,1,1,0,NULL,'(704) 709-2944',NULL,'7047092944',2), - (154,27,1,0,0,NULL,'579-9306',NULL,'5799306',2), - (155,108,1,1,0,NULL,'478-3752',NULL,'4783752',1), - (156,75,1,1,0,NULL,'(465) 877-2813',NULL,'4658772813',2), - (157,42,1,1,0,NULL,'216-9882',NULL,'2169882',2), - (158,42,1,0,0,NULL,'290-9531',NULL,'2909531',1), - (159,38,1,1,0,NULL,'632-2241',NULL,'6322241',1), - (160,151,1,1,0,NULL,'564-5887',NULL,'5645887',2), - (161,151,1,0,0,NULL,'784-3769',NULL,'7843769',2), - (162,145,1,1,0,NULL,'(457) 598-5893',NULL,'4575985893',2), - (163,191,1,1,0,NULL,'279-5915',NULL,'2795915',2), - (164,13,1,1,0,NULL,'(514) 748-4814',NULL,'5147484814',1), - (165,13,1,0,0,NULL,'(632) 471-6768',NULL,'6324716768',1), - (166,41,1,1,0,NULL,'(521) 447-9220',NULL,'5214479220',1), - (167,41,1,0,0,NULL,'276-7516',NULL,'2767516',2), - (168,71,1,1,0,NULL,'640-5187',NULL,'6405187',1), - (169,25,1,1,0,NULL,'852-7798',NULL,'8527798',1), - (170,25,1,0,0,NULL,'277-7950',NULL,'2777950',1), - (171,92,1,1,0,NULL,'(475) 443-2769',NULL,'4754432769',1), - (172,92,1,0,0,NULL,'645-2329',NULL,'6452329',2), - (173,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), - (174,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), - (175,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); + (1,31,1,1,0,NULL,'701-8326',NULL,'7018326',1), + (2,25,1,1,0,NULL,'(561) 723-5834',NULL,'5617235834',2), + (3,25,1,0,0,NULL,'(214) 874-3538',NULL,'2148743538',1), + (4,35,1,1,0,NULL,'(371) 870-9746',NULL,'3718709746',2), + (5,142,1,1,0,NULL,'(383) 878-6066',NULL,'3838786066',1), + (6,142,1,0,0,NULL,'612-7608',NULL,'6127608',1), + (7,5,1,1,0,NULL,'836-9875',NULL,'8369875',1), + (8,5,1,0,0,NULL,'(476) 579-4329',NULL,'4765794329',2), + (9,54,1,1,0,NULL,'(781) 303-5891',NULL,'7813035891',2), + (10,82,1,1,0,NULL,'(380) 311-8610',NULL,'3803118610',2), + (11,82,1,0,0,NULL,'(881) 823-9927',NULL,'8818239927',2), + (12,9,1,1,0,NULL,'823-8440',NULL,'8238440',2), + (13,9,1,0,0,NULL,'(751) 878-9340',NULL,'7518789340',2), + (14,143,1,1,0,NULL,'609-4732',NULL,'6094732',2), + (15,143,1,0,0,NULL,'(851) 855-2107',NULL,'8518552107',2), + (16,78,1,1,0,NULL,'259-3009',NULL,'2593009',2), + (17,78,1,0,0,NULL,'(489) 221-8298',NULL,'4892218298',2), + (18,173,1,1,0,NULL,'298-2873',NULL,'2982873',2), + (19,173,1,0,0,NULL,'507-5321',NULL,'5075321',2), + (20,186,1,1,0,NULL,'(692) 738-5997',NULL,'6927385997',2), + (21,127,1,1,0,NULL,'(596) 782-2345',NULL,'5967822345',2), + (22,127,1,0,0,NULL,'(793) 307-2359',NULL,'7933072359',2), + (23,101,1,1,0,NULL,'(580) 815-9336',NULL,'5808159336',2), + (24,101,1,0,0,NULL,'(425) 772-7439',NULL,'4257727439',2), + (25,30,1,1,0,NULL,'406-5173',NULL,'4065173',1), + (26,30,1,0,0,NULL,'(377) 427-8722',NULL,'3774278722',1), + (27,89,1,1,0,NULL,'889-6983',NULL,'8896983',1), + (28,89,1,0,0,NULL,'751-6212',NULL,'7516212',2), + (29,194,1,1,0,NULL,'(842) 838-3758',NULL,'8428383758',2), + (30,194,1,0,0,NULL,'(369) 362-6537',NULL,'3693626537',2), + (31,136,1,1,0,NULL,'(685) 284-2451',NULL,'6852842451',1), + (32,136,1,0,0,NULL,'830-5972',NULL,'8305972',2), + (33,129,1,1,0,NULL,'(278) 577-6073',NULL,'2785776073',1), + (34,157,1,1,0,NULL,'452-1042',NULL,'4521042',1), + (35,172,1,1,0,NULL,'430-7484',NULL,'4307484',1), + (36,197,1,1,0,NULL,'578-3660',NULL,'5783660',2), + (37,197,1,0,0,NULL,'(746) 349-8797',NULL,'7463498797',1), + (38,185,1,1,0,NULL,'(468) 598-9717',NULL,'4685989717',2), + (39,185,1,0,0,NULL,'(239) 246-8389',NULL,'2392468389',2), + (40,132,1,1,0,NULL,'752-6132',NULL,'7526132',1), + (41,132,1,0,0,NULL,'(421) 637-1571',NULL,'4216371571',2), + (42,94,1,1,0,NULL,'425-1925',NULL,'4251925',1), + (43,11,1,1,0,NULL,'439-4637',NULL,'4394637',1), + (44,11,1,0,0,NULL,'411-7439',NULL,'4117439',2), + (45,178,1,1,0,NULL,'(772) 371-1531',NULL,'7723711531',1), + (46,144,1,1,0,NULL,'481-6839',NULL,'4816839',1), + (47,201,1,1,0,NULL,'(565) 235-7766',NULL,'5652357766',2), + (48,201,1,0,0,NULL,'(593) 665-8270',NULL,'5936658270',2), + (49,8,1,1,0,NULL,'859-2182',NULL,'8592182',2), + (50,33,1,1,0,NULL,'800-2321',NULL,'8002321',1), + (51,153,1,1,0,NULL,'(784) 658-5457',NULL,'7846585457',1), + (52,153,1,0,0,NULL,'627-6722',NULL,'6276722',2), + (53,120,1,1,0,NULL,'292-2860',NULL,'2922860',1), + (54,120,1,0,0,NULL,'468-1106',NULL,'4681106',2), + (55,169,1,1,0,NULL,'363-1993',NULL,'3631993',1), + (56,130,1,1,0,NULL,'542-5373',NULL,'5425373',1), + (57,28,1,1,0,NULL,'862-4570',NULL,'8624570',2), + (58,17,1,1,0,NULL,'(245) 434-1599',NULL,'2454341599',1), + (59,38,1,1,0,NULL,'(613) 348-5759',NULL,'6133485759',2), + (60,38,1,0,0,NULL,'(712) 372-4759',NULL,'7123724759',2), + (61,174,1,1,0,NULL,'(434) 223-4524',NULL,'4342234524',1), + (62,174,1,0,0,NULL,'247-9687',NULL,'2479687',2), + (63,113,1,1,0,NULL,'857-6594',NULL,'8576594',1), + (64,71,1,1,0,NULL,'414-8952',NULL,'4148952',1), + (65,71,1,0,0,NULL,'764-9546',NULL,'7649546',2), + (66,56,1,1,0,NULL,'(296) 887-3997',NULL,'2968873997',1), + (67,171,1,1,0,NULL,'(271) 495-5559',NULL,'2714955559',1), + (68,171,1,0,0,NULL,'(733) 578-6411',NULL,'7335786411',2), + (69,29,1,1,0,NULL,'494-3776',NULL,'4943776',2), + (70,29,1,0,0,NULL,'413-1135',NULL,'4131135',1), + (71,138,1,1,0,NULL,'278-9104',NULL,'2789104',1), + (72,145,1,1,0,NULL,'334-7938',NULL,'3347938',2), + (73,107,1,1,0,NULL,'(722) 383-3115',NULL,'7223833115',1), + (74,107,1,0,0,NULL,'(535) 772-4758',NULL,'5357724758',1), + (75,105,1,1,0,NULL,'(498) 296-3018',NULL,'4982963018',1), + (76,167,1,1,0,NULL,'224-2691',NULL,'2242691',2), + (77,167,1,0,0,NULL,'(865) 340-9624',NULL,'8653409624',1), + (78,37,1,1,0,NULL,'846-3229',NULL,'8463229',2), + (79,37,1,0,0,NULL,'704-8850',NULL,'7048850',2), + (80,27,1,1,0,NULL,'(811) 430-2028',NULL,'8114302028',2), + (81,40,1,1,0,NULL,'(515) 357-5489',NULL,'5153575489',1), + (82,40,1,0,0,NULL,'692-6797',NULL,'6926797',2), + (83,184,1,1,0,NULL,'(556) 507-5924',NULL,'5565075924',1), + (84,184,1,0,0,NULL,'738-7531',NULL,'7387531',2), + (85,102,1,1,0,NULL,'(885) 386-6877',NULL,'8853866877',1), + (86,102,1,0,0,NULL,'(807) 355-3320',NULL,'8073553320',1), + (87,108,1,1,0,NULL,'479-5380',NULL,'4795380',2), + (88,188,1,1,0,NULL,'(496) 577-5005',NULL,'4965775005',2), + (89,188,1,0,0,NULL,'310-9165',NULL,'3109165',1), + (90,119,1,1,0,NULL,'(476) 320-7474',NULL,'4763207474',1), + (91,119,1,0,0,NULL,'(329) 447-8458',NULL,'3294478458',1), + (92,141,1,1,0,NULL,'880-8053',NULL,'8808053',1), + (93,141,1,0,0,NULL,'(859) 278-9294',NULL,'8592789294',1), + (94,176,1,1,0,NULL,'(560) 309-3969',NULL,'5603093969',2), + (95,151,1,1,0,NULL,'(619) 444-1535',NULL,'6194441535',2), + (96,151,1,0,0,NULL,'(482) 747-9033',NULL,'4827479033',1), + (97,20,1,1,0,NULL,'362-2214',NULL,'3622214',2), + (98,20,1,0,0,NULL,'438-4004',NULL,'4384004',1), + (99,49,1,1,0,NULL,'798-8766',NULL,'7988766',2), + (100,49,1,0,0,NULL,'775-7678',NULL,'7757678',1), + (101,200,1,1,0,NULL,'503-9866',NULL,'5039866',1), + (102,200,1,0,0,NULL,'(289) 816-8906',NULL,'2898168906',2), + (103,125,1,1,0,NULL,'387-7137',NULL,'3877137',2), + (104,55,1,1,0,NULL,'(391) 528-2746',NULL,'3915282746',2), + (105,164,1,1,0,NULL,'353-1272',NULL,'3531272',2), + (106,164,1,0,0,NULL,'470-5909',NULL,'4705909',2), + (107,193,1,1,0,NULL,'714-8765',NULL,'7148765',1), + (108,193,1,0,0,NULL,'(285) 824-3376',NULL,'2858243376',1), + (109,44,1,1,0,NULL,'(344) 649-2733',NULL,'3446492733',1), + (110,44,1,0,0,NULL,'(366) 835-9590',NULL,'3668359590',1), + (111,60,1,1,0,NULL,'363-2460',NULL,'3632460',2), + (112,60,1,0,0,NULL,'216-8190',NULL,'2168190',2), + (113,84,1,1,0,NULL,'472-6165',NULL,'4726165',1), + (114,84,1,0,0,NULL,'428-9663',NULL,'4289663',2), + (115,109,1,1,0,NULL,'510-6627',NULL,'5106627',2), + (116,109,1,0,0,NULL,'243-7513',NULL,'2437513',1), + (117,76,1,1,0,NULL,'(459) 671-5070',NULL,'4596715070',2), + (118,76,1,0,0,NULL,'(765) 787-7486',NULL,'7657877486',2), + (119,149,1,1,0,NULL,'331-1328',NULL,'3311328',2), + (120,74,1,1,0,NULL,'(374) 251-1719',NULL,'3742511719',1), + (121,140,1,1,0,NULL,'651-1898',NULL,'6511898',2), + (122,163,1,1,0,NULL,'(626) 322-3211',NULL,'6263223211',2), + (123,66,1,1,0,NULL,'(724) 450-1369',NULL,'7244501369',2), + (124,21,1,1,0,NULL,'(536) 578-2919',NULL,'5365782919',1), + (125,21,1,0,0,NULL,'(584) 872-8621',NULL,'5848728621',2), + (126,14,1,1,0,NULL,'(568) 369-5716',NULL,'5683695716',2), + (127,14,1,0,0,NULL,'(330) 403-9152',NULL,'3304039152',1), + (128,170,1,1,0,NULL,'647-9420',NULL,'6479420',2), + (129,170,1,0,0,NULL,'458-3219',NULL,'4583219',2), + (130,124,1,1,0,NULL,'(632) 454-8571',NULL,'6324548571',1), + (131,124,1,0,0,NULL,'(828) 768-4009',NULL,'8287684009',2), + (132,199,1,1,0,NULL,'708-5459',NULL,'7085459',1), + (133,112,1,1,0,NULL,'(577) 229-6716',NULL,'5772296716',1), + (134,104,1,1,0,NULL,'(785) 655-3220',NULL,'7856553220',2), + (135,110,1,1,0,NULL,'545-3656',NULL,'5453656',2), + (136,110,1,0,0,NULL,'460-7083',NULL,'4607083',2), + (137,100,1,1,0,NULL,'747-4183',NULL,'7474183',1), + (138,100,1,0,0,NULL,'(767) 535-3474',NULL,'7675353474',1), + (139,160,1,1,0,NULL,'273-8785',NULL,'2738785',1), + (140,57,1,1,0,NULL,'(807) 566-1513',NULL,'8075661513',2), + (141,6,1,1,0,NULL,'521-4662',NULL,'5214662',1), + (142,6,1,0,0,NULL,'(797) 575-5372',NULL,'7975755372',1), + (143,62,1,1,0,NULL,'851-5822',NULL,'8515822',1), + (144,62,1,0,0,NULL,'371-2426',NULL,'3712426',2), + (145,137,1,1,0,NULL,'855-6543',NULL,'8556543',1), + (146,137,1,0,0,NULL,'757-5565',NULL,'7575565',2), + (147,99,1,1,0,NULL,'(824) 300-5139',NULL,'8243005139',1), + (148,116,1,1,0,NULL,'(218) 349-9660',NULL,'2183499660',2), + (149,180,1,1,0,NULL,'683-4985',NULL,'6834985',1), + (150,180,1,0,0,NULL,'540-9753',NULL,'5409753',1), + (151,114,1,1,0,NULL,'574-9685',NULL,'5749685',1), + (152,114,1,0,0,NULL,'877-1810',NULL,'8771810',2), + (153,32,1,1,0,NULL,'(327) 275-4451',NULL,'3272754451',2), + (154,18,1,1,0,NULL,'270-8573',NULL,'2708573',1), + (155,90,1,1,0,NULL,'(732) 233-1502',NULL,'7322331502',2), + (156,39,1,1,0,NULL,'(297) 642-7386',NULL,'2976427386',1), + (157,39,1,0,0,NULL,'392-3136',NULL,'3923136',2), + (158,41,1,1,0,NULL,'732-3802',NULL,'7323802',2), + (159,121,1,1,0,NULL,'518-7925',NULL,'5187925',1), + (160,121,1,0,0,NULL,'582-8517',NULL,'5828517',2), + (161,12,1,1,0,NULL,'891-1072',NULL,'8911072',2), + (162,12,1,0,0,NULL,'(298) 460-2344',NULL,'2984602344',2), + (163,61,1,1,0,NULL,'700-2528',NULL,'7002528',2), + (164,47,1,1,0,NULL,'660-6029',NULL,'6606029',1), + (165,181,1,1,0,NULL,'(739) 875-8399',NULL,'7398758399',2), + (166,181,1,0,0,NULL,'(217) 474-7210',NULL,'2174747210',1), + (167,85,1,1,0,NULL,'767-7183',NULL,'7677183',2), + (168,85,1,0,0,NULL,'(716) 432-5188',NULL,'7164325188',2), + (169,36,1,1,0,NULL,'(359) 373-1010',NULL,'3593731010',1), + (170,36,1,0,0,NULL,'348-2045',NULL,'3482045',2), + (171,118,1,1,0,NULL,'519-9913',NULL,'5199913',1), + (172,118,1,0,0,NULL,'(566) 410-4236',NULL,'5664104236',1), + (173,152,1,1,0,NULL,'(630) 518-4681',NULL,'6305184681',2), + (174,152,1,0,0,NULL,'(480) 533-9631',NULL,'4805339631',2), + (175,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), + (176,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), + (177,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */; UNLOCK TABLES; @@ -7291,223 +7292,224 @@ UNLOCK TABLES; LOCK TABLES `civicrm_relationship` WRITE; /*!40000 ALTER TABLE `civicrm_relationship` DISABLE KEYS */; INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`, `created_date`, `modified_date`) VALUES - (1,66,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (2,149,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (3,66,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (4,149,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (5,149,66,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (6,46,200,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (7,66,200,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (8,149,200,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (9,163,200,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (10,46,163,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (11,10,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (12,152,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (13,10,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (14,152,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (15,152,10,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (16,184,14,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (17,10,14,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (18,152,14,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (19,18,14,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (20,184,18,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (21,57,63,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (22,126,63,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (23,57,87,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (24,126,87,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (25,126,57,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (26,87,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (27,57,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (28,126,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (29,63,52,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (30,87,63,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (31,93,23,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (32,29,23,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (33,93,175,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (34,29,175,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (35,29,93,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (36,175,6,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (37,93,6,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (38,29,6,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (39,23,6,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (40,175,23,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (41,40,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (42,136,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (43,40,101,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (44,136,101,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (45,136,40,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (46,101,11,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (47,40,11,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (48,136,11,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (49,194,11,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (50,101,194,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (51,154,85,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (52,162,85,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (53,154,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (54,162,62,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (55,162,154,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (56,62,139,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (57,154,139,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (58,162,139,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (59,85,139,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (60,62,85,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (61,58,103,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (62,131,103,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (63,58,3,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (64,131,3,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (65,131,58,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (66,3,130,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (67,58,130,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (68,131,130,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (69,103,130,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (70,3,103,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (71,60,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (72,158,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (73,60,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (74,158,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (75,158,60,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (76,22,124,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (77,60,124,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (78,158,124,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (79,84,124,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (80,22,84,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (81,99,65,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (82,9,65,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (83,99,73,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (84,9,73,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (85,9,99,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (86,73,147,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (87,99,147,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (88,9,147,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (89,65,147,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (90,73,65,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (91,80,82,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (92,159,82,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (93,80,186,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (94,159,186,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (95,159,80,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (96,186,107,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (97,80,107,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (98,159,107,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (99,82,107,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (100,186,82,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (101,187,45,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (102,141,45,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (103,187,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (104,141,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (105,141,187,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (106,48,161,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (107,187,161,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (108,141,161,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (109,45,161,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (110,48,45,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (111,8,157,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (112,140,157,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (113,8,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (114,140,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (115,140,8,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (116,128,59,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (117,8,59,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (118,140,59,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (119,157,59,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (120,128,157,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (121,178,144,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (122,127,144,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (123,178,4,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (124,127,4,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (125,127,178,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (126,4,117,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (127,178,117,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (128,127,117,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (129,144,117,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (130,4,144,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (131,34,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (132,193,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (133,34,56,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (134,193,56,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (135,193,34,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (136,56,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (137,34,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (138,193,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (139,67,88,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (140,56,67,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (141,79,77,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (142,49,77,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (143,79,39,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (144,49,39,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (145,49,79,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (146,39,135,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (147,79,135,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (148,49,135,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (149,77,135,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (150,39,77,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (151,173,172,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (152,27,172,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (153,173,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (154,27,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (155,27,173,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (156,137,132,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (157,173,132,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (158,27,132,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (159,172,132,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (160,137,172,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (161,134,69,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (162,75,69,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (163,134,108,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (164,75,108,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (165,75,134,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (166,108,76,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (167,134,76,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (168,75,76,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (169,69,76,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (170,108,69,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (171,151,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (172,176,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (173,151,38,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (174,176,38,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (175,176,151,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (176,38,21,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:32','2023-10-07 01:51:32'), - (177,151,21,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (178,176,21,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (179,42,21,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (180,38,42,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (181,13,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (182,41,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (183,13,191,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (184,41,191,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (185,41,13,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (186,191,183,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (187,13,183,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (188,41,183,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (189,145,183,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (190,191,145,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (191,28,71,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (192,92,71,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (193,28,25,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (194,92,25,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (195,92,28,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (196,25,148,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (197,28,148,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (198,92,148,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (199,71,148,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (200,25,71,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (201,57,17,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (202,69,19,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (203,194,31,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (204,75,51,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (205,180,53,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (206,120,64,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (207,159,74,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (208,45,111,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (209,136,112,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (210,12,118,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (211,58,121,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (212,104,133,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (213,79,150,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (214,54,166,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (215,169,171,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (216,187,174,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'), - (217,122,190,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-07 01:51:33','2023-10-07 01:51:33'); + (1,24,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (2,189,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (3,24,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (4,189,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (5,189,24,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (6,16,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (7,24,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (8,189,58,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (9,86,58,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (10,16,86,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (11,151,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (12,20,141,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (13,151,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (14,20,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (15,20,151,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (16,176,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (17,151,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (18,20,190,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (19,141,190,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (20,176,141,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (21,125,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (22,55,49,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (23,125,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (24,55,200,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (25,55,125,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (26,200,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (27,125,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (28,55,155,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (29,49,155,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (30,200,49,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (31,34,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (32,164,150,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (33,34,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (34,164,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (35,164,34,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (36,179,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (37,34,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (38,164,26,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (39,150,26,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (40,179,150,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (41,44,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (42,60,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (43,44,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (44,60,193,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (45,60,44,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (46,193,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (47,44,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (48,60,53,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (49,183,53,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (50,193,183,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (51,76,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (52,126,84,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (53,76,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (54,126,109,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (55,126,76,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (56,109,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (57,76,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (58,126,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (59,84,156,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (60,109,84,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (61,147,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (62,74,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (63,147,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (64,74,149,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (65,74,147,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (66,149,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (67,147,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (68,74,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (69,46,131,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (70,149,46,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (71,162,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (72,66,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (73,162,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (74,66,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (75,66,162,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (76,163,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (77,162,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (78,66,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (79,140,10,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (80,163,140,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (81,170,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (82,45,21,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (83,170,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (84,45,14,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (85,45,170,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (86,14,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (87,170,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (88,45,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (89,21,177,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (90,14,21,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (91,112,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (92,79,124,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (93,112,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (94,79,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (95,79,112,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (96,199,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (97,112,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (98,79,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (99,124,3,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (100,199,124,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (101,104,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (102,92,48,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (103,104,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (104,92,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (105,92,104,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (106,91,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (107,104,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (108,92,191,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (109,48,191,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (110,91,48,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (111,160,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (112,57,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (113,160,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (114,57,100,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (115,57,160,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (116,100,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (117,160,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (118,57,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (119,110,134,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (120,100,110,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (121,13,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (122,62,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (123,13,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (124,62,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (125,62,13,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (126,6,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (127,13,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (128,62,73,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (129,198,73,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (130,6,198,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (131,99,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (132,116,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (133,99,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (134,116,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (135,116,99,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (136,137,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (137,99,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (138,116,88,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (139,15,88,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (140,137,15,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (141,114,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (142,32,180,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (143,114,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (144,32,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (145,32,114,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (146,182,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (147,114,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (148,32,23,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (149,180,23,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (150,182,180,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (151,39,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (152,41,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (153,39,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (154,41,90,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (155,41,39,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (156,90,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (157,39,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (158,41,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (159,18,51,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (160,90,18,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (161,196,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (162,195,2,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (163,196,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (164,195,121,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (165,195,196,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (166,121,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (167,196,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (168,195,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (169,2,43,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (170,121,2,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (171,61,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (172,63,154,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (173,61,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (174,63,12,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (175,63,61,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (176,12,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (177,61,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (178,63,75,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (179,154,75,7,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (180,12,154,2,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (181,175,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (182,85,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (183,175,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (184,85,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (185,85,175,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (186,181,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (187,175,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (188,85,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (189,47,65,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (190,181,47,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (191,111,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (192,152,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (193,111,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (194,152,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (195,152,111,4,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (196,118,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (197,111,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (198,152,159,8,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (199,36,159,7,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (200,118,36,2,NULL,NULL,0,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (201,15,7,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (202,129,19,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (203,33,22,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (204,74,50,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (205,109,52,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (206,185,59,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (207,184,64,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (208,76,67,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (209,85,68,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (210,4,69,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (211,81,77,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (212,187,103,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (213,18,122,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (214,72,133,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (215,115,135,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (216,197,139,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (217,178,146,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'), + (218,96,148,5,NULL,NULL,1,NULL,0,0,NULL,'2023-10-19 21:22:30','2023-10-19 21:22:30'); /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */; UNLOCK TABLES; @@ -7518,440 +7520,442 @@ UNLOCK TABLES; LOCK TABLES `civicrm_relationship_cache` WRITE; /*!40000 ALTER TABLE `civicrm_relationship_cache` DISABLE KEYS */; INSERT INTO `civicrm_relationship_cache` (`id`, `relationship_id`, `relationship_type_id`, `orientation`, `near_contact_id`, `near_relation`, `far_contact_id`, `far_relation`, `is_active`, `start_date`, `end_date`, `case_id`) VALUES - (1,1,1,'a_b',66,'Child of',163,'Parent of',1,NULL,NULL,NULL), - (2,1,1,'b_a',163,'Parent of',66,'Child of',1,NULL,NULL,NULL), - (3,2,1,'a_b',149,'Child of',163,'Parent of',1,NULL,NULL,NULL), - (4,2,1,'b_a',163,'Parent of',149,'Child of',1,NULL,NULL,NULL), - (5,3,1,'a_b',66,'Child of',46,'Parent of',1,NULL,NULL,NULL), - (6,3,1,'b_a',46,'Parent of',66,'Child of',1,NULL,NULL,NULL), - (7,4,1,'a_b',149,'Child of',46,'Parent of',1,NULL,NULL,NULL), - (8,4,1,'b_a',46,'Parent of',149,'Child of',1,NULL,NULL,NULL), - (9,5,4,'a_b',149,'Sibling of',66,'Sibling of',1,NULL,NULL,NULL), - (10,5,4,'b_a',66,'Sibling of',149,'Sibling of',1,NULL,NULL,NULL), - (11,6,8,'a_b',46,'Household Member of',200,'Household Member is',1,NULL,NULL,NULL), - (12,6,8,'b_a',200,'Household Member is',46,'Household Member of',1,NULL,NULL,NULL), - (13,7,8,'a_b',66,'Household Member of',200,'Household Member is',1,NULL,NULL,NULL), - (14,7,8,'b_a',200,'Household Member is',66,'Household Member of',1,NULL,NULL,NULL), - (15,8,8,'a_b',149,'Household Member of',200,'Household Member is',1,NULL,NULL,NULL), - (16,8,8,'b_a',200,'Household Member is',149,'Household Member of',1,NULL,NULL,NULL), - (17,9,7,'a_b',163,'Head of Household for',200,'Head of Household is',0,NULL,NULL,NULL), - (18,9,7,'b_a',200,'Head of Household is',163,'Head of Household for',0,NULL,NULL,NULL), - (19,10,2,'a_b',46,'Spouse of',163,'Spouse of',0,NULL,NULL,NULL), - (20,10,2,'b_a',163,'Spouse of',46,'Spouse of',0,NULL,NULL,NULL), - (21,11,1,'a_b',10,'Child of',18,'Parent of',1,NULL,NULL,NULL), - (22,11,1,'b_a',18,'Parent of',10,'Child of',1,NULL,NULL,NULL), - (23,12,1,'a_b',152,'Child of',18,'Parent of',1,NULL,NULL,NULL), - (24,12,1,'b_a',18,'Parent of',152,'Child of',1,NULL,NULL,NULL), - (25,13,1,'a_b',10,'Child of',184,'Parent of',1,NULL,NULL,NULL), - (26,13,1,'b_a',184,'Parent of',10,'Child of',1,NULL,NULL,NULL), - (27,14,1,'a_b',152,'Child of',184,'Parent of',1,NULL,NULL,NULL), - (28,14,1,'b_a',184,'Parent of',152,'Child of',1,NULL,NULL,NULL), - (29,15,4,'a_b',152,'Sibling of',10,'Sibling of',1,NULL,NULL,NULL), - (30,15,4,'b_a',10,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL), - (31,16,8,'a_b',184,'Household Member of',14,'Household Member is',1,NULL,NULL,NULL), - (32,16,8,'b_a',14,'Household Member is',184,'Household Member of',1,NULL,NULL,NULL), - (33,17,8,'a_b',10,'Household Member of',14,'Household Member is',1,NULL,NULL,NULL), - (34,17,8,'b_a',14,'Household Member is',10,'Household Member of',1,NULL,NULL,NULL), - (35,18,8,'a_b',152,'Household Member of',14,'Household Member is',1,NULL,NULL,NULL), - (36,18,8,'b_a',14,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL), - (37,19,7,'a_b',18,'Head of Household for',14,'Head of Household is',1,NULL,NULL,NULL), - (38,19,7,'b_a',14,'Head of Household is',18,'Head of Household for',1,NULL,NULL,NULL), - (39,20,2,'a_b',184,'Spouse of',18,'Spouse of',1,NULL,NULL,NULL), - (40,20,2,'b_a',18,'Spouse of',184,'Spouse of',1,NULL,NULL,NULL), - (41,21,1,'a_b',57,'Child of',63,'Parent of',1,NULL,NULL,NULL), - (42,21,1,'b_a',63,'Parent of',57,'Child of',1,NULL,NULL,NULL), - (43,22,1,'a_b',126,'Child of',63,'Parent of',1,NULL,NULL,NULL), - (44,22,1,'b_a',63,'Parent of',126,'Child of',1,NULL,NULL,NULL), - (45,23,1,'a_b',57,'Child of',87,'Parent of',1,NULL,NULL,NULL), - (46,23,1,'b_a',87,'Parent of',57,'Child of',1,NULL,NULL,NULL), - (47,24,1,'a_b',126,'Child of',87,'Parent of',1,NULL,NULL,NULL), - (48,24,1,'b_a',87,'Parent of',126,'Child of',1,NULL,NULL,NULL), - (49,25,4,'a_b',126,'Sibling of',57,'Sibling of',1,NULL,NULL,NULL), - (50,25,4,'b_a',57,'Sibling of',126,'Sibling of',1,NULL,NULL,NULL), - (51,26,8,'a_b',87,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (52,26,8,'b_a',52,'Household Member is',87,'Household Member of',1,NULL,NULL,NULL), - (53,27,8,'a_b',57,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (54,27,8,'b_a',52,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL), - (55,28,8,'a_b',126,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (56,28,8,'b_a',52,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL), - (57,29,7,'a_b',63,'Head of Household for',52,'Head of Household is',1,NULL,NULL,NULL), - (58,29,7,'b_a',52,'Head of Household is',63,'Head of Household for',1,NULL,NULL,NULL), - (59,30,2,'a_b',87,'Spouse of',63,'Spouse of',1,NULL,NULL,NULL), - (60,30,2,'b_a',63,'Spouse of',87,'Spouse of',1,NULL,NULL,NULL), - (61,31,1,'a_b',93,'Child of',23,'Parent of',1,NULL,NULL,NULL), - (62,31,1,'b_a',23,'Parent of',93,'Child of',1,NULL,NULL,NULL), - (63,32,1,'a_b',29,'Child of',23,'Parent of',1,NULL,NULL,NULL), - (64,32,1,'b_a',23,'Parent of',29,'Child of',1,NULL,NULL,NULL), - (65,33,1,'a_b',93,'Child of',175,'Parent of',1,NULL,NULL,NULL), - (66,33,1,'b_a',175,'Parent of',93,'Child of',1,NULL,NULL,NULL), - (67,34,1,'a_b',29,'Child of',175,'Parent of',1,NULL,NULL,NULL), - (68,34,1,'b_a',175,'Parent of',29,'Child of',1,NULL,NULL,NULL), - (69,35,4,'a_b',29,'Sibling of',93,'Sibling of',1,NULL,NULL,NULL), - (70,35,4,'b_a',93,'Sibling of',29,'Sibling of',1,NULL,NULL,NULL), - (71,36,8,'a_b',175,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL), - (72,36,8,'b_a',6,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL), - (73,37,8,'a_b',93,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL), - (74,37,8,'b_a',6,'Household Member is',93,'Household Member of',1,NULL,NULL,NULL), - (75,38,8,'a_b',29,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL), - (76,38,8,'b_a',6,'Household Member is',29,'Household Member of',1,NULL,NULL,NULL), - (77,39,7,'a_b',23,'Head of Household for',6,'Head of Household is',1,NULL,NULL,NULL), - (78,39,7,'b_a',6,'Head of Household is',23,'Head of Household for',1,NULL,NULL,NULL), - (79,40,2,'a_b',175,'Spouse of',23,'Spouse of',1,NULL,NULL,NULL), - (80,40,2,'b_a',23,'Spouse of',175,'Spouse of',1,NULL,NULL,NULL), - (81,41,1,'a_b',40,'Child of',194,'Parent of',1,NULL,NULL,NULL), - (82,41,1,'b_a',194,'Parent of',40,'Child of',1,NULL,NULL,NULL), - (83,42,1,'a_b',136,'Child of',194,'Parent of',1,NULL,NULL,NULL), - (84,42,1,'b_a',194,'Parent of',136,'Child of',1,NULL,NULL,NULL), - (85,43,1,'a_b',40,'Child of',101,'Parent of',1,NULL,NULL,NULL), - (86,43,1,'b_a',101,'Parent of',40,'Child of',1,NULL,NULL,NULL), - (87,44,1,'a_b',136,'Child of',101,'Parent of',1,NULL,NULL,NULL), - (88,44,1,'b_a',101,'Parent of',136,'Child of',1,NULL,NULL,NULL), - (89,45,4,'a_b',136,'Sibling of',40,'Sibling of',1,NULL,NULL,NULL), - (90,45,4,'b_a',40,'Sibling of',136,'Sibling of',1,NULL,NULL,NULL), - (91,46,8,'a_b',101,'Household Member of',11,'Household Member is',1,NULL,NULL,NULL), - (92,46,8,'b_a',11,'Household Member is',101,'Household Member of',1,NULL,NULL,NULL), - (93,47,8,'a_b',40,'Household Member of',11,'Household Member is',1,NULL,NULL,NULL), - (94,47,8,'b_a',11,'Household Member is',40,'Household Member of',1,NULL,NULL,NULL), - (95,48,8,'a_b',136,'Household Member of',11,'Household Member is',1,NULL,NULL,NULL), - (96,48,8,'b_a',11,'Household Member is',136,'Household Member of',1,NULL,NULL,NULL), - (97,49,7,'a_b',194,'Head of Household for',11,'Head of Household is',1,NULL,NULL,NULL), - (98,49,7,'b_a',11,'Head of Household is',194,'Head of Household for',1,NULL,NULL,NULL), - (99,50,2,'a_b',101,'Spouse of',194,'Spouse of',1,NULL,NULL,NULL), - (100,50,2,'b_a',194,'Spouse of',101,'Spouse of',1,NULL,NULL,NULL), - (101,51,1,'a_b',154,'Child of',85,'Parent of',1,NULL,NULL,NULL), - (102,51,1,'b_a',85,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (103,52,1,'a_b',162,'Child of',85,'Parent of',1,NULL,NULL,NULL), - (104,52,1,'b_a',85,'Parent of',162,'Child of',1,NULL,NULL,NULL), - (105,53,1,'a_b',154,'Child of',62,'Parent of',1,NULL,NULL,NULL), - (106,53,1,'b_a',62,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (107,54,1,'a_b',162,'Child of',62,'Parent of',1,NULL,NULL,NULL), - (108,54,1,'b_a',62,'Parent of',162,'Child of',1,NULL,NULL,NULL), - (109,55,4,'a_b',162,'Sibling of',154,'Sibling of',1,NULL,NULL,NULL), - (110,55,4,'b_a',154,'Sibling of',162,'Sibling of',1,NULL,NULL,NULL), - (111,56,8,'a_b',62,'Household Member of',139,'Household Member is',1,NULL,NULL,NULL), - (112,56,8,'b_a',139,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL), - (113,57,8,'a_b',154,'Household Member of',139,'Household Member is',1,NULL,NULL,NULL), - (114,57,8,'b_a',139,'Household Member is',154,'Household Member of',1,NULL,NULL,NULL), - (115,58,8,'a_b',162,'Household Member of',139,'Household Member is',1,NULL,NULL,NULL), - (116,58,8,'b_a',139,'Household Member is',162,'Household Member of',1,NULL,NULL,NULL), - (117,59,7,'a_b',85,'Head of Household for',139,'Head of Household is',0,NULL,NULL,NULL), - (118,59,7,'b_a',139,'Head of Household is',85,'Head of Household for',0,NULL,NULL,NULL), - (119,60,2,'a_b',62,'Spouse of',85,'Spouse of',0,NULL,NULL,NULL), - (120,60,2,'b_a',85,'Spouse of',62,'Spouse of',0,NULL,NULL,NULL), - (121,61,1,'a_b',58,'Child of',103,'Parent of',1,NULL,NULL,NULL), - (122,61,1,'b_a',103,'Parent of',58,'Child of',1,NULL,NULL,NULL), - (123,62,1,'a_b',131,'Child of',103,'Parent of',1,NULL,NULL,NULL), - (124,62,1,'b_a',103,'Parent of',131,'Child of',1,NULL,NULL,NULL), - (125,63,1,'a_b',58,'Child of',3,'Parent of',1,NULL,NULL,NULL), - (126,63,1,'b_a',3,'Parent of',58,'Child of',1,NULL,NULL,NULL), - (127,64,1,'a_b',131,'Child of',3,'Parent of',1,NULL,NULL,NULL), - (128,64,1,'b_a',3,'Parent of',131,'Child of',1,NULL,NULL,NULL), - (129,65,4,'a_b',131,'Sibling of',58,'Sibling of',1,NULL,NULL,NULL), - (130,65,4,'b_a',58,'Sibling of',131,'Sibling of',1,NULL,NULL,NULL), - (131,66,8,'a_b',3,'Household Member of',130,'Household Member is',1,NULL,NULL,NULL), - (132,66,8,'b_a',130,'Household Member is',3,'Household Member of',1,NULL,NULL,NULL), - (133,67,8,'a_b',58,'Household Member of',130,'Household Member is',1,NULL,NULL,NULL), - (134,67,8,'b_a',130,'Household Member is',58,'Household Member of',1,NULL,NULL,NULL), - (135,68,8,'a_b',131,'Household Member of',130,'Household Member is',1,NULL,NULL,NULL), - (136,68,8,'b_a',130,'Household Member is',131,'Household Member of',1,NULL,NULL,NULL), - (137,69,7,'a_b',103,'Head of Household for',130,'Head of Household is',1,NULL,NULL,NULL), - (138,69,7,'b_a',130,'Head of Household is',103,'Head of Household for',1,NULL,NULL,NULL), - (139,70,2,'a_b',3,'Spouse of',103,'Spouse of',1,NULL,NULL,NULL), - (140,70,2,'b_a',103,'Spouse of',3,'Spouse of',1,NULL,NULL,NULL), - (141,71,1,'a_b',60,'Child of',84,'Parent of',1,NULL,NULL,NULL), - (142,71,1,'b_a',84,'Parent of',60,'Child of',1,NULL,NULL,NULL), - (143,72,1,'a_b',158,'Child of',84,'Parent of',1,NULL,NULL,NULL), - (144,72,1,'b_a',84,'Parent of',158,'Child of',1,NULL,NULL,NULL), - (145,73,1,'a_b',60,'Child of',22,'Parent of',1,NULL,NULL,NULL), - (146,73,1,'b_a',22,'Parent of',60,'Child of',1,NULL,NULL,NULL), - (147,74,1,'a_b',158,'Child of',22,'Parent of',1,NULL,NULL,NULL), - (148,74,1,'b_a',22,'Parent of',158,'Child of',1,NULL,NULL,NULL), - (149,75,4,'a_b',158,'Sibling of',60,'Sibling of',1,NULL,NULL,NULL), - (150,75,4,'b_a',60,'Sibling of',158,'Sibling of',1,NULL,NULL,NULL), - (151,76,8,'a_b',22,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL), - (152,76,8,'b_a',124,'Household Member is',22,'Household Member of',1,NULL,NULL,NULL), - (153,77,8,'a_b',60,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL), - (154,77,8,'b_a',124,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL), - (155,78,8,'a_b',158,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL), - (156,78,8,'b_a',124,'Household Member is',158,'Household Member of',1,NULL,NULL,NULL), - (157,79,7,'a_b',84,'Head of Household for',124,'Head of Household is',1,NULL,NULL,NULL), - (158,79,7,'b_a',124,'Head of Household is',84,'Head of Household for',1,NULL,NULL,NULL), - (159,80,2,'a_b',22,'Spouse of',84,'Spouse of',1,NULL,NULL,NULL), - (160,80,2,'b_a',84,'Spouse of',22,'Spouse of',1,NULL,NULL,NULL), - (161,81,1,'a_b',99,'Child of',65,'Parent of',1,NULL,NULL,NULL), - (162,81,1,'b_a',65,'Parent of',99,'Child of',1,NULL,NULL,NULL), - (163,82,1,'a_b',9,'Child of',65,'Parent of',1,NULL,NULL,NULL), - (164,82,1,'b_a',65,'Parent of',9,'Child of',1,NULL,NULL,NULL), - (165,83,1,'a_b',99,'Child of',73,'Parent of',1,NULL,NULL,NULL), - (166,83,1,'b_a',73,'Parent of',99,'Child of',1,NULL,NULL,NULL), - (167,84,1,'a_b',9,'Child of',73,'Parent of',1,NULL,NULL,NULL), - (168,84,1,'b_a',73,'Parent of',9,'Child of',1,NULL,NULL,NULL), - (169,85,4,'a_b',9,'Sibling of',99,'Sibling of',1,NULL,NULL,NULL), - (170,85,4,'b_a',99,'Sibling of',9,'Sibling of',1,NULL,NULL,NULL), - (171,86,8,'a_b',73,'Household Member of',147,'Household Member is',1,NULL,NULL,NULL), - (172,86,8,'b_a',147,'Household Member is',73,'Household Member of',1,NULL,NULL,NULL), - (173,87,8,'a_b',99,'Household Member of',147,'Household Member is',1,NULL,NULL,NULL), - (174,87,8,'b_a',147,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL), - (175,88,8,'a_b',9,'Household Member of',147,'Household Member is',1,NULL,NULL,NULL), - (176,88,8,'b_a',147,'Household Member is',9,'Household Member of',1,NULL,NULL,NULL), - (177,89,7,'a_b',65,'Head of Household for',147,'Head of Household is',1,NULL,NULL,NULL), - (178,89,7,'b_a',147,'Head of Household is',65,'Head of Household for',1,NULL,NULL,NULL), - (179,90,2,'a_b',73,'Spouse of',65,'Spouse of',1,NULL,NULL,NULL), - (180,90,2,'b_a',65,'Spouse of',73,'Spouse of',1,NULL,NULL,NULL), - (181,91,1,'a_b',80,'Child of',82,'Parent of',1,NULL,NULL,NULL), - (182,91,1,'b_a',82,'Parent of',80,'Child of',1,NULL,NULL,NULL), - (183,92,1,'a_b',159,'Child of',82,'Parent of',1,NULL,NULL,NULL), - (184,92,1,'b_a',82,'Parent of',159,'Child of',1,NULL,NULL,NULL), - (185,93,1,'a_b',80,'Child of',186,'Parent of',1,NULL,NULL,NULL), - (186,93,1,'b_a',186,'Parent of',80,'Child of',1,NULL,NULL,NULL), - (187,94,1,'a_b',159,'Child of',186,'Parent of',1,NULL,NULL,NULL), - (188,94,1,'b_a',186,'Parent of',159,'Child of',1,NULL,NULL,NULL), - (189,95,4,'a_b',159,'Sibling of',80,'Sibling of',1,NULL,NULL,NULL), - (190,95,4,'b_a',80,'Sibling of',159,'Sibling of',1,NULL,NULL,NULL), - (191,96,8,'a_b',186,'Household Member of',107,'Household Member is',1,NULL,NULL,NULL), - (192,96,8,'b_a',107,'Household Member is',186,'Household Member of',1,NULL,NULL,NULL), - (193,97,8,'a_b',80,'Household Member of',107,'Household Member is',1,NULL,NULL,NULL), - (194,97,8,'b_a',107,'Household Member is',80,'Household Member of',1,NULL,NULL,NULL), - (195,98,8,'a_b',159,'Household Member of',107,'Household Member is',1,NULL,NULL,NULL), - (196,98,8,'b_a',107,'Household Member is',159,'Household Member of',1,NULL,NULL,NULL), - (197,99,7,'a_b',82,'Head of Household for',107,'Head of Household is',0,NULL,NULL,NULL), - (198,99,7,'b_a',107,'Head of Household is',82,'Head of Household for',0,NULL,NULL,NULL), - (199,100,2,'a_b',186,'Spouse of',82,'Spouse of',0,NULL,NULL,NULL), - (200,100,2,'b_a',82,'Spouse of',186,'Spouse of',0,NULL,NULL,NULL), - (201,101,1,'a_b',187,'Child of',45,'Parent of',1,NULL,NULL,NULL), - (202,101,1,'b_a',45,'Parent of',187,'Child of',1,NULL,NULL,NULL), - (203,102,1,'a_b',141,'Child of',45,'Parent of',1,NULL,NULL,NULL), - (204,102,1,'b_a',45,'Parent of',141,'Child of',1,NULL,NULL,NULL), - (205,103,1,'a_b',187,'Child of',48,'Parent of',1,NULL,NULL,NULL), - (206,103,1,'b_a',48,'Parent of',187,'Child of',1,NULL,NULL,NULL), - (207,104,1,'a_b',141,'Child of',48,'Parent of',1,NULL,NULL,NULL), - (208,104,1,'b_a',48,'Parent of',141,'Child of',1,NULL,NULL,NULL), - (209,105,4,'a_b',141,'Sibling of',187,'Sibling of',1,NULL,NULL,NULL), - (210,105,4,'b_a',187,'Sibling of',141,'Sibling of',1,NULL,NULL,NULL), - (211,106,8,'a_b',48,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL), - (212,106,8,'b_a',161,'Household Member is',48,'Household Member of',1,NULL,NULL,NULL), - (213,107,8,'a_b',187,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL), - (214,107,8,'b_a',161,'Household Member is',187,'Household Member of',1,NULL,NULL,NULL), - (215,108,8,'a_b',141,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL), - (216,108,8,'b_a',161,'Household Member is',141,'Household Member of',1,NULL,NULL,NULL), - (217,109,7,'a_b',45,'Head of Household for',161,'Head of Household is',1,NULL,NULL,NULL), - (218,109,7,'b_a',161,'Head of Household is',45,'Head of Household for',1,NULL,NULL,NULL), - (219,110,2,'a_b',48,'Spouse of',45,'Spouse of',1,NULL,NULL,NULL), - (220,110,2,'b_a',45,'Spouse of',48,'Spouse of',1,NULL,NULL,NULL), - (221,111,1,'a_b',8,'Child of',157,'Parent of',1,NULL,NULL,NULL), - (222,111,1,'b_a',157,'Parent of',8,'Child of',1,NULL,NULL,NULL), - (223,112,1,'a_b',140,'Child of',157,'Parent of',1,NULL,NULL,NULL), - (224,112,1,'b_a',157,'Parent of',140,'Child of',1,NULL,NULL,NULL), - (225,113,1,'a_b',8,'Child of',128,'Parent of',1,NULL,NULL,NULL), - (226,113,1,'b_a',128,'Parent of',8,'Child of',1,NULL,NULL,NULL), - (227,114,1,'a_b',140,'Child of',128,'Parent of',1,NULL,NULL,NULL), - (228,114,1,'b_a',128,'Parent of',140,'Child of',1,NULL,NULL,NULL), - (229,115,4,'a_b',140,'Sibling of',8,'Sibling of',1,NULL,NULL,NULL), - (230,115,4,'b_a',8,'Sibling of',140,'Sibling of',1,NULL,NULL,NULL), - (231,116,8,'a_b',128,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL), - (232,116,8,'b_a',59,'Household Member is',128,'Household Member of',1,NULL,NULL,NULL), - (233,117,8,'a_b',8,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL), - (234,117,8,'b_a',59,'Household Member is',8,'Household Member of',1,NULL,NULL,NULL), - (235,118,8,'a_b',140,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL), - (236,118,8,'b_a',59,'Household Member is',140,'Household Member of',1,NULL,NULL,NULL), - (237,119,7,'a_b',157,'Head of Household for',59,'Head of Household is',1,NULL,NULL,NULL), - (238,119,7,'b_a',59,'Head of Household is',157,'Head of Household for',1,NULL,NULL,NULL), - (239,120,2,'a_b',128,'Spouse of',157,'Spouse of',1,NULL,NULL,NULL), - (240,120,2,'b_a',157,'Spouse of',128,'Spouse of',1,NULL,NULL,NULL), - (241,121,1,'a_b',178,'Child of',144,'Parent of',1,NULL,NULL,NULL), - (242,121,1,'b_a',144,'Parent of',178,'Child of',1,NULL,NULL,NULL), - (243,122,1,'a_b',127,'Child of',144,'Parent of',1,NULL,NULL,NULL), - (244,122,1,'b_a',144,'Parent of',127,'Child of',1,NULL,NULL,NULL), - (245,123,1,'a_b',178,'Child of',4,'Parent of',1,NULL,NULL,NULL), - (246,123,1,'b_a',4,'Parent of',178,'Child of',1,NULL,NULL,NULL), - (247,124,1,'a_b',127,'Child of',4,'Parent of',1,NULL,NULL,NULL), - (248,124,1,'b_a',4,'Parent of',127,'Child of',1,NULL,NULL,NULL), - (249,125,4,'a_b',127,'Sibling of',178,'Sibling of',1,NULL,NULL,NULL), - (250,125,4,'b_a',178,'Sibling of',127,'Sibling of',1,NULL,NULL,NULL), - (251,126,8,'a_b',4,'Household Member of',117,'Household Member is',1,NULL,NULL,NULL), - (252,126,8,'b_a',117,'Household Member is',4,'Household Member of',1,NULL,NULL,NULL), - (253,127,8,'a_b',178,'Household Member of',117,'Household Member is',1,NULL,NULL,NULL), - (254,127,8,'b_a',117,'Household Member is',178,'Household Member of',1,NULL,NULL,NULL), - (255,128,8,'a_b',127,'Household Member of',117,'Household Member is',1,NULL,NULL,NULL), - (256,128,8,'b_a',117,'Household Member is',127,'Household Member of',1,NULL,NULL,NULL), - (257,129,7,'a_b',144,'Head of Household for',117,'Head of Household is',0,NULL,NULL,NULL), - (258,129,7,'b_a',117,'Head of Household is',144,'Head of Household for',0,NULL,NULL,NULL), - (259,130,2,'a_b',4,'Spouse of',144,'Spouse of',0,NULL,NULL,NULL), - (260,130,2,'b_a',144,'Spouse of',4,'Spouse of',0,NULL,NULL,NULL), - (261,131,1,'a_b',34,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (262,131,1,'b_a',67,'Parent of',34,'Child of',1,NULL,NULL,NULL), - (263,132,1,'a_b',193,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (264,132,1,'b_a',67,'Parent of',193,'Child of',1,NULL,NULL,NULL), - (265,133,1,'a_b',34,'Child of',56,'Parent of',1,NULL,NULL,NULL), - (266,133,1,'b_a',56,'Parent of',34,'Child of',1,NULL,NULL,NULL), - (267,134,1,'a_b',193,'Child of',56,'Parent of',1,NULL,NULL,NULL), - (268,134,1,'b_a',56,'Parent of',193,'Child of',1,NULL,NULL,NULL), - (269,135,4,'a_b',193,'Sibling of',34,'Sibling of',1,NULL,NULL,NULL), - (270,135,4,'b_a',34,'Sibling of',193,'Sibling of',1,NULL,NULL,NULL), - (271,136,8,'a_b',56,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), - (272,136,8,'b_a',88,'Household Member is',56,'Household Member of',1,NULL,NULL,NULL), - (273,137,8,'a_b',34,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), - (274,137,8,'b_a',88,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL), - (275,138,8,'a_b',193,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), - (276,138,8,'b_a',88,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL), - (277,139,7,'a_b',67,'Head of Household for',88,'Head of Household is',0,NULL,NULL,NULL), - (278,139,7,'b_a',88,'Head of Household is',67,'Head of Household for',0,NULL,NULL,NULL), - (279,140,2,'a_b',56,'Spouse of',67,'Spouse of',0,NULL,NULL,NULL), - (280,140,2,'b_a',67,'Spouse of',56,'Spouse of',0,NULL,NULL,NULL), - (281,141,1,'a_b',79,'Child of',77,'Parent of',1,NULL,NULL,NULL), - (282,141,1,'b_a',77,'Parent of',79,'Child of',1,NULL,NULL,NULL), - (283,142,1,'a_b',49,'Child of',77,'Parent of',1,NULL,NULL,NULL), - (284,142,1,'b_a',77,'Parent of',49,'Child of',1,NULL,NULL,NULL), - (285,143,1,'a_b',79,'Child of',39,'Parent of',1,NULL,NULL,NULL), - (286,143,1,'b_a',39,'Parent of',79,'Child of',1,NULL,NULL,NULL), - (287,144,1,'a_b',49,'Child of',39,'Parent of',1,NULL,NULL,NULL), - (288,144,1,'b_a',39,'Parent of',49,'Child of',1,NULL,NULL,NULL), - (289,145,4,'a_b',49,'Sibling of',79,'Sibling of',1,NULL,NULL,NULL), - (290,145,4,'b_a',79,'Sibling of',49,'Sibling of',1,NULL,NULL,NULL), - (291,146,8,'a_b',39,'Household Member of',135,'Household Member is',1,NULL,NULL,NULL), - (292,146,8,'b_a',135,'Household Member is',39,'Household Member of',1,NULL,NULL,NULL), - (293,147,8,'a_b',79,'Household Member of',135,'Household Member is',1,NULL,NULL,NULL), - (294,147,8,'b_a',135,'Household Member is',79,'Household Member of',1,NULL,NULL,NULL), - (295,148,8,'a_b',49,'Household Member of',135,'Household Member is',1,NULL,NULL,NULL), - (296,148,8,'b_a',135,'Household Member is',49,'Household Member of',1,NULL,NULL,NULL), - (297,149,7,'a_b',77,'Head of Household for',135,'Head of Household is',0,NULL,NULL,NULL), - (298,149,7,'b_a',135,'Head of Household is',77,'Head of Household for',0,NULL,NULL,NULL), - (299,150,2,'a_b',39,'Spouse of',77,'Spouse of',0,NULL,NULL,NULL), - (300,150,2,'b_a',77,'Spouse of',39,'Spouse of',0,NULL,NULL,NULL), - (301,151,1,'a_b',173,'Child of',172,'Parent of',1,NULL,NULL,NULL), - (302,151,1,'b_a',172,'Parent of',173,'Child of',1,NULL,NULL,NULL), - (303,152,1,'a_b',27,'Child of',172,'Parent of',1,NULL,NULL,NULL), - (304,152,1,'b_a',172,'Parent of',27,'Child of',1,NULL,NULL,NULL), - (305,153,1,'a_b',173,'Child of',137,'Parent of',1,NULL,NULL,NULL), - (306,153,1,'b_a',137,'Parent of',173,'Child of',1,NULL,NULL,NULL), - (307,154,1,'a_b',27,'Child of',137,'Parent of',1,NULL,NULL,NULL), - (308,154,1,'b_a',137,'Parent of',27,'Child of',1,NULL,NULL,NULL), - (309,155,4,'a_b',27,'Sibling of',173,'Sibling of',1,NULL,NULL,NULL), - (310,155,4,'b_a',173,'Sibling of',27,'Sibling of',1,NULL,NULL,NULL), - (311,156,8,'a_b',137,'Household Member of',132,'Household Member is',1,NULL,NULL,NULL), - (312,156,8,'b_a',132,'Household Member is',137,'Household Member of',1,NULL,NULL,NULL), - (313,157,8,'a_b',173,'Household Member of',132,'Household Member is',1,NULL,NULL,NULL), - (314,157,8,'b_a',132,'Household Member is',173,'Household Member of',1,NULL,NULL,NULL), - (315,158,8,'a_b',27,'Household Member of',132,'Household Member is',1,NULL,NULL,NULL), - (316,158,8,'b_a',132,'Household Member is',27,'Household Member of',1,NULL,NULL,NULL), - (317,159,7,'a_b',172,'Head of Household for',132,'Head of Household is',1,NULL,NULL,NULL), - (318,159,7,'b_a',132,'Head of Household is',172,'Head of Household for',1,NULL,NULL,NULL), - (319,160,2,'a_b',137,'Spouse of',172,'Spouse of',1,NULL,NULL,NULL), - (320,160,2,'b_a',172,'Spouse of',137,'Spouse of',1,NULL,NULL,NULL), - (321,161,1,'a_b',134,'Child of',69,'Parent of',1,NULL,NULL,NULL), - (322,161,1,'b_a',69,'Parent of',134,'Child of',1,NULL,NULL,NULL), - (323,162,1,'a_b',75,'Child of',69,'Parent of',1,NULL,NULL,NULL), - (324,162,1,'b_a',69,'Parent of',75,'Child of',1,NULL,NULL,NULL), - (325,163,1,'a_b',134,'Child of',108,'Parent of',1,NULL,NULL,NULL), - (326,163,1,'b_a',108,'Parent of',134,'Child of',1,NULL,NULL,NULL), - (327,164,1,'a_b',75,'Child of',108,'Parent of',1,NULL,NULL,NULL), - (328,164,1,'b_a',108,'Parent of',75,'Child of',1,NULL,NULL,NULL), - (329,165,4,'a_b',75,'Sibling of',134,'Sibling of',1,NULL,NULL,NULL), - (330,165,4,'b_a',134,'Sibling of',75,'Sibling of',1,NULL,NULL,NULL), - (331,166,8,'a_b',108,'Household Member of',76,'Household Member is',1,NULL,NULL,NULL), - (332,166,8,'b_a',76,'Household Member is',108,'Household Member of',1,NULL,NULL,NULL), - (333,167,8,'a_b',134,'Household Member of',76,'Household Member is',1,NULL,NULL,NULL), - (334,167,8,'b_a',76,'Household Member is',134,'Household Member of',1,NULL,NULL,NULL), - (335,168,8,'a_b',75,'Household Member of',76,'Household Member is',1,NULL,NULL,NULL), - (336,168,8,'b_a',76,'Household Member is',75,'Household Member of',1,NULL,NULL,NULL), - (337,169,7,'a_b',69,'Head of Household for',76,'Head of Household is',0,NULL,NULL,NULL), - (338,169,7,'b_a',76,'Head of Household is',69,'Head of Household for',0,NULL,NULL,NULL), - (339,170,2,'a_b',108,'Spouse of',69,'Spouse of',0,NULL,NULL,NULL), - (340,170,2,'b_a',69,'Spouse of',108,'Spouse of',0,NULL,NULL,NULL), - (341,171,1,'a_b',151,'Child of',42,'Parent of',1,NULL,NULL,NULL), - (342,171,1,'b_a',42,'Parent of',151,'Child of',1,NULL,NULL,NULL), - (343,172,1,'a_b',176,'Child of',42,'Parent of',1,NULL,NULL,NULL), - (344,172,1,'b_a',42,'Parent of',176,'Child of',1,NULL,NULL,NULL), - (345,173,1,'a_b',151,'Child of',38,'Parent of',1,NULL,NULL,NULL), - (346,173,1,'b_a',38,'Parent of',151,'Child of',1,NULL,NULL,NULL), - (347,174,1,'a_b',176,'Child of',38,'Parent of',1,NULL,NULL,NULL), - (348,174,1,'b_a',38,'Parent of',176,'Child of',1,NULL,NULL,NULL), - (349,175,4,'a_b',176,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL), - (350,175,4,'b_a',151,'Sibling of',176,'Sibling of',1,NULL,NULL,NULL), - (351,176,8,'a_b',38,'Household Member of',21,'Household Member is',1,NULL,NULL,NULL), - (352,176,8,'b_a',21,'Household Member is',38,'Household Member of',1,NULL,NULL,NULL), - (353,177,8,'a_b',151,'Household Member of',21,'Household Member is',1,NULL,NULL,NULL), - (354,177,8,'b_a',21,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL), - (355,178,8,'a_b',176,'Household Member of',21,'Household Member is',1,NULL,NULL,NULL), - (356,178,8,'b_a',21,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL), - (357,179,7,'a_b',42,'Head of Household for',21,'Head of Household is',1,NULL,NULL,NULL), - (358,179,7,'b_a',21,'Head of Household is',42,'Head of Household for',1,NULL,NULL,NULL), - (359,180,2,'a_b',38,'Spouse of',42,'Spouse of',1,NULL,NULL,NULL), - (360,180,2,'b_a',42,'Spouse of',38,'Spouse of',1,NULL,NULL,NULL), - (361,181,1,'a_b',13,'Child of',145,'Parent of',1,NULL,NULL,NULL), - (362,181,1,'b_a',145,'Parent of',13,'Child of',1,NULL,NULL,NULL), - (363,182,1,'a_b',41,'Child of',145,'Parent of',1,NULL,NULL,NULL), - (364,182,1,'b_a',145,'Parent of',41,'Child of',1,NULL,NULL,NULL), - (365,183,1,'a_b',13,'Child of',191,'Parent of',1,NULL,NULL,NULL), - (366,183,1,'b_a',191,'Parent of',13,'Child of',1,NULL,NULL,NULL), - (367,184,1,'a_b',41,'Child of',191,'Parent of',1,NULL,NULL,NULL), - (368,184,1,'b_a',191,'Parent of',41,'Child of',1,NULL,NULL,NULL), - (369,185,4,'a_b',41,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL), - (370,185,4,'b_a',13,'Sibling of',41,'Sibling of',1,NULL,NULL,NULL), - (371,186,8,'a_b',191,'Household Member of',183,'Household Member is',1,NULL,NULL,NULL), - (372,186,8,'b_a',183,'Household Member is',191,'Household Member of',1,NULL,NULL,NULL), - (373,187,8,'a_b',13,'Household Member of',183,'Household Member is',1,NULL,NULL,NULL), - (374,187,8,'b_a',183,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL), - (375,188,8,'a_b',41,'Household Member of',183,'Household Member is',1,NULL,NULL,NULL), - (376,188,8,'b_a',183,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL), - (377,189,7,'a_b',145,'Head of Household for',183,'Head of Household is',1,NULL,NULL,NULL), - (378,189,7,'b_a',183,'Head of Household is',145,'Head of Household for',1,NULL,NULL,NULL), - (379,190,2,'a_b',191,'Spouse of',145,'Spouse of',1,NULL,NULL,NULL), - (380,190,2,'b_a',145,'Spouse of',191,'Spouse of',1,NULL,NULL,NULL), - (381,191,1,'a_b',28,'Child of',71,'Parent of',1,NULL,NULL,NULL), - (382,191,1,'b_a',71,'Parent of',28,'Child of',1,NULL,NULL,NULL), - (383,192,1,'a_b',92,'Child of',71,'Parent of',1,NULL,NULL,NULL), - (384,192,1,'b_a',71,'Parent of',92,'Child of',1,NULL,NULL,NULL), - (385,193,1,'a_b',28,'Child of',25,'Parent of',1,NULL,NULL,NULL), - (386,193,1,'b_a',25,'Parent of',28,'Child of',1,NULL,NULL,NULL), - (387,194,1,'a_b',92,'Child of',25,'Parent of',1,NULL,NULL,NULL), - (388,194,1,'b_a',25,'Parent of',92,'Child of',1,NULL,NULL,NULL), - (389,195,4,'a_b',92,'Sibling of',28,'Sibling of',1,NULL,NULL,NULL), - (390,195,4,'b_a',28,'Sibling of',92,'Sibling of',1,NULL,NULL,NULL), - (391,196,8,'a_b',25,'Household Member of',148,'Household Member is',1,NULL,NULL,NULL), - (392,196,8,'b_a',148,'Household Member is',25,'Household Member of',1,NULL,NULL,NULL), - (393,197,8,'a_b',28,'Household Member of',148,'Household Member is',1,NULL,NULL,NULL), - (394,197,8,'b_a',148,'Household Member is',28,'Household Member of',1,NULL,NULL,NULL), - (395,198,8,'a_b',92,'Household Member of',148,'Household Member is',1,NULL,NULL,NULL), - (396,198,8,'b_a',148,'Household Member is',92,'Household Member of',1,NULL,NULL,NULL), - (397,199,7,'a_b',71,'Head of Household for',148,'Head of Household is',1,NULL,NULL,NULL), - (398,199,7,'b_a',148,'Head of Household is',71,'Head of Household for',1,NULL,NULL,NULL), - (399,200,2,'a_b',25,'Spouse of',71,'Spouse of',1,NULL,NULL,NULL), - (400,200,2,'b_a',71,'Spouse of',25,'Spouse of',1,NULL,NULL,NULL), - (401,201,5,'a_b',57,'Employee of',17,'Employer of',1,NULL,NULL,NULL), - (402,201,5,'b_a',17,'Employer of',57,'Employee of',1,NULL,NULL,NULL), - (403,202,5,'a_b',69,'Employee of',19,'Employer of',1,NULL,NULL,NULL), - (404,202,5,'b_a',19,'Employer of',69,'Employee of',1,NULL,NULL,NULL), - (405,203,5,'a_b',194,'Employee of',31,'Employer of',1,NULL,NULL,NULL), - (406,203,5,'b_a',31,'Employer of',194,'Employee of',1,NULL,NULL,NULL), - (407,204,5,'a_b',75,'Employee of',51,'Employer of',1,NULL,NULL,NULL), - (408,204,5,'b_a',51,'Employer of',75,'Employee of',1,NULL,NULL,NULL), - (409,205,5,'a_b',180,'Employee of',53,'Employer of',1,NULL,NULL,NULL), - (410,205,5,'b_a',53,'Employer of',180,'Employee of',1,NULL,NULL,NULL), - (411,206,5,'a_b',120,'Employee of',64,'Employer of',1,NULL,NULL,NULL), - (412,206,5,'b_a',64,'Employer of',120,'Employee of',1,NULL,NULL,NULL), - (413,207,5,'a_b',159,'Employee of',74,'Employer of',1,NULL,NULL,NULL), - (414,207,5,'b_a',74,'Employer of',159,'Employee of',1,NULL,NULL,NULL), - (415,208,5,'a_b',45,'Employee of',111,'Employer of',1,NULL,NULL,NULL), - (416,208,5,'b_a',111,'Employer of',45,'Employee of',1,NULL,NULL,NULL), - (417,209,5,'a_b',136,'Employee of',112,'Employer of',1,NULL,NULL,NULL), - (418,209,5,'b_a',112,'Employer of',136,'Employee of',1,NULL,NULL,NULL), - (419,210,5,'a_b',12,'Employee of',118,'Employer of',1,NULL,NULL,NULL), - (420,210,5,'b_a',118,'Employer of',12,'Employee of',1,NULL,NULL,NULL), - (421,211,5,'a_b',58,'Employee of',121,'Employer of',1,NULL,NULL,NULL), - (422,211,5,'b_a',121,'Employer of',58,'Employee of',1,NULL,NULL,NULL), - (423,212,5,'a_b',104,'Employee of',133,'Employer of',1,NULL,NULL,NULL), - (424,212,5,'b_a',133,'Employer of',104,'Employee of',1,NULL,NULL,NULL), - (425,213,5,'a_b',79,'Employee of',150,'Employer of',1,NULL,NULL,NULL), - (426,213,5,'b_a',150,'Employer of',79,'Employee of',1,NULL,NULL,NULL), - (427,214,5,'a_b',54,'Employee of',166,'Employer of',1,NULL,NULL,NULL), - (428,214,5,'b_a',166,'Employer of',54,'Employee of',1,NULL,NULL,NULL), - (429,215,5,'a_b',169,'Employee of',171,'Employer of',1,NULL,NULL,NULL), - (430,215,5,'b_a',171,'Employer of',169,'Employee of',1,NULL,NULL,NULL), - (431,216,5,'a_b',187,'Employee of',174,'Employer of',1,NULL,NULL,NULL), - (432,216,5,'b_a',174,'Employer of',187,'Employee of',1,NULL,NULL,NULL), - (433,217,5,'a_b',122,'Employee of',190,'Employer of',1,NULL,NULL,NULL), - (434,217,5,'b_a',190,'Employer of',122,'Employee of',1,NULL,NULL,NULL); + (1,1,1,'a_b',24,'Child of',86,'Parent of',1,NULL,NULL,NULL), + (2,1,1,'b_a',86,'Parent of',24,'Child of',1,NULL,NULL,NULL), + (3,2,1,'a_b',189,'Child of',86,'Parent of',1,NULL,NULL,NULL), + (4,2,1,'b_a',86,'Parent of',189,'Child of',1,NULL,NULL,NULL), + (5,3,1,'a_b',24,'Child of',16,'Parent of',1,NULL,NULL,NULL), + (6,3,1,'b_a',16,'Parent of',24,'Child of',1,NULL,NULL,NULL), + (7,4,1,'a_b',189,'Child of',16,'Parent of',1,NULL,NULL,NULL), + (8,4,1,'b_a',16,'Parent of',189,'Child of',1,NULL,NULL,NULL), + (9,5,4,'a_b',189,'Sibling of',24,'Sibling of',1,NULL,NULL,NULL), + (10,5,4,'b_a',24,'Sibling of',189,'Sibling of',1,NULL,NULL,NULL), + (11,6,8,'a_b',16,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), + (12,6,8,'b_a',58,'Household Member is',16,'Household Member of',1,NULL,NULL,NULL), + (13,7,8,'a_b',24,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), + (14,7,8,'b_a',58,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL), + (15,8,8,'a_b',189,'Household Member of',58,'Household Member is',1,NULL,NULL,NULL), + (16,8,8,'b_a',58,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL), + (17,9,7,'a_b',86,'Head of Household for',58,'Head of Household is',0,NULL,NULL,NULL), + (18,9,7,'b_a',58,'Head of Household is',86,'Head of Household for',0,NULL,NULL,NULL), + (19,10,2,'a_b',16,'Spouse of',86,'Spouse of',0,NULL,NULL,NULL), + (20,10,2,'b_a',86,'Spouse of',16,'Spouse of',0,NULL,NULL,NULL), + (21,11,1,'a_b',151,'Child of',141,'Parent of',1,NULL,NULL,NULL), + (22,11,1,'b_a',141,'Parent of',151,'Child of',1,NULL,NULL,NULL), + (23,12,1,'a_b',20,'Child of',141,'Parent of',1,NULL,NULL,NULL), + (24,12,1,'b_a',141,'Parent of',20,'Child of',1,NULL,NULL,NULL), + (25,13,1,'a_b',151,'Child of',176,'Parent of',1,NULL,NULL,NULL), + (26,13,1,'b_a',176,'Parent of',151,'Child of',1,NULL,NULL,NULL), + (27,14,1,'a_b',20,'Child of',176,'Parent of',1,NULL,NULL,NULL), + (28,14,1,'b_a',176,'Parent of',20,'Child of',1,NULL,NULL,NULL), + (29,15,4,'a_b',20,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL), + (30,15,4,'b_a',151,'Sibling of',20,'Sibling of',1,NULL,NULL,NULL), + (31,16,8,'a_b',176,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL), + (32,16,8,'b_a',190,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL), + (33,17,8,'a_b',151,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL), + (34,17,8,'b_a',190,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL), + (35,18,8,'a_b',20,'Household Member of',190,'Household Member is',1,NULL,NULL,NULL), + (36,18,8,'b_a',190,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL), + (37,19,7,'a_b',141,'Head of Household for',190,'Head of Household is',1,NULL,NULL,NULL), + (38,19,7,'b_a',190,'Head of Household is',141,'Head of Household for',1,NULL,NULL,NULL), + (39,20,2,'a_b',176,'Spouse of',141,'Spouse of',1,NULL,NULL,NULL), + (40,20,2,'b_a',141,'Spouse of',176,'Spouse of',1,NULL,NULL,NULL), + (41,21,1,'a_b',125,'Child of',49,'Parent of',1,NULL,NULL,NULL), + (42,21,1,'b_a',49,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (43,22,1,'a_b',55,'Child of',49,'Parent of',1,NULL,NULL,NULL), + (44,22,1,'b_a',49,'Parent of',55,'Child of',1,NULL,NULL,NULL), + (45,23,1,'a_b',125,'Child of',200,'Parent of',1,NULL,NULL,NULL), + (46,23,1,'b_a',200,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (47,24,1,'a_b',55,'Child of',200,'Parent of',1,NULL,NULL,NULL), + (48,24,1,'b_a',200,'Parent of',55,'Child of',1,NULL,NULL,NULL), + (49,25,4,'a_b',55,'Sibling of',125,'Sibling of',1,NULL,NULL,NULL), + (50,25,4,'b_a',125,'Sibling of',55,'Sibling of',1,NULL,NULL,NULL), + (51,26,8,'a_b',200,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL), + (52,26,8,'b_a',155,'Household Member is',200,'Household Member of',1,NULL,NULL,NULL), + (53,27,8,'a_b',125,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL), + (54,27,8,'b_a',155,'Household Member is',125,'Household Member of',1,NULL,NULL,NULL), + (55,28,8,'a_b',55,'Household Member of',155,'Household Member is',1,NULL,NULL,NULL), + (56,28,8,'b_a',155,'Household Member is',55,'Household Member of',1,NULL,NULL,NULL), + (57,29,7,'a_b',49,'Head of Household for',155,'Head of Household is',1,NULL,NULL,NULL), + (58,29,7,'b_a',155,'Head of Household is',49,'Head of Household for',1,NULL,NULL,NULL), + (59,30,2,'a_b',200,'Spouse of',49,'Spouse of',1,NULL,NULL,NULL), + (60,30,2,'b_a',49,'Spouse of',200,'Spouse of',1,NULL,NULL,NULL), + (61,31,1,'a_b',34,'Child of',150,'Parent of',1,NULL,NULL,NULL), + (62,31,1,'b_a',150,'Parent of',34,'Child of',1,NULL,NULL,NULL), + (63,32,1,'a_b',164,'Child of',150,'Parent of',1,NULL,NULL,NULL), + (64,32,1,'b_a',150,'Parent of',164,'Child of',1,NULL,NULL,NULL), + (65,33,1,'a_b',34,'Child of',179,'Parent of',1,NULL,NULL,NULL), + (66,33,1,'b_a',179,'Parent of',34,'Child of',1,NULL,NULL,NULL), + (67,34,1,'a_b',164,'Child of',179,'Parent of',1,NULL,NULL,NULL), + (68,34,1,'b_a',179,'Parent of',164,'Child of',1,NULL,NULL,NULL), + (69,35,4,'a_b',164,'Sibling of',34,'Sibling of',1,NULL,NULL,NULL), + (70,35,4,'b_a',34,'Sibling of',164,'Sibling of',1,NULL,NULL,NULL), + (71,36,8,'a_b',179,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), + (72,36,8,'b_a',26,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL), + (73,37,8,'a_b',34,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), + (74,37,8,'b_a',26,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL), + (75,38,8,'a_b',164,'Household Member of',26,'Household Member is',1,NULL,NULL,NULL), + (76,38,8,'b_a',26,'Household Member is',164,'Household Member of',1,NULL,NULL,NULL), + (77,39,7,'a_b',150,'Head of Household for',26,'Head of Household is',0,NULL,NULL,NULL), + (78,39,7,'b_a',26,'Head of Household is',150,'Head of Household for',0,NULL,NULL,NULL), + (79,40,2,'a_b',179,'Spouse of',150,'Spouse of',0,NULL,NULL,NULL), + (80,40,2,'b_a',150,'Spouse of',179,'Spouse of',0,NULL,NULL,NULL), + (81,41,1,'a_b',44,'Child of',183,'Parent of',1,NULL,NULL,NULL), + (82,41,1,'b_a',183,'Parent of',44,'Child of',1,NULL,NULL,NULL), + (83,42,1,'a_b',60,'Child of',183,'Parent of',1,NULL,NULL,NULL), + (84,42,1,'b_a',183,'Parent of',60,'Child of',1,NULL,NULL,NULL), + (85,43,1,'a_b',44,'Child of',193,'Parent of',1,NULL,NULL,NULL), + (86,43,1,'b_a',193,'Parent of',44,'Child of',1,NULL,NULL,NULL), + (87,44,1,'a_b',60,'Child of',193,'Parent of',1,NULL,NULL,NULL), + (88,44,1,'b_a',193,'Parent of',60,'Child of',1,NULL,NULL,NULL), + (89,45,4,'a_b',60,'Sibling of',44,'Sibling of',1,NULL,NULL,NULL), + (90,45,4,'b_a',44,'Sibling of',60,'Sibling of',1,NULL,NULL,NULL), + (91,46,8,'a_b',193,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL), + (92,46,8,'b_a',53,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL), + (93,47,8,'a_b',44,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL), + (94,47,8,'b_a',53,'Household Member is',44,'Household Member of',1,NULL,NULL,NULL), + (95,48,8,'a_b',60,'Household Member of',53,'Household Member is',1,NULL,NULL,NULL), + (96,48,8,'b_a',53,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL), + (97,49,7,'a_b',183,'Head of Household for',53,'Head of Household is',0,NULL,NULL,NULL), + (98,49,7,'b_a',53,'Head of Household is',183,'Head of Household for',0,NULL,NULL,NULL), + (99,50,2,'a_b',193,'Spouse of',183,'Spouse of',0,NULL,NULL,NULL), + (100,50,2,'b_a',183,'Spouse of',193,'Spouse of',0,NULL,NULL,NULL), + (101,51,1,'a_b',76,'Child of',84,'Parent of',1,NULL,NULL,NULL), + (102,51,1,'b_a',84,'Parent of',76,'Child of',1,NULL,NULL,NULL), + (103,52,1,'a_b',126,'Child of',84,'Parent of',1,NULL,NULL,NULL), + (104,52,1,'b_a',84,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (105,53,1,'a_b',76,'Child of',109,'Parent of',1,NULL,NULL,NULL), + (106,53,1,'b_a',109,'Parent of',76,'Child of',1,NULL,NULL,NULL), + (107,54,1,'a_b',126,'Child of',109,'Parent of',1,NULL,NULL,NULL), + (108,54,1,'b_a',109,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (109,55,4,'a_b',126,'Sibling of',76,'Sibling of',1,NULL,NULL,NULL), + (110,55,4,'b_a',76,'Sibling of',126,'Sibling of',1,NULL,NULL,NULL), + (111,56,8,'a_b',109,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (112,56,8,'b_a',156,'Household Member is',109,'Household Member of',1,NULL,NULL,NULL), + (113,57,8,'a_b',76,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (114,57,8,'b_a',156,'Household Member is',76,'Household Member of',1,NULL,NULL,NULL), + (115,58,8,'a_b',126,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (116,58,8,'b_a',156,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL), + (117,59,7,'a_b',84,'Head of Household for',156,'Head of Household is',1,NULL,NULL,NULL), + (118,59,7,'b_a',156,'Head of Household is',84,'Head of Household for',1,NULL,NULL,NULL), + (119,60,2,'a_b',109,'Spouse of',84,'Spouse of',1,NULL,NULL,NULL), + (120,60,2,'b_a',84,'Spouse of',109,'Spouse of',1,NULL,NULL,NULL), + (121,61,1,'a_b',147,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (122,61,1,'b_a',46,'Parent of',147,'Child of',1,NULL,NULL,NULL), + (123,62,1,'a_b',74,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (124,62,1,'b_a',46,'Parent of',74,'Child of',1,NULL,NULL,NULL), + (125,63,1,'a_b',147,'Child of',149,'Parent of',1,NULL,NULL,NULL), + (126,63,1,'b_a',149,'Parent of',147,'Child of',1,NULL,NULL,NULL), + (127,64,1,'a_b',74,'Child of',149,'Parent of',1,NULL,NULL,NULL), + (128,64,1,'b_a',149,'Parent of',74,'Child of',1,NULL,NULL,NULL), + (129,65,4,'a_b',74,'Sibling of',147,'Sibling of',1,NULL,NULL,NULL), + (130,65,4,'b_a',147,'Sibling of',74,'Sibling of',1,NULL,NULL,NULL), + (131,66,8,'a_b',149,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (132,66,8,'b_a',131,'Household Member is',149,'Household Member of',1,NULL,NULL,NULL), + (133,67,8,'a_b',147,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (134,67,8,'b_a',131,'Household Member is',147,'Household Member of',1,NULL,NULL,NULL), + (135,68,8,'a_b',74,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (136,68,8,'b_a',131,'Household Member is',74,'Household Member of',1,NULL,NULL,NULL), + (137,69,7,'a_b',46,'Head of Household for',131,'Head of Household is',1,NULL,NULL,NULL), + (138,69,7,'b_a',131,'Head of Household is',46,'Head of Household for',1,NULL,NULL,NULL), + (139,70,2,'a_b',149,'Spouse of',46,'Spouse of',1,NULL,NULL,NULL), + (140,70,2,'b_a',46,'Spouse of',149,'Spouse of',1,NULL,NULL,NULL), + (141,71,1,'a_b',162,'Child of',140,'Parent of',1,NULL,NULL,NULL), + (142,71,1,'b_a',140,'Parent of',162,'Child of',1,NULL,NULL,NULL), + (143,72,1,'a_b',66,'Child of',140,'Parent of',1,NULL,NULL,NULL), + (144,72,1,'b_a',140,'Parent of',66,'Child of',1,NULL,NULL,NULL), + (145,73,1,'a_b',162,'Child of',163,'Parent of',1,NULL,NULL,NULL), + (146,73,1,'b_a',163,'Parent of',162,'Child of',1,NULL,NULL,NULL), + (147,74,1,'a_b',66,'Child of',163,'Parent of',1,NULL,NULL,NULL), + (148,74,1,'b_a',163,'Parent of',66,'Child of',1,NULL,NULL,NULL), + (149,75,4,'a_b',66,'Sibling of',162,'Sibling of',1,NULL,NULL,NULL), + (150,75,4,'b_a',162,'Sibling of',66,'Sibling of',1,NULL,NULL,NULL), + (151,76,8,'a_b',163,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (152,76,8,'b_a',10,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL), + (153,77,8,'a_b',162,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (154,77,8,'b_a',10,'Household Member is',162,'Household Member of',1,NULL,NULL,NULL), + (155,78,8,'a_b',66,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (156,78,8,'b_a',10,'Household Member is',66,'Household Member of',1,NULL,NULL,NULL), + (157,79,7,'a_b',140,'Head of Household for',10,'Head of Household is',1,NULL,NULL,NULL), + (158,79,7,'b_a',10,'Head of Household is',140,'Head of Household for',1,NULL,NULL,NULL), + (159,80,2,'a_b',163,'Spouse of',140,'Spouse of',1,NULL,NULL,NULL), + (160,80,2,'b_a',140,'Spouse of',163,'Spouse of',1,NULL,NULL,NULL), + (161,81,1,'a_b',170,'Child of',21,'Parent of',1,NULL,NULL,NULL), + (162,81,1,'b_a',21,'Parent of',170,'Child of',1,NULL,NULL,NULL), + (163,82,1,'a_b',45,'Child of',21,'Parent of',1,NULL,NULL,NULL), + (164,82,1,'b_a',21,'Parent of',45,'Child of',1,NULL,NULL,NULL), + (165,83,1,'a_b',170,'Child of',14,'Parent of',1,NULL,NULL,NULL), + (166,83,1,'b_a',14,'Parent of',170,'Child of',1,NULL,NULL,NULL), + (167,84,1,'a_b',45,'Child of',14,'Parent of',1,NULL,NULL,NULL), + (168,84,1,'b_a',14,'Parent of',45,'Child of',1,NULL,NULL,NULL), + (169,85,4,'a_b',45,'Sibling of',170,'Sibling of',1,NULL,NULL,NULL), + (170,85,4,'b_a',170,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL), + (171,86,8,'a_b',14,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), + (172,86,8,'b_a',177,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL), + (173,87,8,'a_b',170,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), + (174,87,8,'b_a',177,'Household Member is',170,'Household Member of',1,NULL,NULL,NULL), + (175,88,8,'a_b',45,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), + (176,88,8,'b_a',177,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL), + (177,89,7,'a_b',21,'Head of Household for',177,'Head of Household is',1,NULL,NULL,NULL), + (178,89,7,'b_a',177,'Head of Household is',21,'Head of Household for',1,NULL,NULL,NULL), + (179,90,2,'a_b',14,'Spouse of',21,'Spouse of',1,NULL,NULL,NULL), + (180,90,2,'b_a',21,'Spouse of',14,'Spouse of',1,NULL,NULL,NULL), + (181,91,1,'a_b',112,'Child of',124,'Parent of',1,NULL,NULL,NULL), + (182,91,1,'b_a',124,'Parent of',112,'Child of',1,NULL,NULL,NULL), + (183,92,1,'a_b',79,'Child of',124,'Parent of',1,NULL,NULL,NULL), + (184,92,1,'b_a',124,'Parent of',79,'Child of',1,NULL,NULL,NULL), + (185,93,1,'a_b',112,'Child of',199,'Parent of',1,NULL,NULL,NULL), + (186,93,1,'b_a',199,'Parent of',112,'Child of',1,NULL,NULL,NULL), + (187,94,1,'a_b',79,'Child of',199,'Parent of',1,NULL,NULL,NULL), + (188,94,1,'b_a',199,'Parent of',79,'Child of',1,NULL,NULL,NULL), + (189,95,4,'a_b',79,'Sibling of',112,'Sibling of',1,NULL,NULL,NULL), + (190,95,4,'b_a',112,'Sibling of',79,'Sibling of',1,NULL,NULL,NULL), + (191,96,8,'a_b',199,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), + (192,96,8,'b_a',3,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL), + (193,97,8,'a_b',112,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), + (194,97,8,'b_a',3,'Household Member is',112,'Household Member of',1,NULL,NULL,NULL), + (195,98,8,'a_b',79,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), + (196,98,8,'b_a',3,'Household Member is',79,'Household Member of',1,NULL,NULL,NULL), + (197,99,7,'a_b',124,'Head of Household for',3,'Head of Household is',1,NULL,NULL,NULL), + (198,99,7,'b_a',3,'Head of Household is',124,'Head of Household for',1,NULL,NULL,NULL), + (199,100,2,'a_b',199,'Spouse of',124,'Spouse of',1,NULL,NULL,NULL), + (200,100,2,'b_a',124,'Spouse of',199,'Spouse of',1,NULL,NULL,NULL), + (201,101,1,'a_b',104,'Child of',48,'Parent of',1,NULL,NULL,NULL), + (202,101,1,'b_a',48,'Parent of',104,'Child of',1,NULL,NULL,NULL), + (203,102,1,'a_b',92,'Child of',48,'Parent of',1,NULL,NULL,NULL), + (204,102,1,'b_a',48,'Parent of',92,'Child of',1,NULL,NULL,NULL), + (205,103,1,'a_b',104,'Child of',91,'Parent of',1,NULL,NULL,NULL), + (206,103,1,'b_a',91,'Parent of',104,'Child of',1,NULL,NULL,NULL), + (207,104,1,'a_b',92,'Child of',91,'Parent of',1,NULL,NULL,NULL), + (208,104,1,'b_a',91,'Parent of',92,'Child of',1,NULL,NULL,NULL), + (209,105,4,'a_b',92,'Sibling of',104,'Sibling of',1,NULL,NULL,NULL), + (210,105,4,'b_a',104,'Sibling of',92,'Sibling of',1,NULL,NULL,NULL), + (211,106,8,'a_b',91,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL), + (212,106,8,'b_a',191,'Household Member is',91,'Household Member of',1,NULL,NULL,NULL), + (213,107,8,'a_b',104,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL), + (214,107,8,'b_a',191,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL), + (215,108,8,'a_b',92,'Household Member of',191,'Household Member is',1,NULL,NULL,NULL), + (216,108,8,'b_a',191,'Household Member is',92,'Household Member of',1,NULL,NULL,NULL), + (217,109,7,'a_b',48,'Head of Household for',191,'Head of Household is',1,NULL,NULL,NULL), + (218,109,7,'b_a',191,'Head of Household is',48,'Head of Household for',1,NULL,NULL,NULL), + (219,110,2,'a_b',91,'Spouse of',48,'Spouse of',1,NULL,NULL,NULL), + (220,110,2,'b_a',48,'Spouse of',91,'Spouse of',1,NULL,NULL,NULL), + (221,111,1,'a_b',160,'Child of',110,'Parent of',1,NULL,NULL,NULL), + (222,111,1,'b_a',110,'Parent of',160,'Child of',1,NULL,NULL,NULL), + (223,112,1,'a_b',57,'Child of',110,'Parent of',1,NULL,NULL,NULL), + (224,112,1,'b_a',110,'Parent of',57,'Child of',1,NULL,NULL,NULL), + (225,113,1,'a_b',160,'Child of',100,'Parent of',1,NULL,NULL,NULL), + (226,113,1,'b_a',100,'Parent of',160,'Child of',1,NULL,NULL,NULL), + (227,114,1,'a_b',57,'Child of',100,'Parent of',1,NULL,NULL,NULL), + (228,114,1,'b_a',100,'Parent of',57,'Child of',1,NULL,NULL,NULL), + (229,115,4,'a_b',57,'Sibling of',160,'Sibling of',1,NULL,NULL,NULL), + (230,115,4,'b_a',160,'Sibling of',57,'Sibling of',1,NULL,NULL,NULL), + (231,116,8,'a_b',100,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (232,116,8,'b_a',134,'Household Member is',100,'Household Member of',1,NULL,NULL,NULL), + (233,117,8,'a_b',160,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (234,117,8,'b_a',134,'Household Member is',160,'Household Member of',1,NULL,NULL,NULL), + (235,118,8,'a_b',57,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (236,118,8,'b_a',134,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL), + (237,119,7,'a_b',110,'Head of Household for',134,'Head of Household is',0,NULL,NULL,NULL), + (238,119,7,'b_a',134,'Head of Household is',110,'Head of Household for',0,NULL,NULL,NULL), + (239,120,2,'a_b',100,'Spouse of',110,'Spouse of',0,NULL,NULL,NULL), + (240,120,2,'b_a',110,'Spouse of',100,'Spouse of',0,NULL,NULL,NULL), + (241,121,1,'a_b',13,'Child of',198,'Parent of',1,NULL,NULL,NULL), + (242,121,1,'b_a',198,'Parent of',13,'Child of',1,NULL,NULL,NULL), + (243,122,1,'a_b',62,'Child of',198,'Parent of',1,NULL,NULL,NULL), + (244,122,1,'b_a',198,'Parent of',62,'Child of',1,NULL,NULL,NULL), + (245,123,1,'a_b',13,'Child of',6,'Parent of',1,NULL,NULL,NULL), + (246,123,1,'b_a',6,'Parent of',13,'Child of',1,NULL,NULL,NULL), + (247,124,1,'a_b',62,'Child of',6,'Parent of',1,NULL,NULL,NULL), + (248,124,1,'b_a',6,'Parent of',62,'Child of',1,NULL,NULL,NULL), + (249,125,4,'a_b',62,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL), + (250,125,4,'b_a',13,'Sibling of',62,'Sibling of',1,NULL,NULL,NULL), + (251,126,8,'a_b',6,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL), + (252,126,8,'b_a',73,'Household Member is',6,'Household Member of',1,NULL,NULL,NULL), + (253,127,8,'a_b',13,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL), + (254,127,8,'b_a',73,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL), + (255,128,8,'a_b',62,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL), + (256,128,8,'b_a',73,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL), + (257,129,7,'a_b',198,'Head of Household for',73,'Head of Household is',0,NULL,NULL,NULL), + (258,129,7,'b_a',73,'Head of Household is',198,'Head of Household for',0,NULL,NULL,NULL), + (259,130,2,'a_b',6,'Spouse of',198,'Spouse of',0,NULL,NULL,NULL), + (260,130,2,'b_a',198,'Spouse of',6,'Spouse of',0,NULL,NULL,NULL), + (261,131,1,'a_b',99,'Child of',15,'Parent of',1,NULL,NULL,NULL), + (262,131,1,'b_a',15,'Parent of',99,'Child of',1,NULL,NULL,NULL), + (263,132,1,'a_b',116,'Child of',15,'Parent of',1,NULL,NULL,NULL), + (264,132,1,'b_a',15,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (265,133,1,'a_b',99,'Child of',137,'Parent of',1,NULL,NULL,NULL), + (266,133,1,'b_a',137,'Parent of',99,'Child of',1,NULL,NULL,NULL), + (267,134,1,'a_b',116,'Child of',137,'Parent of',1,NULL,NULL,NULL), + (268,134,1,'b_a',137,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (269,135,4,'a_b',116,'Sibling of',99,'Sibling of',1,NULL,NULL,NULL), + (270,135,4,'b_a',99,'Sibling of',116,'Sibling of',1,NULL,NULL,NULL), + (271,136,8,'a_b',137,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), + (272,136,8,'b_a',88,'Household Member is',137,'Household Member of',1,NULL,NULL,NULL), + (273,137,8,'a_b',99,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), + (274,137,8,'b_a',88,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL), + (275,138,8,'a_b',116,'Household Member of',88,'Household Member is',1,NULL,NULL,NULL), + (276,138,8,'b_a',88,'Household Member is',116,'Household Member of',1,NULL,NULL,NULL), + (277,139,7,'a_b',15,'Head of Household for',88,'Head of Household is',1,NULL,NULL,NULL), + (278,139,7,'b_a',88,'Head of Household is',15,'Head of Household for',1,NULL,NULL,NULL), + (279,140,2,'a_b',137,'Spouse of',15,'Spouse of',1,NULL,NULL,NULL), + (280,140,2,'b_a',15,'Spouse of',137,'Spouse of',1,NULL,NULL,NULL), + (281,141,1,'a_b',114,'Child of',180,'Parent of',1,NULL,NULL,NULL), + (282,141,1,'b_a',180,'Parent of',114,'Child of',1,NULL,NULL,NULL), + (283,142,1,'a_b',32,'Child of',180,'Parent of',1,NULL,NULL,NULL), + (284,142,1,'b_a',180,'Parent of',32,'Child of',1,NULL,NULL,NULL), + (285,143,1,'a_b',114,'Child of',182,'Parent of',1,NULL,NULL,NULL), + (286,143,1,'b_a',182,'Parent of',114,'Child of',1,NULL,NULL,NULL), + (287,144,1,'a_b',32,'Child of',182,'Parent of',1,NULL,NULL,NULL), + (288,144,1,'b_a',182,'Parent of',32,'Child of',1,NULL,NULL,NULL), + (289,145,4,'a_b',32,'Sibling of',114,'Sibling of',1,NULL,NULL,NULL), + (290,145,4,'b_a',114,'Sibling of',32,'Sibling of',1,NULL,NULL,NULL), + (291,146,8,'a_b',182,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL), + (292,146,8,'b_a',23,'Household Member is',182,'Household Member of',1,NULL,NULL,NULL), + (293,147,8,'a_b',114,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL), + (294,147,8,'b_a',23,'Household Member is',114,'Household Member of',1,NULL,NULL,NULL), + (295,148,8,'a_b',32,'Household Member of',23,'Household Member is',1,NULL,NULL,NULL), + (296,148,8,'b_a',23,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL), + (297,149,7,'a_b',180,'Head of Household for',23,'Head of Household is',1,NULL,NULL,NULL), + (298,149,7,'b_a',23,'Head of Household is',180,'Head of Household for',1,NULL,NULL,NULL), + (299,150,2,'a_b',182,'Spouse of',180,'Spouse of',1,NULL,NULL,NULL), + (300,150,2,'b_a',180,'Spouse of',182,'Spouse of',1,NULL,NULL,NULL), + (301,151,1,'a_b',39,'Child of',18,'Parent of',1,NULL,NULL,NULL), + (302,151,1,'b_a',18,'Parent of',39,'Child of',1,NULL,NULL,NULL), + (303,152,1,'a_b',41,'Child of',18,'Parent of',1,NULL,NULL,NULL), + (304,152,1,'b_a',18,'Parent of',41,'Child of',1,NULL,NULL,NULL), + (305,153,1,'a_b',39,'Child of',90,'Parent of',1,NULL,NULL,NULL), + (306,153,1,'b_a',90,'Parent of',39,'Child of',1,NULL,NULL,NULL), + (307,154,1,'a_b',41,'Child of',90,'Parent of',1,NULL,NULL,NULL), + (308,154,1,'b_a',90,'Parent of',41,'Child of',1,NULL,NULL,NULL), + (309,155,4,'a_b',41,'Sibling of',39,'Sibling of',1,NULL,NULL,NULL), + (310,155,4,'b_a',39,'Sibling of',41,'Sibling of',1,NULL,NULL,NULL), + (311,156,8,'a_b',90,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (312,156,8,'b_a',51,'Household Member is',90,'Household Member of',1,NULL,NULL,NULL), + (313,157,8,'a_b',39,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (314,157,8,'b_a',51,'Household Member is',39,'Household Member of',1,NULL,NULL,NULL), + (315,158,8,'a_b',41,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (316,158,8,'b_a',51,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL), + (317,159,7,'a_b',18,'Head of Household for',51,'Head of Household is',0,NULL,NULL,NULL), + (318,159,7,'b_a',51,'Head of Household is',18,'Head of Household for',0,NULL,NULL,NULL), + (319,160,2,'a_b',90,'Spouse of',18,'Spouse of',0,NULL,NULL,NULL), + (320,160,2,'b_a',18,'Spouse of',90,'Spouse of',0,NULL,NULL,NULL), + (321,161,1,'a_b',196,'Child of',2,'Parent of',1,NULL,NULL,NULL), + (322,161,1,'b_a',2,'Parent of',196,'Child of',1,NULL,NULL,NULL), + (323,162,1,'a_b',195,'Child of',2,'Parent of',1,NULL,NULL,NULL), + (324,162,1,'b_a',2,'Parent of',195,'Child of',1,NULL,NULL,NULL), + (325,163,1,'a_b',196,'Child of',121,'Parent of',1,NULL,NULL,NULL), + (326,163,1,'b_a',121,'Parent of',196,'Child of',1,NULL,NULL,NULL), + (327,164,1,'a_b',195,'Child of',121,'Parent of',1,NULL,NULL,NULL), + (328,164,1,'b_a',121,'Parent of',195,'Child of',1,NULL,NULL,NULL), + (329,165,4,'a_b',195,'Sibling of',196,'Sibling of',1,NULL,NULL,NULL), + (330,165,4,'b_a',196,'Sibling of',195,'Sibling of',1,NULL,NULL,NULL), + (331,166,8,'a_b',121,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), + (332,166,8,'b_a',43,'Household Member is',121,'Household Member of',1,NULL,NULL,NULL), + (333,167,8,'a_b',196,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), + (334,167,8,'b_a',43,'Household Member is',196,'Household Member of',1,NULL,NULL,NULL), + (335,168,8,'a_b',195,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), + (336,168,8,'b_a',43,'Household Member is',195,'Household Member of',1,NULL,NULL,NULL), + (337,169,7,'a_b',2,'Head of Household for',43,'Head of Household is',0,NULL,NULL,NULL), + (338,169,7,'b_a',43,'Head of Household is',2,'Head of Household for',0,NULL,NULL,NULL), + (339,170,2,'a_b',121,'Spouse of',2,'Spouse of',0,NULL,NULL,NULL), + (340,170,2,'b_a',2,'Spouse of',121,'Spouse of',0,NULL,NULL,NULL), + (341,171,1,'a_b',61,'Child of',154,'Parent of',1,NULL,NULL,NULL), + (342,171,1,'b_a',154,'Parent of',61,'Child of',1,NULL,NULL,NULL), + (343,172,1,'a_b',63,'Child of',154,'Parent of',1,NULL,NULL,NULL), + (344,172,1,'b_a',154,'Parent of',63,'Child of',1,NULL,NULL,NULL), + (345,173,1,'a_b',61,'Child of',12,'Parent of',1,NULL,NULL,NULL), + (346,173,1,'b_a',12,'Parent of',61,'Child of',1,NULL,NULL,NULL), + (347,174,1,'a_b',63,'Child of',12,'Parent of',1,NULL,NULL,NULL), + (348,174,1,'b_a',12,'Parent of',63,'Child of',1,NULL,NULL,NULL), + (349,175,4,'a_b',63,'Sibling of',61,'Sibling of',1,NULL,NULL,NULL), + (350,175,4,'b_a',61,'Sibling of',63,'Sibling of',1,NULL,NULL,NULL), + (351,176,8,'a_b',12,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), + (352,176,8,'b_a',75,'Household Member is',12,'Household Member of',1,NULL,NULL,NULL), + (353,177,8,'a_b',61,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), + (354,177,8,'b_a',75,'Household Member is',61,'Household Member of',1,NULL,NULL,NULL), + (355,178,8,'a_b',63,'Household Member of',75,'Household Member is',1,NULL,NULL,NULL), + (356,178,8,'b_a',75,'Household Member is',63,'Household Member of',1,NULL,NULL,NULL), + (357,179,7,'a_b',154,'Head of Household for',75,'Head of Household is',1,NULL,NULL,NULL), + (358,179,7,'b_a',75,'Head of Household is',154,'Head of Household for',1,NULL,NULL,NULL), + (359,180,2,'a_b',12,'Spouse of',154,'Spouse of',1,NULL,NULL,NULL), + (360,180,2,'b_a',154,'Spouse of',12,'Spouse of',1,NULL,NULL,NULL), + (361,181,1,'a_b',175,'Child of',47,'Parent of',1,NULL,NULL,NULL), + (362,181,1,'b_a',47,'Parent of',175,'Child of',1,NULL,NULL,NULL), + (363,182,1,'a_b',85,'Child of',47,'Parent of',1,NULL,NULL,NULL), + (364,182,1,'b_a',47,'Parent of',85,'Child of',1,NULL,NULL,NULL), + (365,183,1,'a_b',175,'Child of',181,'Parent of',1,NULL,NULL,NULL), + (366,183,1,'b_a',181,'Parent of',175,'Child of',1,NULL,NULL,NULL), + (367,184,1,'a_b',85,'Child of',181,'Parent of',1,NULL,NULL,NULL), + (368,184,1,'b_a',181,'Parent of',85,'Child of',1,NULL,NULL,NULL), + (369,185,4,'a_b',85,'Sibling of',175,'Sibling of',1,NULL,NULL,NULL), + (370,185,4,'b_a',175,'Sibling of',85,'Sibling of',1,NULL,NULL,NULL), + (371,186,8,'a_b',181,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), + (372,186,8,'b_a',65,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL), + (373,187,8,'a_b',175,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), + (374,187,8,'b_a',65,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL), + (375,188,8,'a_b',85,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), + (376,188,8,'b_a',65,'Household Member is',85,'Household Member of',1,NULL,NULL,NULL), + (377,189,7,'a_b',47,'Head of Household for',65,'Head of Household is',0,NULL,NULL,NULL), + (378,189,7,'b_a',65,'Head of Household is',47,'Head of Household for',0,NULL,NULL,NULL), + (379,190,2,'a_b',181,'Spouse of',47,'Spouse of',0,NULL,NULL,NULL), + (380,190,2,'b_a',47,'Spouse of',181,'Spouse of',0,NULL,NULL,NULL), + (381,191,1,'a_b',111,'Child of',36,'Parent of',1,NULL,NULL,NULL), + (382,191,1,'b_a',36,'Parent of',111,'Child of',1,NULL,NULL,NULL), + (383,192,1,'a_b',152,'Child of',36,'Parent of',1,NULL,NULL,NULL), + (384,192,1,'b_a',36,'Parent of',152,'Child of',1,NULL,NULL,NULL), + (385,193,1,'a_b',111,'Child of',118,'Parent of',1,NULL,NULL,NULL), + (386,193,1,'b_a',118,'Parent of',111,'Child of',1,NULL,NULL,NULL), + (387,194,1,'a_b',152,'Child of',118,'Parent of',1,NULL,NULL,NULL), + (388,194,1,'b_a',118,'Parent of',152,'Child of',1,NULL,NULL,NULL), + (389,195,4,'a_b',152,'Sibling of',111,'Sibling of',1,NULL,NULL,NULL), + (390,195,4,'b_a',111,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL), + (391,196,8,'a_b',118,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL), + (392,196,8,'b_a',159,'Household Member is',118,'Household Member of',1,NULL,NULL,NULL), + (393,197,8,'a_b',111,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL), + (394,197,8,'b_a',159,'Household Member is',111,'Household Member of',1,NULL,NULL,NULL), + (395,198,8,'a_b',152,'Household Member of',159,'Household Member is',1,NULL,NULL,NULL), + (396,198,8,'b_a',159,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL), + (397,199,7,'a_b',36,'Head of Household for',159,'Head of Household is',0,NULL,NULL,NULL), + (398,199,7,'b_a',159,'Head of Household is',36,'Head of Household for',0,NULL,NULL,NULL), + (399,200,2,'a_b',118,'Spouse of',36,'Spouse of',0,NULL,NULL,NULL), + (400,200,2,'b_a',36,'Spouse of',118,'Spouse of',0,NULL,NULL,NULL), + (401,201,5,'a_b',15,'Employee of',7,'Employer of',1,NULL,NULL,NULL), + (402,201,5,'b_a',7,'Employer of',15,'Employee of',1,NULL,NULL,NULL), + (403,202,5,'a_b',129,'Employee of',19,'Employer of',1,NULL,NULL,NULL), + (404,202,5,'b_a',19,'Employer of',129,'Employee of',1,NULL,NULL,NULL), + (405,203,5,'a_b',33,'Employee of',22,'Employer of',1,NULL,NULL,NULL), + (406,203,5,'b_a',22,'Employer of',33,'Employee of',1,NULL,NULL,NULL), + (407,204,5,'a_b',74,'Employee of',50,'Employer of',1,NULL,NULL,NULL), + (408,204,5,'b_a',50,'Employer of',74,'Employee of',1,NULL,NULL,NULL), + (409,205,5,'a_b',109,'Employee of',52,'Employer of',1,NULL,NULL,NULL), + (410,205,5,'b_a',52,'Employer of',109,'Employee of',1,NULL,NULL,NULL), + (411,206,5,'a_b',185,'Employee of',59,'Employer of',1,NULL,NULL,NULL), + (412,206,5,'b_a',59,'Employer of',185,'Employee of',1,NULL,NULL,NULL), + (413,207,5,'a_b',184,'Employee of',64,'Employer of',1,NULL,NULL,NULL), + (414,207,5,'b_a',64,'Employer of',184,'Employee of',1,NULL,NULL,NULL), + (415,208,5,'a_b',76,'Employee of',67,'Employer of',1,NULL,NULL,NULL), + (416,208,5,'b_a',67,'Employer of',76,'Employee of',1,NULL,NULL,NULL), + (417,209,5,'a_b',85,'Employee of',68,'Employer of',1,NULL,NULL,NULL), + (418,209,5,'b_a',68,'Employer of',85,'Employee of',1,NULL,NULL,NULL), + (419,210,5,'a_b',4,'Employee of',69,'Employer of',1,NULL,NULL,NULL), + (420,210,5,'b_a',69,'Employer of',4,'Employee of',1,NULL,NULL,NULL), + (421,211,5,'a_b',81,'Employee of',77,'Employer of',1,NULL,NULL,NULL), + (422,211,5,'b_a',77,'Employer of',81,'Employee of',1,NULL,NULL,NULL), + (423,212,5,'a_b',187,'Employee of',103,'Employer of',1,NULL,NULL,NULL), + (424,212,5,'b_a',103,'Employer of',187,'Employee of',1,NULL,NULL,NULL), + (425,213,5,'a_b',18,'Employee of',122,'Employer of',1,NULL,NULL,NULL), + (426,213,5,'b_a',122,'Employer of',18,'Employee of',1,NULL,NULL,NULL), + (427,214,5,'a_b',72,'Employee of',133,'Employer of',1,NULL,NULL,NULL), + (428,214,5,'b_a',133,'Employer of',72,'Employee of',1,NULL,NULL,NULL), + (429,215,5,'a_b',115,'Employee of',135,'Employer of',1,NULL,NULL,NULL), + (430,215,5,'b_a',135,'Employer of',115,'Employee of',1,NULL,NULL,NULL), + (431,216,5,'a_b',197,'Employee of',139,'Employer of',1,NULL,NULL,NULL), + (432,216,5,'b_a',139,'Employer of',197,'Employee of',1,NULL,NULL,NULL), + (433,217,5,'a_b',178,'Employee of',146,'Employer of',1,NULL,NULL,NULL), + (434,217,5,'b_a',146,'Employer of',178,'Employee of',1,NULL,NULL,NULL), + (435,218,5,'a_b',96,'Employee of',148,'Employer of',1,NULL,NULL,NULL), + (436,218,5,'b_a',148,'Employer of',96,'Employee of',1,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */; UNLOCK TABLES; @@ -8027,9 +8031,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_saved_search` WRITE; /*!40000 ALTER TABLE `civicrm_saved_search` DISABLE KEYS */; INSERT INTO `civicrm_saved_search` (`id`, `name`, `label`, `form_values`, `mapping_id`, `search_custom_id`, `api_entity`, `api_params`, `created_id`, `modified_id`, `expires_date`, `created_date`, `modified_date`, `description`) VALUES - (1,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-07 01:51:25','2023-10-07 01:51:25',NULL), - (2,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-07 01:51:25','2023-10-07 01:51:25',NULL), - (3,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-07 01:51:25','2023-10-07 01:51:25',NULL); + (1,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL), + (2,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL), + (3,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2023-10-19 21:22:29','2023-10-19 21:22:29',NULL); /*!40000 ALTER TABLE `civicrm_saved_search` ENABLE KEYS */; UNLOCK TABLES; @@ -10422,19 +10426,18 @@ INSERT INTO `civicrm_state_province` (`id`, `name`, `abbreviation`, `country_id` (3947,'Buskerud','06',1161,1), (3948,'Finnmark','20',1161,1), (3949,'Hedmark','04',1161,1), - (3950,'Hordaland','12',1161,1), (3951,'Møre og Romsdal','15',1161,1), (3952,'Nordland','18',1161,1), (3953,'Nord-Trøndelag','17',1161,1), (3954,'Oppland','05',1161,1), (3955,'Oslo','03',1161,1), (3956,'Rogaland','11',1161,1), - (3957,'Sogn og Fjordane','14',1161,1), - (3958,'Sør-Trøndelag','16',1161,1), - (3959,'Telemark','06',1161,1), - (3960,'Troms','19',1161,1), - (3961,'Vest-Agder','10',1161,1), - (3962,'Vestfold','07',1161,1), + (3957,'Sør-Trøndelag','16',1161,1), + (3958,'Telemark','06',1161,1), + (3959,'Troms','19',1161,1), + (3960,'Vest-Agder','10',1161,1), + (3961,'Vestfold','07',1161,1), + (3962,'Vestland','46',1161,1), (3963,'Østfold','01',1161,1), (3964,'Jan Mayen','22',1161,1), (3965,'Svalbard','21',1161,1), @@ -12132,90 +12135,90 @@ UNLOCK TABLES; LOCK TABLES `civicrm_subscription_history` WRITE; /*!40000 ALTER TABLE `civicrm_subscription_history` DISABLE KEYS */; INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES - (1,26,2,'2023-04-20 15:20:24','Admin','Added',NULL), - (2,35,2,'2022-12-29 13:22:54','Email','Added',NULL), - (3,201,2,'2023-05-04 04:59:42','Email','Added',NULL), - (4,113,2,'2023-02-04 07:50:04','Email','Added',NULL), - (5,153,2,'2023-06-29 03:06:25','Email','Added',NULL), - (6,81,2,'2022-12-26 10:32:20','Admin','Added',NULL), - (7,61,2,'2023-05-11 10:29:01','Admin','Added',NULL), - (8,5,2,'2023-04-29 02:30:56','Email','Added',NULL), - (9,98,2,'2023-02-18 06:14:47','Email','Added',NULL), - (10,78,2,'2023-05-14 09:18:40','Admin','Added',NULL), - (11,180,2,'2023-06-30 20:28:17','Email','Added',NULL), - (12,182,2,'2023-05-13 06:27:05','Email','Added',NULL), - (13,179,2,'2022-10-09 13:22:29','Admin','Added',NULL), - (14,109,2,'2023-05-12 02:48:06','Email','Added',NULL), - (15,83,2,'2023-01-26 10:07:20','Admin','Added',NULL), - (16,125,2,'2023-06-17 18:55:10','Admin','Added',NULL), - (17,33,2,'2023-02-23 06:35:07','Admin','Added',NULL), - (18,90,2,'2023-04-08 08:33:49','Admin','Added',NULL), - (19,72,2,'2023-01-27 11:48:04','Admin','Added',NULL), - (20,129,2,'2023-08-21 17:38:29','Admin','Added',NULL), - (21,185,2,'2023-05-23 17:29:53','Admin','Added',NULL), - (22,44,2,'2023-08-12 03:39:31','Email','Added',NULL), - (23,169,2,'2023-01-16 02:40:55','Admin','Added',NULL), - (24,96,2,'2023-02-05 13:55:55','Admin','Added',NULL), - (25,114,2,'2023-01-30 16:45:02','Email','Added',NULL), - (26,110,2,'2023-04-27 05:59:55','Admin','Added',NULL), - (27,160,2,'2023-08-18 10:25:14','Admin','Added',NULL), - (28,95,2,'2023-05-18 11:14:21','Admin','Added',NULL), - (29,106,2,'2023-01-19 03:23:23','Email','Added',NULL), - (30,100,2,'2023-06-21 05:46:50','Email','Added',NULL), - (31,20,2,'2022-11-24 04:59:29','Admin','Added',NULL), - (32,155,2,'2023-02-23 09:44:36','Email','Added',NULL), - (33,94,2,'2023-09-09 18:40:24','Admin','Added',NULL), - (34,197,2,'2023-07-21 04:23:19','Email','Added',NULL), - (35,55,2,'2023-06-11 08:01:30','Admin','Added',NULL), - (36,104,2,'2022-10-28 07:08:37','Admin','Added',NULL), - (37,142,2,'2023-05-24 13:50:40','Admin','Added',NULL), - (38,97,2,'2023-02-23 17:04:16','Email','Added',NULL), - (39,120,2,'2023-03-28 21:52:17','Email','Added',NULL), - (40,105,2,'2023-08-30 02:55:31','Email','Added',NULL), - (41,43,2,'2023-07-09 21:08:04','Admin','Added',NULL), - (42,70,2,'2023-07-20 03:49:54','Email','Added',NULL), - (43,119,2,'2023-08-06 12:54:27','Admin','Added',NULL), - (44,16,2,'2022-10-19 14:05:53','Email','Added',NULL), - (45,47,2,'2023-07-08 14:47:36','Email','Added',NULL), - (46,15,2,'2023-06-18 16:47:02','Email','Added',NULL), - (47,199,2,'2022-11-23 10:12:42','Email','Added',NULL), - (48,165,2,'2023-08-25 00:48:12','Email','Added',NULL), - (49,188,2,'2022-11-29 10:28:06','Email','Added',NULL), - (50,146,2,'2022-10-13 20:53:57','Email','Added',NULL), - (51,2,2,'2023-03-31 20:13:03','Email','Added',NULL), - (52,91,2,'2022-12-12 21:39:48','Admin','Added',NULL), - (53,54,2,'2023-09-20 09:33:32','Admin','Added',NULL), - (54,30,2,'2023-03-18 20:13:01','Admin','Added',NULL), - (55,164,2,'2023-09-22 02:14:57','Admin','Added',NULL), - (56,170,2,'2023-07-27 21:42:09','Admin','Added',NULL), - (57,138,2,'2023-06-26 12:02:03','Email','Added',NULL), - (58,156,2,'2022-11-17 19:58:19','Admin','Added',NULL), - (59,177,2,'2023-06-06 23:29:30','Admin','Added',NULL), - (60,7,2,'2023-08-17 04:14:53','Admin','Added',NULL), - (61,143,3,'2022-12-11 17:37:23','Email','Added',NULL), - (62,122,3,'2022-11-05 23:51:49','Email','Added',NULL), - (63,196,3,'2022-11-25 20:27:49','Admin','Added',NULL), - (64,198,3,'2022-12-29 02:48:57','Email','Added',NULL), - (65,181,3,'2022-12-16 16:42:05','Admin','Added',NULL), - (66,102,3,'2023-09-03 11:57:32','Admin','Added',NULL), - (67,167,3,'2023-10-03 22:50:37','Email','Added',NULL), - (68,68,3,'2023-04-07 19:31:00','Email','Added',NULL), - (69,189,3,'2023-08-25 09:59:16','Admin','Added',NULL), - (70,115,3,'2023-06-17 08:11:57','Email','Added',NULL), - (71,12,3,'2023-09-29 16:40:49','Email','Added',NULL), - (72,195,3,'2023-03-30 10:24:21','Email','Added',NULL), - (73,192,3,'2022-12-16 03:52:26','Email','Added',NULL), - (74,36,3,'2023-06-11 22:40:10','Email','Added',NULL), - (75,32,3,'2023-03-10 21:51:06','Email','Added',NULL), - (76,26,4,'2023-05-09 00:52:42','Email','Added',NULL), - (77,5,4,'2023-02-02 16:44:11','Admin','Added',NULL), - (78,83,4,'2023-04-17 01:20:53','Email','Added',NULL), - (79,44,4,'2023-03-06 22:53:03','Email','Added',NULL), - (80,106,4,'2023-08-14 13:42:11','Admin','Added',NULL), - (81,104,4,'2023-03-25 02:23:06','Email','Added',NULL), - (82,119,4,'2022-11-30 01:21:40','Admin','Added',NULL), - (83,146,4,'2023-08-02 09:07:22','Admin','Added',NULL), - (84,202,4,'2022-11-18 03:01:21','Admin','Added',NULL); + (1,31,2,'2023-06-17 06:42:04','Admin','Added',NULL), + (2,25,2,'2023-07-29 17:06:05','Email','Added',NULL), + (3,35,2,'2023-10-10 10:20:46','Email','Added',NULL), + (4,142,2,'2023-05-12 17:24:35','Email','Added',NULL), + (5,5,2,'2023-08-15 17:12:02','Email','Added',NULL), + (6,54,2,'2023-04-21 05:22:06','Email','Added',NULL), + (7,4,2,'2022-11-15 04:45:11','Email','Added',NULL), + (8,82,2,'2023-04-27 11:52:00','Admin','Added',NULL), + (9,9,2,'2023-02-07 22:19:44','Email','Added',NULL), + (10,143,2,'2023-10-15 15:04:37','Email','Added',NULL), + (11,123,2,'2022-12-13 18:45:27','Email','Added',NULL), + (12,78,2,'2023-10-11 10:52:30','Admin','Added',NULL), + (13,70,2,'2023-09-05 08:07:37','Admin','Added',NULL), + (14,173,2,'2023-01-03 19:01:41','Email','Added',NULL), + (15,83,2,'2023-09-22 10:32:39','Email','Added',NULL), + (16,72,2,'2023-08-16 17:46:34','Admin','Added',NULL), + (17,186,2,'2023-07-10 09:04:31','Admin','Added',NULL), + (18,127,2,'2023-08-03 16:56:41','Email','Added',NULL), + (19,101,2,'2022-11-22 16:12:44','Admin','Added',NULL), + (20,30,2,'2023-04-14 11:28:27','Email','Added',NULL), + (21,89,2,'2023-05-01 10:11:01','Email','Added',NULL), + (22,187,2,'2022-10-24 23:34:49','Email','Added',NULL), + (23,194,2,'2023-01-14 21:44:34','Email','Added',NULL), + (24,136,2,'2023-10-06 04:42:02','Email','Added',NULL), + (25,115,2,'2023-05-29 09:42:23','Email','Added',NULL), + (26,129,2,'2022-12-15 17:58:49','Email','Added',NULL), + (27,168,2,'2023-06-01 16:19:03','Email','Added',NULL), + (28,157,2,'2022-12-04 05:28:34','Email','Added',NULL), + (29,172,2,'2023-01-29 07:28:48','Email','Added',NULL), + (30,117,2,'2023-01-18 06:12:33','Admin','Added',NULL), + (31,197,2,'2023-03-09 01:17:18','Email','Added',NULL), + (32,98,2,'2023-02-15 00:17:23','Email','Added',NULL), + (33,185,2,'2023-05-01 02:10:24','Admin','Added',NULL), + (34,132,2,'2023-03-03 17:21:03','Email','Added',NULL), + (35,94,2,'2023-05-25 12:14:49','Email','Added',NULL), + (36,11,2,'2023-06-07 12:12:02','Email','Added',NULL), + (37,178,2,'2023-08-19 05:20:04','Admin','Added',NULL), + (38,144,2,'2023-05-24 13:01:58','Email','Added',NULL), + (39,201,2,'2023-07-02 04:57:33','Admin','Added',NULL), + (40,87,2,'2023-03-03 03:27:18','Admin','Added',NULL), + (41,128,2,'2023-08-22 03:14:14','Email','Added',NULL), + (42,8,2,'2023-08-22 14:29:05','Email','Added',NULL), + (43,33,2,'2023-08-15 06:22:34','Admin','Added',NULL), + (44,42,2,'2022-12-12 14:44:03','Email','Added',NULL), + (45,80,2,'2023-08-12 15:59:31','Email','Added',NULL), + (46,153,2,'2023-02-17 13:31:32','Admin','Added',NULL), + (47,120,2,'2023-01-25 22:23:30','Admin','Added',NULL), + (48,169,2,'2023-10-11 23:30:19','Email','Added',NULL), + (49,130,2,'2023-02-24 19:28:54','Admin','Added',NULL), + (50,28,2,'2023-08-29 17:25:45','Admin','Added',NULL), + (51,93,2,'2023-06-01 23:00:05','Email','Added',NULL), + (52,17,2,'2023-03-05 09:50:24','Admin','Added',NULL), + (53,38,2,'2023-03-09 00:19:48','Email','Added',NULL), + (54,174,2,'2023-08-20 04:36:59','Admin','Added',NULL), + (55,81,2,'2023-06-08 11:19:53','Admin','Added',NULL), + (56,113,2,'2023-07-04 18:46:49','Email','Added',NULL), + (57,71,2,'2022-12-30 21:23:31','Admin','Added',NULL), + (58,56,2,'2023-01-19 09:16:37','Email','Added',NULL), + (59,171,2,'2023-01-20 19:56:48','Admin','Added',NULL), + (60,97,2,'2023-08-05 00:57:20','Admin','Added',NULL), + (61,29,3,'2023-02-12 19:03:55','Email','Added',NULL), + (62,138,3,'2023-07-27 12:54:22','Admin','Added',NULL), + (63,145,3,'2023-03-03 07:51:51','Admin','Added',NULL), + (64,166,3,'2023-07-16 17:54:55','Email','Added',NULL), + (65,107,3,'2022-10-20 20:33:11','Admin','Added',NULL), + (66,105,3,'2022-10-29 13:51:38','Admin','Added',NULL), + (67,167,3,'2023-04-28 14:06:13','Email','Added',NULL), + (68,192,3,'2023-10-16 07:50:41','Email','Added',NULL), + (69,37,3,'2023-06-29 19:06:47','Admin','Added',NULL), + (70,27,3,'2023-09-30 14:03:02','Admin','Added',NULL), + (71,40,3,'2023-06-18 18:53:12','Admin','Added',NULL), + (72,165,3,'2022-12-20 17:01:53','Admin','Added',NULL), + (73,184,3,'2023-08-23 17:10:56','Admin','Added',NULL), + (74,158,3,'2023-06-12 00:08:33','Email','Added',NULL), + (75,102,3,'2022-10-28 05:16:22','Admin','Added',NULL), + (76,31,4,'2022-11-12 19:16:25','Admin','Added',NULL), + (77,82,4,'2023-03-30 02:39:23','Admin','Added',NULL), + (78,83,4,'2023-04-28 09:57:10','Email','Added',NULL), + (79,187,4,'2022-12-28 18:09:01','Email','Added',NULL), + (80,172,4,'2023-06-03 10:17:38','Email','Added',NULL), + (81,11,4,'2023-07-02 11:27:36','Admin','Added',NULL), + (82,33,4,'2022-10-24 06:16:09','Email','Added',NULL), + (83,28,4,'2023-04-21 11:40:19','Admin','Added',NULL), + (84,202,4,'2023-08-23 03:21:20','Email','Added',NULL); /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */; UNLOCK TABLES; @@ -12243,12 +12246,12 @@ UNLOCK TABLES; LOCK TABLES `civicrm_tag` WRITE; /*!40000 ALTER TABLE `civicrm_tag` DISABLE KEYS */; -INSERT INTO `civicrm_tag` (`id`, `name`, `description`, `parent_id`, `is_selectable`, `is_reserved`, `is_tagset`, `used_for`, `created_id`, `color`, `created_date`) VALUES - (1,'Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (2,'Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (3,'Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (4,'Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL), - (5,'Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,NULL,NULL); +INSERT INTO `civicrm_tag` (`id`, `name`, `label`, `description`, `parent_id`, `is_selectable`, `is_reserved`, `is_tagset`, `used_for`, `created_id`, `color`, `created_date`) VALUES + (1,'Non_profit','Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0bcb21','2023-10-19 14:22:28'), + (2,'Company','Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#2260c3','2023-10-19 14:22:28'), + (3,'Government_Entity','Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,'#cd4b13','2023-10-19 14:22:28'), + (4,'Major_Donor','Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0cdae9','2023-10-19 14:22:28'), + (5,'Volunteer','Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,'#f0dc00','2023-10-19 14:22:28'); /*!40000 ALTER TABLE `civicrm_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -12441,22 +12444,19 @@ UNLOCK TABLES; LOCK TABLES `civicrm_website` WRITE; /*!40000 ALTER TABLE `civicrm_website` DISABLE KEYS */; INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES - (1,31,'http://bfmusicassociation.org',1), - (2,150,'http://vnliteracysolutions.org',1), - (3,133,'http://texasculturealliance.org',1), - (4,168,'http://globalagriculture.org',1), - (5,174,'http://maplehealthfellowship.org',1), - (6,190,'http://floridatechnology.org',1), - (7,74,'http://longvilleactioncenter.org',1), - (8,89,'http://greenaction.org',1), - (9,171,'http://jacksonpeace.org',1), - (10,121,'http://californiacollective.org',1), - (11,50,'http://collegeadvocacy.org',1), - (12,112,'http://jamaicaarts.org',1), - (13,53,'http://communityeducationpartnership.org',1), - (14,111,'http://statesactionsystems.org',1), - (15,17,'http://lancastersustainability.org',1), - (16,51,'http://montierpeace.org',1); + (1,103,'http://oregondevelopment.org',1), + (2,135,'http://sacramentopartners.org',1), + (3,77,'http://globalwellnesscenter.org',1), + (4,22,'http://bostonacademy.org',1), + (5,68,'http://unitedagriculture.org',1), + (6,133,'http://progressivepartnership.org',1), + (7,19,'http://creativesolutions.org',1), + (8,161,'http://progressivenetwork.org',1), + (9,69,'http://globalsportscenter.org',1), + (10,95,'http://ruralagriculturetrust.org',1), + (11,139,'http://ruralinitiative.org',1), + (12,7,'http://hanovereducation.org',1), + (13,148,'http://localtrust.org',1); /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */; UNLOCK TABLES; @@ -12488,12 +12488,13 @@ UNLOCK TABLES; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2023-10-07 1:51:42 +-- Dump completed on 2023-10-19 14:22:31 -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | diff --git a/civicrm/templates/CRM/Admin/Form/Job.tpl b/civicrm/templates/CRM/Admin/Form/Job.tpl index d2c0582808f7fe862470d745637957506898c235..839653cef2e8544ae40b1d4ed846c11c1b746865 100644 --- a/civicrm/templates/CRM/Admin/Form/Job.tpl +++ b/civicrm/templates/CRM/Admin/Form/Job.tpl @@ -35,57 +35,11 @@ <tr class="crm-job-form-block-run_frequency"> <td class="label">{$form.run_frequency.label}</td><td>{$form.run_frequency.html}</td> </tr> + <tr class="crm-job-form-block-api_entity"> + <td class="label">{$form.api_entity.label}</td><td>{$form.api_entity.html}</td> + </tr> <tr class="crm-job-form-block-api_action"> - <td class="label"><label>{ts}API call:{/ts}</label></td> - <td> - - <div id="fname"><br/> - </div> - <select name="api_entity" type="text" id="api_entity" class="crm-form-select required"> - {crmAPI entity="Entity" var="entities"} - {foreach from=$entities.values item=entity} - <option value="{$entity}"{if $entity eq $form.api_entity.value} selected="selected"{/if}>{$entity}</option> - {/foreach} - </select> - {$form.api_action.html} - - <div class="description">{ts}Put in the API method name. You need to enter pieces of full API function name as described in the documentation.{/ts}</div> -<script> -{literal} -CRM.$(function($) { - function assembleName( ) { - - // dunno yet - var apiName = ""; - - // building prefix - if( $('#api_action').val() == '' ) { - $('#fname').html( "<em>API name will start appearing here as you type in fields below.</em>" ); - return; - } - - var apiPrefix = 'api' - - // building entity - var apiEntity = $('#api_entity').val().replace( /([A-Z])/g, function($1) { - return $1.toLowerCase(); - }); - // building action - var apiAction = $('#api_action').val().replace(/(\_[a-z])/g, function($1) {return $1.toUpperCase().replace('_','');}); - apiName = apiPrefix + '.' + apiEntity + '.' + apiAction; - $('#fname').text( apiName ); - } - - // bind to different events to build API name live - $('#api_entity').change(assembleName) - $('#api_action').change(assembleName).keyup(assembleName); - assembleName(); -}); - -{/literal} -</script> - - </td> + <td class="label">{$form.api_action.label}</td><td>{$form.api_action.html}</td> </tr> <tr class="crm-job-form-block-parameters"> <td class="label">{$form.parameters.label}<br />{docURL page="user/initial-set-up/scheduled-jobs/#parameters"}</td> diff --git a/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl b/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl index 3750619f9b2ddabf6af73e2d63177476b851d00d..c7862dcdc19cbbea3002c0aaf2c8a18679b84a03 100644 --- a/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl +++ b/civicrm/templates/CRM/Admin/Form/MessageTemplates.tpl @@ -78,14 +78,14 @@ <div class="clear"></div> <div class='html'> {$form.msg_html.html|crmAddClass:huge} - <div class="description">{ts}An HTML formatted version of this message will be sent to contacts whose Email Format preference is 'HTML' or 'Both'.{/ts}</div> </div> </div><!-- /.crm-accordion-body --> </div><!-- /.crm-accordion-wrapper --> <div id="msg_text_section" class="crm-accordion-wrapper crm-plaint_text_email-accordion "> <div class="crm-accordion-header"> - {ts}Plain-Text Format{/ts} + {ts}Optional Plain-Text Format{/ts} + {help id="id-message-plain" file="CRM/Contact/Form/Task/Email.hlp"} </div><!-- /.crm-accordion-header --> <div class="crm-accordion-body"> <div class="helpIcon" id="helptext"> @@ -95,7 +95,6 @@ <div class="clear"></div> <div class='text'> {$form.msg_text.html|crmAddClass:huge} - <div class="description">{ts}Text formatted message.{/ts}</div> </div> </div><!-- /.crm-accordion-body --> </div><!-- /.crm-accordion-wrapper --> diff --git a/civicrm/templates/CRM/Admin/Page/MailSettings.tpl b/civicrm/templates/CRM/Admin/Page/MailSettings.tpl index 7fce4665dd291f60ecd8fd291a05b9d566bebbd5..80b2996e2584a5305ff37d55688c69b9782eba26 100644 --- a/civicrm/templates/CRM/Admin/Page/MailSettings.tpl +++ b/civicrm/templates/CRM/Admin/Page/MailSettings.tpl @@ -61,7 +61,7 @@ <select id="crm-mail-setup" name="crm-mail-setup" class="crm-select2 crm-form-select" aria-label="{ts}Add Mail Account{/ts}"> <option value="" aria-hidden="true">{ts}Add Mail Account{/ts}</option> {foreach from=$setupActions key=setupActionsName item=setupAction} - <option value="{$setupActionsName|escape}">{$setupAction.title|escape}</option> + <option data-url="{$setupAction.url|escape}" value="{$setupActionsName|escape}">{$setupAction.title|escape}</option> {/foreach} </select> </form> @@ -80,8 +80,7 @@ return; } event.stopPropagation(); - var url = CRM.url('civicrm/ajax/setupMailAccount', {type: event.val}); - window.location = url; + window.location = cj(event.choice.element).data('url'); }); </script> {/literal} diff --git a/civicrm/templates/CRM/Admin/Page/Reminders.tpl b/civicrm/templates/CRM/Admin/Page/Reminders.tpl index 0418fd99e4a59eafd686c25094da278c94756caf..c04b229e70e6f8c2a8c3c388e02ccffc40e2dc91 100644 --- a/civicrm/templates/CRM/Admin/Page/Reminders.tpl +++ b/civicrm/templates/CRM/Admin/Page/Reminders.tpl @@ -29,7 +29,7 @@ {if $rows and is_array($rows)} {foreach from=$rows item=row} <tr id="action_schedule-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"} {$row.class}{if NOT $row.is_active} disabled{/if}"> - <td class="crm-scheduleReminders-title crm-editable" data-field="title">{$row.title}</td> + <td class="crm-scheduleReminders-title crm-editable" data-field="title">{$row.title|smarty:nodefaults|purify}</td> <td class="crm-scheduleReminders-value">{$row.entity} - {$row.value}</td> <td class="crm-scheduleReminders-description">{if $row.absolute_date}{$row.absolute_date|crmDate}{else}{$row.start_action_offset} {$row.start_action_unit}{if $row.start_action_offset > 1}{ts}(s){/ts}{/if} {$row.start_action_condition} {$row.entityDate}{/if}</td> <td class="crm-scheduleReminders-title">{$row.status}</td> diff --git a/civicrm/templates/CRM/Case/Form/Activity.tpl b/civicrm/templates/CRM/Case/Form/Activity.tpl index 90744ee0c6bb32847c2078a63212ee635684d4f2..ec74f696221a732ddbff050df0470d97a60a2fef 100644 --- a/civicrm/templates/CRM/Case/Form/Activity.tpl +++ b/civicrm/templates/CRM/Case/Form/Activity.tpl @@ -14,11 +14,9 @@ <div class="messages status no-popup"> <i class="crm-i fa-info-circle" aria-hidden="true"></i> {if $action eq 8} - {* activityTypeName means label here not name, but it's ok because label is desired here (dev/core#1116-ok-label) *} - {ts 1=$activityTypeName}Click Delete to move this "%1" activity to the Trash.{/ts} + {ts 1=$activityTypeNameAndLabel.displayLabel|escape}Click Delete to move this "%1" activity to the Trash.{/ts} {else} - {* activityTypeName means label here not name, but it's ok because label is desired here (dev/core#1116-ok-label) *} - {ts 1=$activityTypeName}Click Restore to retrieve this "%1" activity from the Trash.{/ts} + {ts 1=$activityTypeNameAndLabel.displayLabel|escape}Click Restore to retrieve this "%1" activity from the Trash.{/ts} {/if} </div><br /> {else} @@ -89,8 +87,7 @@ <tr class="crm-case-activity-form-block-activityTypeName"> <td class="label">{ts}Activity Type{/ts}</td> - {* activityTypeName means label here not name, but it's ok because label is desired here (dev/core#1116-ok-label) *} - <td class="view-value bold">{$activityTypeName|escape}</td> + <td class="view-value bold">{$activityTypeNameAndLabel.displayLabel|escape}</td> </tr> <tr class="crm-case-activity-form-block-source_contact_id"> <td class="label">{$form.source_contact_id.label}</td> diff --git a/civicrm/templates/CRM/Case/Form/CaseView.tpl b/civicrm/templates/CRM/Case/Form/CaseView.tpl index bb5d90f0580922c7674a9920bb3fe9a798d165e9..dc6b80ea4071def597ebe7d73085b4784ef27ae6 100644 --- a/civicrm/templates/CRM/Case/Form/CaseView.tpl +++ b/civicrm/templates/CRM/Case/Form/CaseView.tpl @@ -304,8 +304,8 @@ {foreach from=$tagSetTags item=displayTagset} <p class="crm-block crm-content-block crm-case-caseview-display-tagset"> - <strong>{$displayTagset.name}:</strong> - {', '|implode:$displayTagset.items} + <strong>{$displayTagset.label}:</strong> + {', '|implode:$displayTagset.items|escape} </p> {/foreach} diff --git a/civicrm/templates/CRM/Contact/Form/Edit/Organization.tpl b/civicrm/templates/CRM/Contact/Form/Edit/Organization.tpl index 0aaf0d3942133a01a459641f4b21e732080d7850..db66fdc2837c508cf6cb3872ec2a753e97d76178 100644 --- a/civicrm/templates/CRM/Contact/Form/Edit/Organization.tpl +++ b/civicrm/templates/CRM/Contact/Form/Edit/Organization.tpl @@ -11,26 +11,28 @@ <table class="form-layout-compressed"> {crmRegion name="contact-form-edit-organization"} <tr> - <td>{ - $form.organization_name.label}<br/> + <td> + {$form.organization_name.label|smarty:nodefaults|purify}<br/> {$form.organization_name.html} </td> <td> - {$form.legal_name.label}<br/> + {$form.legal_name.label|smarty:nodefaults|purify}<br/> {$form.legal_name.html} </td> <td> - {$form.nick_name.label}<br/> + {$form.nick_name.label|smarty:nodefaults|purify}<br/> {$form.nick_name.html} </td> <td> - {$form.sic_code.label}<br/> + {$form.sic_code.label|smarty:nodefaults|purify}<br/> {$form.sic_code.html} </td> - <td> - {$form.contact_sub_type.label}<br /> - {$form.contact_sub_type.html} - </td> + {if array_key_exists('contact_sub_type', $form)} + <td> + {$form.contact_sub_type.label|smarty:nodefaults|purify}<br /> + {$form.contact_sub_type.html} + </td> + {/if} </tr> {/crmRegion} </table> diff --git a/civicrm/templates/CRM/Contact/Form/Inline/CommunicationPreferences.tpl b/civicrm/templates/CRM/Contact/Form/Inline/CommunicationPreferences.tpl index 26544de0eede12d4883cd888ee99253872860bc0..ded4c5981bb1062d0f88b08e7b7546cc7704a372 100644 --- a/civicrm/templates/CRM/Contact/Form/Inline/CommunicationPreferences.tpl +++ b/civicrm/templates/CRM/Contact/Form/Inline/CommunicationPreferences.tpl @@ -30,8 +30,7 @@ {if $key eq 'privacy'} <div class="crm-summary-row"> <div class="crm-label"> </div> - <div class="crm-content">{ - $form.is_opt_out.html} {$form.is_opt_out.label} {help id="id-optOut" file="CRM/Contact/Form/Contact.hlp"} + <div class="crm-content">{$form.is_opt_out.html} {$form.is_opt_out.label} {help id="id-optOut" file="CRM/Contact/Form/Contact.hlp"} </div> </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Form/Task/Email.hlp b/civicrm/templates/CRM/Contact/Form/Task/Email.hlp index e9a357730bff373f980f095e07ad88fda986faae..c2f28034bad7555a6ed2fab1a24ca79a6a13ff15 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/Email.hlp +++ b/civicrm/templates/CRM/Contact/Form/Task/Email.hlp @@ -55,7 +55,15 @@ be an equal sign and a number (=12). The number (12 in this example) is the id o {ts}Message Text{/ts} {/htxt} {htxt id="id-message-text"} -<p>{ts}You can send your email as a simple text-only message, as an HTML formatted message, or both. Text-only messages are sufficient for most email communication - and some recipients may prefer not to receive HTML formatted messages.{/ts}</p> -<p>{ts}HTML messages have more visual impact, allow you to include images, and may be more readable if you are including links to website pages. However, different email programs may interpret HTML formats differently - so use this option cautiously unless you have a template format that has been tested with different web and desktop email programs.{/ts}</p> +<p>{ts}You can include tokens in your message{/ts}</p> <p>{docURL page="user/common-workflows/tokens-and-mail-merge" text=$tokentext}</p> {/htxt} +{htxt id="id-message-text-title"} + {ts}Message Plain Text{/ts} +{/htxt} +{htxt id="id-message-plain"} +<p>{ts}Configuring a plain text version of a message is optional will be removed from CiviCRM in a future version.{/ts}</p> +<p>{ts}If the text version is blank one will be automatically generated from the HTML content.{/ts}</p> +{capture assign=plainText}{ts}Find out more about including a plain text version{/ts}{/capture} +<p>{docURL page="user/common-workflows/tokens-and-mail-merge" text=$plainText}</p> +{/htxt} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl index 5b13d71471a4c1cc881bda09337e2846023a881a..5d8492e35d52730a026d64cd98212b07a261a4ad 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl @@ -276,14 +276,10 @@ </fieldset> {/if} - {if $contributeMode NEQ 'notify' and $is_monetary and ( $amount GT 0 OR $minimum_fee GT 0 )} {* In 'notify mode, contributor is taken to processor payment forms next *} + {if $confirmText} <div class="messages status continue_instructions-section"> <p> - {if $is_pay_later OR $amount LE 0.0} - {ts 1=$button}Your transaction will not be completed until you click the <strong>%1</strong> button. Please click the button one time only.{/ts} - {else} - {ts 1=$button}Your contribution will not be completed until you click the <strong>%1</strong> button. Please click the button one time only.{/ts} - {/if} + {$confirmText} </p> </div> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl index 08c54321bcc73b98308cc3de1b1e17f3353e951d..33ff5ce7f32c73ba597a6f4314eab3abce9c88f2 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl @@ -17,12 +17,10 @@ <script type="text/javascript"> // Putting these functions directly in template so they are available for standalone forms - function useAmountOther() { - var priceset = {/literal}{if $contriPriceset}'{$contriPriceset}'{else}0{/if}{literal}; - - for( i=0; i < document.Main.elements.length; i++ ) { + function useAmountOther(mainPriceFieldName) { + for( i=0; i < document.Main.elements.length; i++ ) { element = document.Main.elements[i]; - if ( element.type == 'radio' && element.name == priceset ) { + if ( element.type == 'radio' && element.name === mainPriceFieldName ) { if (element.value == '0' ) { element.click(); } @@ -33,12 +31,9 @@ } } - function clearAmountOther() { - var priceset = {/literal}{if $priceset}'#{$priceset}'{else}0{/if}{literal} - if( priceset ){ - cj(priceset).val(''); - cj(priceset).blur(); - } + function clearAmountOther(otherPriceFieldName) { + cj('#' + otherPriceFieldName).val(''); + cj('#' + otherPriceFieldName).blur(); if (document.Main.amount_other == null) return; // other_amt field not present; do nothing document.Main.amount_other.value = ""; } @@ -71,7 +66,7 @@ </div> {include file="CRM/common/cidzero.tpl"} - {if $islifetime or $ispricelifetime} + {if $isShowMembershipBlock && $hasExistingLifetimeMembership} <div class="help">{ts}You have a current Lifetime Membership which does not need to be renewed.{/ts}</div> {/if} @@ -118,13 +113,13 @@ {$form.pledge_frequency_unit.html}<span id="pledge_installments_num"> {ts}for{/ts} {$form.pledge_installments.html} {ts}installments.{/ts}</span> </div> <div class="clear"></div> - {if $start_date_editable} + {if array_key_exists('start_date', $form) && $start_date_editable} {if $is_date} <div class="label">{$form.start_date.label}</div><div class="content">{$form.start_date.html}</div> {else} <div class="label">{$form.start_date.label}</div><div class="content">{$form.start_date.html}</div> {/if} - {else} + {elseif array_key_exists('start_date', $form)} <div class="label">{$form.start_date.label}</div> <div class="content">{$start_date_display|crmDate:'%b %e, %Y'}</div> {/if} @@ -188,7 +183,7 @@ {include file="CRM/common/CMSUser.tpl"} </div> <div class="crm-public-form-item crm-section premium_block-section"> - {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="makeContribution"} + {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="makeContribution" preview=false} </div> {if $honoreeProfileFields && $honoreeProfileFields|@count} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl index 7077c12d7539e0891dbc228e2dc387a61080c352..309ced9349f353f81c6340b1b818389cf557b73a 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/PremiumBlock.tpl @@ -114,7 +114,7 @@ {literal} <script> CRM.$(function($) { - var is_separate_payment = {/literal}{if $membershipBlock.is_separate_payment}{$membershipBlock.is_separate_payment}{else}0{/if}{literal}; + var is_separate_payment = {/literal}{if $isShowMembershipBlock && $membershipBlock.is_separate_payment}{$membershipBlock.is_separate_payment}{else}0{/if}{literal}; // select a new premium function select_premium(premium_id) { diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl index 7f2d19e901b306863fa8a4a837efb82be6789db8..2feecd42002ab10529644b8536251d6c82570bd9 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/Amount.tpl @@ -199,12 +199,7 @@ {literal} <script type="text/javascript"> - var futurePaymentProcessorMapper = []; - {/literal}{if $futurePaymentProcessor} - {foreach from=$futurePaymentProcessor item="futurePaymentProcessor" key="index"}{literal} - futurePaymentProcessorMapper[{/literal}{$index}{literal}] = '{/literal}{$futurePaymentProcessor}{literal}'; - {/literal}{/foreach} - {literal} + {/literal}{if $futurePaymentProcessor}{literal} CRM.$(function($) { var defId = $('input[name="pledge_default_toggle"][value="contribution_date"]').attr('id'); var calId = $('input[name="pledge_default_toggle"][value="calendar_date"]').attr('id'); @@ -382,13 +377,13 @@ function showAdjustRecurring( paymentProcessorIds ) { var display = true; cj.each(paymentProcessorIds, function(k, id){ - if( cj.inArray(id, futurePaymentProcessorMapper) == -1 ) { - display = false; - } + if( cj.inArray(parseInt(id), {/literal}{$futurePaymentProcessor}{literal}) == -1 ) { + display = false; + } }); if(display) { - cj( '#adjustRecurringFields' ).show( ); + cj('#adjustRecurringFields').show(); } else { if ( cj( '#adjust_recur_start_date' ).prop('checked' ) ) { cj( '#adjust_recur_start_date' ).prop('checked', false); diff --git a/civicrm/templates/CRM/Custom/Form/Edit/CustomField.tpl b/civicrm/templates/CRM/Custom/Form/Edit/CustomField.tpl index 24f0e5b7f44f379e92892915e3fe7aa60c42802a..34dd650732ff5ee92d1f923e35664f70dc89fc77 100644 --- a/civicrm/templates/CRM/Custom/Form/Edit/CustomField.tpl +++ b/civicrm/templates/CRM/Custom/Form/Edit/CustomField.tpl @@ -14,7 +14,12 @@ <td class="html-adjust description">{$element.help_pre}</td> </tr> {/if} -{if $element.options_per_line} +{if $element.html_type === 'Hidden'} + {* Hidden field - render in hidden row *} + <tr class="custom_field-row {$element.element_name}-row hiddenElement"> + <td>{$formElement.html}</td> + </tr> +{elseif $element.options_per_line} <tr class="custom_field-row {$element.element_name}-row"> <td class="label">{$formElement.label}{if $element.help_post}{help id=$element.id file="CRM/Custom/Form/CustomField.hlp" title=$element.label}{/if}</td> <td class="html-adjust"> diff --git a/civicrm/templates/CRM/Custom/Form/Field.tpl b/civicrm/templates/CRM/Custom/Form/Field.tpl index 4792fdc39fbfacd58eea2e10f03308504e385007..e4476c6442009a33e34ec3adedf960ff2747b6a1 100644 --- a/civicrm/templates/CRM/Custom/Form/Field.tpl +++ b/civicrm/templates/CRM/Custom/Form/Field.tpl @@ -270,7 +270,7 @@ } if (_.includes(['String', 'Int', 'Float', 'Money'], dataType)) { - if (htmlType !== "Text") { + if (!['Text', 'Hidden'].includes(htmlType)) { $("#showoption, #searchable", $form).show(); $("#hideDefault, #hideDesc, #searchByRange", $form).hide(); } else { @@ -289,7 +289,7 @@ $("#showoption").hide(); } - if (_.includes(['String', 'Int', 'Float', 'Money'], dataType) && htmlType !== 'Text') { + if (_.includes(['String', 'Int', 'Float', 'Money'], dataType) && !['Text', 'Hidden'].includes(htmlType)) { if (serialize) { $('div[id^=checkbox]', '#optionField').show(); $('div[id^=radio]', '#optionField').hide(); diff --git a/civicrm/templates/CRM/Custom/Form/Group.tpl b/civicrm/templates/CRM/Custom/Form/Group.tpl index cfde76ea872030577a0f5ceb8621d5e59ce31b8e..d38c2031255b53b6170f5e175ce8431cfba40877 100644 --- a/civicrm/templates/CRM/Custom/Form/Group.tpl +++ b/civicrm/templates/CRM/Custom/Form/Group.tpl @@ -172,7 +172,7 @@ CRM.$(function($) { // When changing or initializing the `is_multiple` field // Check if this set supports multiple records and adjust other options accordingly function handleMultiple() { - if ($(this).is(':checked')) { + if ($(this).is(':checked') || ($(this).attr('type') === 'hidden' && $(this).val() === '1')) { $('tr.field-max_multiple', $form).show(); if (tabWithTableOption) { $('select[name=style]', $form).append(tabWithTableOption); diff --git a/civicrm/templates/CRM/Event/Form/ManageEvent/Fee.tpl b/civicrm/templates/CRM/Event/Form/ManageEvent/Fee.tpl index 7162790c3e13248f6117f5d7a6d3935309e3f5b3..e3bebc96ea4e72ab3bec43ff070c285fbabaa6dc 100644 --- a/civicrm/templates/CRM/Event/Form/ManageEvent/Fee.tpl +++ b/civicrm/templates/CRM/Event/Form/ManageEvent/Fee.tpl @@ -18,10 +18,6 @@ {/if} <div class="crm-block crm-form-block crm-event-manage-fee-form-block"> <table class="form-layout"> - <tr class="crm-event-manage-fee-form-block-title"> - <td class="label">{$form.title.label}</td> - <td>{$form.title.html}</td> - </tr> <tr class="crm-event-manage-fee-form-block-is_monetary"> <td class="label">{$form.is_monetary.label}</td> <td>{$form.is_monetary.html}</td> diff --git a/civicrm/templates/CRM/Event/Page/DashBoard.tpl b/civicrm/templates/CRM/Event/Page/DashBoard.tpl index 56587d3880f801f00a9ae84297b9011e909c9770..1fb1c38ce3a0cd7ba3b7690fe1ba6a906104d028 100644 --- a/civicrm/templates/CRM/Event/Page/DashBoard.tpl +++ b/civicrm/templates/CRM/Event/Page/DashBoard.tpl @@ -37,7 +37,7 @@ <tbody> {foreach from=$eventSummary.events item=values key=id} <tr class="crm-event_{$id}"> - <td class="crm-event-eventTitle"><a href="{crmURL p="civicrm/event/info" q="reset=1&id=`$id`"}" title="{ts}View event info page{/ts}">{$values.eventTitle}</a> + <td class="crm-event-eventTitle"><a href="{crmURL p="civicrm/event/info" q="reset=1&id=`$id`"}" title="{ts}View event info page{/ts}">{$values.eventTitle|smarty:nodefaults|purify}</a> {if $values.is_repeating_event} <br/> {if $values.is_repeating_event eq $id} diff --git a/civicrm/templates/CRM/Form/validate.tpl b/civicrm/templates/CRM/Form/validate.tpl index 297364a9d6ec05a1fa59fab5ab51ad25c90eb8ba..4740d0b687a3c8ba063d645c5d6b8b9f552966e4 100644 --- a/civicrm/templates/CRM/Form/validate.tpl +++ b/civicrm/templates/CRM/Form/validate.tpl @@ -9,7 +9,7 @@ *} {* Initialize jQuery validate on a form *} {* Extra params and functions may be added to the CRM.validate object before this template is loaded *} -{if empty($crm_form_validate_included) && ((isset($smarty.get.snippet|smarty:nodefaults) && $smarty.get.snippet neq 'json') || !isset($smarty.get.snippet|smarty:nodefaults)) && !empty($form) && !empty($form.formClass)} +{if empty($crm_form_validate_included) && $snippet_type neq 'json' && !empty($form) && !empty($form.formClass)} {assign var=crm_form_validate_included value=1} {literal} <script type="text/javascript"> diff --git a/civicrm/templates/CRM/PCP/Form/PCP.tpl b/civicrm/templates/CRM/PCP/Form/PCP.tpl index 156667116dc5971ae74d80092c43f2f8a9244563..c96b51bafbe2e3ce8b7a5674e7c6085c61c9a0ce 100644 --- a/civicrm/templates/CRM/PCP/Form/PCP.tpl +++ b/civicrm/templates/CRM/PCP/Form/PCP.tpl @@ -45,7 +45,7 @@ <td>{$form.notify_email.html} {help id="id-notify"}</td> </tr> <tr class="crm-contribution-contributionpage-pcp-form-block-supporter_profile_id"> - <td class="label">{$form.supporter_profile_id.label}</td> + <td class="label">{$form.supporter_profile_id.label} <span class="crm-marker"> *</span></td> <td>{$form.supporter_profile_id.html} {help id="id-supporter_profile"}</td> </tr> <tr class="crm-contribution-contributionpage-pcp-form-block-owner_notify_id"> diff --git a/civicrm/templates/CRM/Pledge/Form/Pledge.tpl b/civicrm/templates/CRM/Pledge/Form/Pledge.tpl index cf1850b2e8c565db37eaa372946f92d01e077f57..ef7fd58b08cd789761d514437ef03a9d69f25352 100644 --- a/civicrm/templates/CRM/Pledge/Form/Pledge.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Pledge.tpl @@ -42,7 +42,7 @@ <td class="label">{$form.amount.label}</td> <td> <span>{$form.currency.html|crmAddClass:eight} {$form.amount.html|crmAddClass:eight}</span> - {if $originalPledgeAmount}<div class="messages status no-popup">{icon icon="fa-info-circle"}{/icon}{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} + {if $action EQ 2 && $originalPledgeAmount}<div class="messages status no-popup">{icon icon="fa-info-circle"}{/icon}{ts 1=$originalPledgeAmount|crmMoney:$currency} Pledge total has changed due to payment adjustments. Original pledge amount was %1.{/ts}</div>{/if} </td> </tr> <tr class="crm-pledge-form-block-installments"> @@ -157,11 +157,6 @@ // load panes function calls for snippet based on id of crm-accordion-header function loadPanes( id ) { var url = "{/literal}{crmURL p='civicrm/contact/view/pledge' q='snippet=4&formType=' h=0}{literal}" + id; - {/literal} - {if $contributionMode} - url = url + "&mode={$contributionMode}"; - {/if} - {literal} if ( ! $('div.'+id).html() ) { var loading = '<img src="{/literal}{$config->resourceBase}i/loading.gif{literal}" alt="{/literal}{ts escape='js'}loading{/ts}{literal}" /> {/literal}{ts escape='js'}Loading{/ts}{literal}...'; $('div.'+id).html(loading); diff --git a/civicrm/templates/CRM/Pledge/Form/Selector.tpl b/civicrm/templates/CRM/Pledge/Form/Selector.tpl index 00c7ea84a80a50278bf2ccc4ad54f86e5c8ebe66..af4a493801cac3de8b19304424619891891b65ec 100644 --- a/civicrm/templates/CRM/Pledge/Form/Selector.tpl +++ b/civicrm/templates/CRM/Pledge/Form/Selector.tpl @@ -49,7 +49,7 @@ {/if} <td class="right">{$row.pledge_amount|crmMoney:$row.pledge_currency}</td> <td class="right">{$row.pledge_total_paid|crmMoney:$row.pledge_currency}</td> - <td class="right">{($row.pledge_amount-$row.pledge_total_paid)|crmMoney:$row.pledge_currency}</td> + <td class="right">{$row.pledge_balance_amount|crmMoney:$row.pledge_currency}</td> <td>{$row.pledge_financial_type}</td> <td>{$row.pledge_create_date|truncate:10:''|crmDate}</td> <td>{$row.pledge_next_pay_date|truncate:10:''|crmDate}</td> diff --git a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl index e335b6a8830bb842b04ce95dd796683aaa7be788..dd3f09a66fb6fa8ce1c8e50bd403fc251a107646 100644 --- a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl @@ -24,7 +24,7 @@ <tr id='rowid{$row.pledge_id}' class="{cycle values="odd-row,even-row"} {if $row.pledge_status_name eq 'Overdue'} disabled{/if} crm-pledge crm-pledge_{$row.pledge_id} "> <td class="crm-pledge-pledge_amount">{$row.pledge_amount|crmMoney:$row.pledge_currency}</td> <td class="crm-pledge-pledge_total_paid">{$row.pledge_total_paid|crmMoney:$row.pledge_currency}</td> - <td class="crm-pledge-pledge_amount">{$row.pledge_amount-$row.pledge_total_paid|crmMoney:$row.pledge_currency}</td> + <td class="crm-pledge-pledge_amount">{$row.pledge_balance_amount|crmMoney:$row.pledge_currency}</td> <td class="crm-pledge-pledge_contribution_type">{$row.pledge_financial_type}</td> <td class="crm-pledge-pledge_create_date">{$row.pledge_create_date|truncate:10:''|crmDate}</td> <td class="crm-pledge-pledge_next_pay_date">{$row.pledge_next_pay_date|truncate:10:''|crmDate}</td> diff --git a/civicrm/templates/CRM/Price/Form/Field.tpl b/civicrm/templates/CRM/Price/Form/Field.tpl index aee89a9db9798df6395d350bc038c3e5518f8a6c..74a9cc2718c2c43a64a006a353dbd293cc07e348 100644 --- a/civicrm/templates/CRM/Price/Form/Field.tpl +++ b/civicrm/templates/CRM/Price/Form/Field.tpl @@ -81,12 +81,12 @@ <div class="crm-block crm-form-block crm-price-field-form-block"> <table class="form-layout"> <tr class="crm-price-field-form-block-label"> - <td class="label">{$form.label.label}</td> + <td class="label">{$form.label.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field' field='label' id=$fid}{/if}{$form.label.html} </td> </tr> <tr class="crm-price-field-form-block-html_type"> - <td class="label">{$form.html_type.label}</td> + <td class="label">{$form.html_type.label|smarty:nodefaults|purify}</td> <td>{$form.html_type.html} </td> </tr> @@ -103,7 +103,7 @@ <div id="price-block" {if $action eq 2 && $form.html_type.value.0 eq 'Text'} class="show-block" {else} class="hiddenElement" {/if}> <table class="form-layout"> <tr class="crm-price-field-form-block-price"> - <td class="label">{$form.price.label} <span class="crm-marker" title="{ts}This field is required.{/ts}">*</span></td> + <td class="label">{$form.price.label|smarty:nodefaults|purify} <span class="crm-marker" title="{ts}This field is required.{/ts}">*</span></td> <td>{$form.price.html} {if $action neq 4} <br /><span class="description">{ts}Unit price.{/ts}</span> {help id="id-negative"} @@ -111,25 +111,25 @@ </td> </tr> <tr class="crm-price-field-form-block-non-deductible-amount"> - <td class="label">{$form.non_deductible_amount.label}</td> + <td class="label">{$form.non_deductible_amount.label|smarty:nodefaults|purify}</td> <td>{$form.non_deductible_amount.html}</td> </tr> {if $useForEvent} <tr class="crm-price-field-form-block-count"> - <td class="label">{$form.count.label}</td> + <td class="label">{$form.count.label|smarty:nodefaults|purify}</td> <td>{$form.count.html}<br /> <span class="description">{ts}Enter a value here if you want to increment the number of registered participants per unit against the maximum number of participants allowed for this event.{/ts}</span> {help id="id-participant-count"} </td> </tr> <tr class="crm-price-field-form-block-max_value"> - <td class="label">{$form.max_value.label}</td> + <td class="label">{$form.max_value.label|smarty:nodefaults|purify}</td> <td>{$form.max_value.html} </td> </tr> {/if} <tr class="crm-price-field-form-block-financial_type"> - <td class="label">{$form.financial_type_id.label}<span class="crm-marker" title="{ts}This field is required.{/ts}">*</span></td></td> + <td class="label">{$form.financial_type_id.label|smarty:nodefaults|purify}<span class="crm-marker" title="{ts}This field is required.{/ts}">*</span></td></td> <td> {if !$financialType} {capture assign=ftUrl}{crmURL p='civicrm/admin/financial/financialType' q="reset=1"}{/capture} @@ -169,7 +169,7 @@ </tr> <tr class="crm-price-field-form-block-help_pre"> - <td class="label">{$form.help_pre.label}</td> + <td class="label">{$form.help_pre.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field' field='help_pre' id=$fid}{/if}{$form.help_pre.html|crmAddClass:huge} {if $action neq 4} <div class="description">{ts}Explanatory text displayed to users at the beginning of this field.{/ts}</div> @@ -178,7 +178,7 @@ </tr> <tr class="crm-price-field-form-block-help_post"> - <td class="label">{$form.help_post.label}</td> + <td class="label">{$form.help_post.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field' field='help_post' id=$fid}{/if}{$form.help_post.html|crmAddClass:huge} {if $action neq 4} <div class="description">{ts}Explanatory text displayed to users below this field.{/ts}</div> @@ -243,7 +243,7 @@ {/literal} {* Give link to view/edit choice options if in edit mode and html_type is one of the multiple choice types *} -{if $action eq 2 AND ($form.data_type.value.1.0 eq 'CheckBox' OR $form.data_type.value.1.0 eq 'Radio' OR $form.data_type.value.1.0 eq 'Select')} +{if $action eq 2 AND array_key_exists('data_type', $form) && ($form.data_type.value.1.0 eq 'CheckBox' OR $form.data_type.value.1.0 eq 'Radio' OR $form.data_type.value.1.0 eq 'Select')} <div class="action-link"> <a href="{crmURL p="civicrm/admin/event/field/option" q="reset=1&action=browse&fid=`$fid`"}" class="button"><span>{ts}Multiple Choice Options{/ts}</span></a> </div> diff --git a/civicrm/templates/CRM/Price/Form/Option.tpl b/civicrm/templates/CRM/Price/Form/Option.tpl index 52b8ad7a60b5b85df3f7299002975c56470150e0..2627e1deb8b925acaf44e7c0d0607c0e2d2d0c8f 100644 --- a/civicrm/templates/CRM/Price/Form/Option.tpl +++ b/civicrm/templates/CRM/Price/Form/Option.tpl @@ -28,11 +28,11 @@ </tr> {/if} <tr class="crm-price-option-form-block-label"> - <td class="label">{$form.label.label}</td> + <td class="label">{$form.label.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field_value' field='label' id=$optionId}{/if}{$form.label.html}</td> </tr> <tr class="crm-price-option-form-block-amount"> - <td class="label">{$form.amount.label}</td> + <td class="label">{$form.amount.label|smarty:nodefaults|purify}</td> <td>{$form.amount.html}</td> </tr> <tr class="crm-price-option-form-block-non-deductible-amount"> @@ -44,11 +44,11 @@ <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field_value' field='description' id=$optionId}{/if}{$form.description.html}</td> </tr> <tr class="crm-price-option-form-block-help-pre"> - <td class="label">{$form.help_pre.label}</td> + <td class="label">{$form.help_pre.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field_value' field='help_pre' id=$optionId}{/if}{$form.help_pre.html}</td> </tr> <tr class="crm-price-option-form-block-help-post"> - <td class="label">{$form.help_post.label}</td> + <td class="label">{$form.help_post.label|smarty:nodefaults|purify}</td> <td>{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_price_field_value' field='help_post' id=$optionId}{/if}{$form.help_post.html}</td> </tr> <tr class="crm-price-option-form-block-financial-type"> diff --git a/civicrm/templates/CRM/Price/Form/PriceSet.tpl b/civicrm/templates/CRM/Price/Form/PriceSet.tpl index 67c1e9be22078a9859e3220f18f66505b39fd5ee..6f64069ee4317d219871fe66dbff64a3dc702692 100644 --- a/civicrm/templates/CRM/Price/Form/PriceSet.tpl +++ b/civicrm/templates/CRM/Price/Form/PriceSet.tpl @@ -10,7 +10,7 @@ {crmRegion name="price-set-1"} <div id="priceset" class="crm-section price_set-section"> {if $priceSet.help_pre} - <div class="messages help">{$priceSet.help_pre}</div> + <div class="messages help">{$priceSet.help_pre|purify}</div> {/if} {assign var='adminFld' value=false} @@ -28,12 +28,12 @@ {foreach from=$priceSet.fields item=element key=field_id} {* Skip 'Admin' visibility price fields WHEN this tpl is used in online registration unless user has administer CiviCRM permission. *} {if $element.visibility EQ 'public' || ($element.visibility EQ 'admin' && $adminFld EQ true) || $context eq 'standalone' || $context eq 'advanced' || $context eq 'search' || $context eq 'participant' || $context eq 'dashboard'} - {if $element.help_pre}<span class="content description">{$element.help_pre}</span><br />{/if} - <div class="crm-section {$element.name}-section crm-price-field-id-{$field_id}"> + {if $element.help_pre}<span class="content description">{$element.help_pre|purify}</span><br />{/if} + <div class="crm-section {$element.name|escape}-section crm-price-field-id-{$field_id}"> {if ($element.html_type eq 'CheckBox' || $element.html_type == 'Radio') && $element.options_per_line} {assign var="element_name" value="price_`$field_id`"} - <div class="label">{$form.$element_name.label}</div> - <div class="content {$element.name}-content"> + <div class="label">{$form.$element_name.label|purify}</div> + <div class="content {$element.name|escape}-content"> {assign var="elementCount" value="0"} {assign var="optionCount" value="0"} {assign var="rowCount" value="0"} @@ -43,7 +43,7 @@ {assign var="optionCount" value=$optionCount+1} {if $optionCount == 1} {assign var="rowCount" value=$rowCount+1} - <div class="price-set-row {$element.name}-row{$rowCount}"> + <div class="price-set-row {$element.name|escape}-row{$rowCount}"> {/if} <span class="price-set-option-content">{$form.$element_name.$key.html}</span> {if $optionCount == $element.options_per_line || $elementCount == $form.$element_name|@count} @@ -53,15 +53,15 @@ {/if} {/foreach} {if $element.help_post} - <div class="description">{$element.help_post}</div> + <div class="description">{$element.help_post|purify}</div> {/if} </div> {else} {assign var="element_name" value="price_"|cat:$field_id} - <div class="label">{$form.$element_name.label}</div> - <div class="content {$element.name}-content"> + <div class="label">{$form.$element_name.label|purify}</div> + <div class="content {$element.name|escape}-content"> {$form.$element_name.html} {if $element.html_type eq 'Text'} {if $element.is_display_amounts} @@ -91,18 +91,18 @@ {/if} {/if} {/if} - {if $element.help_post}<br /><span class="description">{$element.help_post}</span>{/if} + {if $element.help_post}<br /><span class="description">{$element.help_post|purify}</span>{/if} </div> {/if} {if !empty($extends) && $extends eq "Membership"} - {if (!empty($priceSet) && $element.id == $priceSet.auto_renew_membership_field) || (empty($priceSet) && $element.name == 'membership_amount')} + {if ($element.id == $priceSet.auto_renew_membership_field)} <div id="allow_auto_renew"> <div class='crm-section auto-renew'> <div class='label'></div> <div class='content' id="auto_renew_section"> {if $form.auto_renew} - {$form.auto_renew.html} {$form.auto_renew.label} + {$form.auto_renew.html} {$form.auto_renew.label|smarty:nodefaults|purify} {/if} </div> <div class='content' id="force_renew" style='display: none'>{ts}Membership will renew automatically.{/ts}</div> @@ -116,7 +116,7 @@ {/foreach} {if $priceSet.help_post} - <div class="messages help">{$priceSet.help_post}</div> + <div class="messages help">{$priceSet.help_post|purify}</div> {/if} {include file="CRM/Price/Form/Calculate.tpl"} diff --git a/civicrm/templates/CRM/Price/Page/Option.tpl b/civicrm/templates/CRM/Price/Page/Option.tpl index 90faab6cfebf0b268f8561ca06959a353170fd32..1fab0ed7dcefbe10f40b3315a19ee01072b22ed8 100644 --- a/civicrm/templates/CRM/Price/Page/Option.tpl +++ b/civicrm/templates/CRM/Price/Page/Option.tpl @@ -59,11 +59,11 @@ <tbody> {foreach from=$customOption item=row} <tr id="price_field_value-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"}{if !empty($row.class)} {$row.class}{/if}{if NOT $row.is_active} disabled{/if}"> - <td class="crm-price-option-label crm-editable" data-field="label">{$row.label}</td> + <td class="crm-price-option-label crm-editable" data-field="label">{$row.label|escape}</td> <td class="crm-price-option-value">{$row.amount|crmMoney}</td> <td class="crm-price-option-non-deductible-amount">{$row.non_deductible_amount|crmMoney}</td> - <td class="crm-price-option-pre-help">{$row.help_pre}</td> - <td class="crm-price-option-post-help">{$row.help_post}</td> + <td class="crm-price-option-pre-help">{$row.help_pre|escape}</td> + <td class="crm-price-option-post-help">{$row.help_post|escape}</td> {if $isEvent} <td class="crm-price-option-count">{$row.count}</td> <td class="crm-price-option-max">{$row.max_value}</td> diff --git a/civicrm/templates/CRM/Profile/Form/Dynamic.tpl b/civicrm/templates/CRM/Profile/Form/Dynamic.tpl index 1fc531b81fd3cd4ce5a9900856bb0fe8afc6beaf..097066de54e6cc73900ef5950485ffa2116bd0d3 100644 --- a/civicrm/templates/CRM/Profile/Form/Dynamic.tpl +++ b/civicrm/templates/CRM/Profile/Form/Dynamic.tpl @@ -67,8 +67,8 @@ <div {if $context neq 'dialog'}id="profilewrap{$field.group_id}"{/if}> <fieldset><legend>{$field.groupTitle}</legend> {/if} - {assign var=fieldset value=`$field.groupTitle`} - {assign var=groupHelpPost value=`$field.groupHelpPost`} + {assign var=fieldset value=$field.groupTitle} + {assign var=groupHelpPost value=$field.groupHelpPost} {if $field.groupHelpPre} <div class="messages help">{$field.groupHelpPre}</div> {/if} diff --git a/civicrm/templates/CRM/Tag/Form/Edit.tpl b/civicrm/templates/CRM/Tag/Form/Edit.tpl index 434ef8ecfb8c7feb705b755e43c296297148cc7b..e70aa192b814e6bd1b69f3af7fa9905e4e28107e 100644 --- a/civicrm/templates/CRM/Tag/Form/Edit.tpl +++ b/civicrm/templates/CRM/Tag/Form/Edit.tpl @@ -12,8 +12,8 @@ {if $action eq 1 or $action eq 2} <table class="form-layout-compressed"> <tr class="crm-tag-form-block-label"> - <td class="label">{$form.name.label}</td> - <td>{$form.name.html}</td> + <td class="label">{$form.label.label}</td> + <td>{$form.label.html}</td> </tr> <tr class="crm-tag-form-block-description"> <td class="label">{$form.description.label}</td> diff --git a/civicrm/templates/CRM/Tag/Page/Tag.tpl b/civicrm/templates/CRM/Tag/Page/Tag.tpl index 4caf65995fd4d4b0becc67e83c8baaba00bbbeed..5f37b01b81526a91f7dcc99c9ca689d11810d92c 100644 --- a/civicrm/templates/CRM/Tag/Page/Tag.tpl +++ b/civicrm/templates/CRM/Tag/Page/Tag.tpl @@ -24,7 +24,7 @@ </li> {foreach from=$tagsets item=set} <li class="ui-corner-all crm-tab-button {if ($set.is_reserved)}is-reserved{/if}" title="{ts 1=', '|implode:$set.used_for_label}Tag Set for %1{/ts}"> - <a href="#tagset-{$set.id}">{$set.name}</a> + <a href="#tagset-{$set.id}">{$set.label}</a> </li> {/foreach} {if call_user_func(array('CRM_Core_Permission','check'), 'administer Tagsets')} @@ -164,7 +164,7 @@ function updateTagset(info) { tagSets[tagset].description = info.description; - tagSets[tagset].name = info.name; + tagSets[tagset].label = info.label; tagSets[tagset].used_for = info.used_for; tagSets[tagset].is_reserved = info.is_reserved; formatTagSet(tagSets[tagset]); @@ -175,7 +175,7 @@ function addTagsetHeader() { $('.tagset-header', $panel).remove(); $panel.prepend(tagsetHeaderTpl(tagSets[tagset])); - $("a[href='#tagset-" + tagset + "']").text(tagSets[tagset].name) + $("a[href='#tagset-" + tagset + "']").text(tagSets[tagset].label) .parent().toggleClass('is-reserved', tagSets[tagset].is_reserved == 1) .attr('title', ts('{/literal}{ts escape='js' 1='%1'}Tag Set for %1{/ts}{literal}', {'1': tagSets[tagset].used_for_label.join(', ')})); } @@ -188,7 +188,7 @@ e.preventDefault(); var sets = [{key: '0', value: '{/literal}{ts escape='js'}Main Tag Tree{/ts}{literal}'}]; _.each(tagSets, function(tagSet) { - sets.push({key: tagSet.id, value: tagSet.name}); + sets.push({key: tagSet.id, value: tagSet.label}); }); CRM.confirm({ title: '{/literal}{ts escape='js'}Move to Tagset{/ts}{literal}', @@ -321,7 +321,7 @@ tagSets[data.tag.id].display_name = user.display_name; formatTagSet(tagSets[data.tag.id]); $("#new-tagset").before('<div id="tagset-' + data.tag.id + '">'); - $("a[href='#new-tagset']").parent().before('<li class="ui-corner-all crm-tab-button"><a href="#tagset-' + data.tag.id + '">' + data.tag.name + '</a></li>'); + $("a[href='#new-tagset']").parent().before('<li class="ui-corner-all crm-tab-button"><a href="#tagset-' + data.tag.id + '">' + data.tag.label + '</a></li>'); $('#mainTabContainer').tabs('refresh'); $('#mainTabContainer').tabs('option', 'active', -2); }); @@ -482,7 +482,7 @@ <div class="crm-entity" data-entity="Tag" data-id="<%= id %>"> <h4> <input type="color" value="<%= data.color %>" <% if (!data.is_reserved || adminReserved) {ldelim} %>title="{ts}Select color{/ts}" <% {rdelim} else {ldelim} %>disabled<% {rdelim} %> /> - <span class="<% if (!data.is_reserved || adminReserved) {ldelim} %>crm-editable<% {rdelim} %>" data-field="name"><%- text %></span> + <span class="<% if (!data.is_reserved || adminReserved) {ldelim} %>crm-editable<% {rdelim} %>" data-field="label"><%- text %></span> </h4> <hr /> <div><span class="tdl">{ts}Description:{/ts}</span> diff --git a/civicrm/templates/CRM/common/joomla.tpl b/civicrm/templates/CRM/common/joomla.tpl index 32e5859ecc14b426f0e25a85ea52ec1218ab1da7..4ef44334281364b1b60d62cec0bc0c1422cfe98f 100644 --- a/civicrm/templates/CRM/common/joomla.tpl +++ b/civicrm/templates/CRM/common/joomla.tpl @@ -12,16 +12,7 @@ {/if} <div id="crm-container" class="crm-container{if !empty($urlIsPublic)} crm-public{/if}" lang="{$config->lcMessages|truncate:2:"":true}" xml:lang="{$config->lcMessages|truncate:2:"":true}"> - -<table border="0" cellpadding="0" cellspacing="0" id="crm-content"> - <tr> -{if $sidebarLeft} - <td id="sidebar-left" valign="top"> - <div id="civi-sidebar-logo" style="margin: 0 0 .25em .25em"><img src="{$config->resourceBase}i/logo_words_small.png" title="{ts}CiviCRM{/ts}"/></div><div class="spacer"></div> - {$sidebarLeft} - </td> -{/if} - <td id="content-right" valign="top"> + <div id ="crm-content"> {if $breadcrumb} <div class="breadcrumb"> {foreach from=$breadcrumb item=crumb key=key} @@ -33,16 +24,16 @@ </div> {/if} -{if $pageTitle} - <div class="crm-title"> - <h1 class="title">{if $isDeleted}<del>{/if}{$pageTitle}{if $isDeleted}</del>{/if}</h1> - </div> -{/if} + {if $pageTitle} + <div class="crm-title"> + <h1 class="title">{if $isDeleted}<del>{/if}{$pageTitle}{if $isDeleted}</del>{/if}</h1> + </div> + {/if} {crmRegion name='page-header'} {/crmRegion} -{*{include file="CRM/common/langSwitch.tpl"}*} + {*{include file="CRM/common/langSwitch.tpl"}*} <div class="clear"></div> @@ -68,9 +59,5 @@ {include file="CRM/common/footer.tpl"} {/if} {/crmRegion} - - </td> - - </tr> -</table> + </div> </div> {* end crm-container div *} diff --git a/civicrm/templates/CRM/common/l10n.js.tpl b/civicrm/templates/CRM/common/l10n.js.tpl index 03598223d76982dbd9ac3784f2e931bf70431613..5e8f34e45f6a538780b89af02c149df79e680782 100644 --- a/civicrm/templates/CRM/common/l10n.js.tpl +++ b/civicrm/templates/CRM/common/l10n.js.tpl @@ -24,6 +24,7 @@ CRM.config.ajaxPopupsEnabled = {$ajaxPopupsEnabled|@json_encode}; CRM.config.allowAlertAutodismissal = {$allowAlertAutodismissal|@json_encode}; CRM.config.resourceCacheCode = {$resourceCacheCode|@json_encode}; + CRM.config.quickAdd = {$quickAdd|@json_encode}; // Merge entityRef settings CRM.config.entityRef = $.extend({ldelim}{rdelim}, {$entityRef|@json_encode}, CRM.config.entityRef || {ldelim}{rdelim}); @@ -125,10 +126,5 @@ functions: [] }; - // Load polyfill - if (!('Promise' in window)) { - CRM.loadScript(CRM.config.resourceBase + 'bower_components/es6-promise/es6-promise.auto.min.js'); - } - })(jQuery); {/literal} diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php index 991adc65d828718258731390f1dbeb806d79784b..d7f8e9f59f37245486b2d74203d13b7d1ae8af59 100644 --- a/civicrm/vendor/autoload.php +++ b/civicrm/vendor/autoload.php @@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) { require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6::getLoader(); +return ComposerAutoloaderInit7e131bfaa15ca0367c946ea14269f3cb::getLoader(); diff --git a/civicrm/vendor/composer/autoload_psr4.php b/civicrm/vendor/composer/autoload_psr4.php index 605608d6175bf08492cf76cade89536e0fc1e532..e37f9ad0b282dbfb026d5f9812cac5d948d9035d 100644 --- a/civicrm/vendor/composer/autoload_psr4.php +++ b/civicrm/vendor/composer/autoload_psr4.php @@ -34,6 +34,7 @@ return array( 'Symfony\\Component\\DependencyInjection\\' => array($vendorDir . '/symfony/dependency-injection'), 'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'), 'Svg\\' => array($vendorDir . '/phenx/php-svg-lib/src/Svg'), + 'Soundasleep\\' => array($vendorDir . '/soundasleep/html2text/src'), 'ScssPhp\\ScssPhp\\' => array($vendorDir . '/scssphp/scssphp/src'), 'Sabberworm\\CSS\\' => array($vendorDir . '/sabberworm/php-css-parser/src'), 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), @@ -55,7 +56,6 @@ return array( 'LastCall\\DownloadsPlugin\\' => array($vendorDir . '/civicrm/composer-downloads-plugin/src'), 'Laminas\\ZendFrameworkBridge\\' => array($vendorDir . '/laminas/laminas-zendframework-bridge/src'), 'Laminas\\Escaper\\' => array($vendorDir . '/laminas/laminas-escaper/src'), - 'Html2Text\\' => array($vendorDir . '/html2text/html2text/src', $vendorDir . '/html2text/html2text/test'), 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php index 00c36e72f66ff4fd4b9a50c0a9a4d116b566fa59..20e36a6a983b9d57cbb4c94cb4b022fe0075bab3 100644 --- a/civicrm/vendor/composer/autoload_real.php +++ b/civicrm/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6 +class ComposerAutoloaderInit7e131bfaa15ca0367c946ea14269f3cb { private static $loader; @@ -24,22 +24,22 @@ class ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6 require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit7e131bfaa15ca0367c946ea14269f3cb', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit7e131bfaa15ca0367c946ea14269f3cb', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; $includePaths[] = get_include_path(); set_include_path(implode(PATH_SEPARATOR, $includePaths)); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::getInitializer($loader)); $loader->register(true); - $includeFiles = \Composer\Autoload\ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$files; + $includeFiles = \Composer\Autoload\ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$files; foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire7bbaec5d7960153e513fff9ee79197c6($fileIdentifier, $file); + composerRequire7e131bfaa15ca0367c946ea14269f3cb($fileIdentifier, $file); } return $loader; @@ -51,7 +51,7 @@ class ComposerAutoloaderInit7bbaec5d7960153e513fff9ee79197c6 * @param string $file * @return void */ -function composerRequire7bbaec5d7960153e513fff9ee79197c6($fileIdentifier, $file) +function composerRequire7e131bfaa15ca0367c946ea14269f3cb($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php index 750915507d82f1e2088947e45331d6513f3984bb..84556b530f86f6892d80e0586c83822bd61dd76e 100644 --- a/civicrm/vendor/composer/autoload_static.php +++ b/civicrm/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 +class ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb { public static $files = array ( 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', @@ -141,6 +141,7 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 'Symfony\\Component\\DependencyInjection\\' => 38, 'Symfony\\Component\\Config\\' => 25, 'Svg\\' => 4, + 'Soundasleep\\' => 12, 'ScssPhp\\ScssPhp\\' => 16, 'Sabberworm\\CSS\\' => 15, ), @@ -172,10 +173,6 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 'Laminas\\ZendFrameworkBridge\\' => 28, 'Laminas\\Escaper\\' => 16, ), - 'H' => - array ( - 'Html2Text\\' => 10, - ), 'G' => array ( 'GuzzleHttp\\Psr7\\' => 16, @@ -319,6 +316,10 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 array ( 0 => __DIR__ . '/..' . '/phenx/php-svg-lib/src/Svg', ), + 'Soundasleep\\' => + array ( + 0 => __DIR__ . '/..' . '/soundasleep/html2text/src', + ), 'ScssPhp\\ScssPhp\\' => array ( 0 => __DIR__ . '/..' . '/scssphp/scssphp/src', @@ -405,11 +406,6 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 array ( 0 => __DIR__ . '/..' . '/laminas/laminas-escaper/src', ), - 'Html2Text\\' => - array ( - 0 => __DIR__ . '/..' . '/html2text/html2text/src', - 1 => __DIR__ . '/..' . '/html2text/html2text/test', - ), 'GuzzleHttp\\Psr7\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', @@ -729,11 +725,11 @@ class ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$prefixesPsr0; - $loader->fallbackDirsPsr0 = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$fallbackDirsPsr0; - $loader->classMap = ComposerStaticInit7bbaec5d7960153e513fff9ee79197c6::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$prefixesPsr0; + $loader->fallbackDirsPsr0 = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$fallbackDirsPsr0; + $loader->classMap = ComposerStaticInit7e131bfaa15ca0367c946ea14269f3cb::$classMap; }, null, ClassLoader::class); } diff --git a/civicrm/vendor/composer/installed.json b/civicrm/vendor/composer/installed.json index d69094cb2958313a1a0db4bb01cfc331be13b537..6e8a6bf9e1c72f4d070d064ed2cc67358b3d378a 100644 --- a/civicrm/vendor/composer/installed.json +++ b/civicrm/vendor/composer/installed.json @@ -1011,55 +1011,6 @@ ], "install-path": "../guzzlehttp/psr7" }, - { - "name": "html2text/html2text", - "version": "4.3.1", - "version_normalized": "4.3.1.0", - "source": { - "type": "git", - "url": "https://github.com/mtibben/html2text.git", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtibben/html2text/zipball/61ad68e934066a6f8df29a3d23a6460536d0855c", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-mbstring": "For best performance", - "symfony/polyfill-mbstring": "If you can't install ext-mbstring" - }, - "time": "2020-04-16T23:44:31+00:00", - "type": "library", - "extra": { - "patches_applied": { - "Fix deprecation warning in php8.1 on html_entity_decode": "https://raw.githubusercontent.com/civicrm/civicrm-core/e758d20e9f613ca6c4cf652c23d2cd7e5d3af3ce/tools/scripts/composer/html2text_html2_text_php81_deprecation.patch" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Html2Text\\": [ - "src/", - "test/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Converts HTML to formatted plain text", - "support": { - "issues": "https://github.com/mtibben/html2text/issues", - "source": "https://github.com/mtibben/html2text/tree/4.3.1" - }, - "install-path": "../html2text/html2text" - }, { "name": "laminas/laminas-escaper", "version": "2.6.1", @@ -3614,6 +3565,64 @@ }, "install-path": "../scssphp/scssphp" }, + { + "name": "soundasleep/html2text", + "version": "2.1.0", + "version_normalized": "2.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/soundasleep/html2text.git", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/soundasleep/html2text/zipball/83502b6f8f1aaef8e2e238897199d64f284b4af3", + "reference": "83502b6f8f1aaef8e2e238897199d64f284b4af3", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.3|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "time": "2023-01-06T09:28:15+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Soundasleep\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jevon Wright", + "homepage": "https://jevon.org", + "role": "Developer" + } + ], + "description": "A PHP script to convert HTML into a plain text format", + "homepage": "https://github.com/soundasleep/html2text", + "keywords": [ + "email", + "html", + "php", + "text" + ], + "support": { + "email": "support@jevon.org", + "issues": "https://github.com/soundasleep/html2text/issues", + "source": "https://github.com/soundasleep/html2text/tree/2.1.0" + }, + "install-path": "../soundasleep/html2text" + }, { "name": "symfony/config", "version": "v4.4.42", diff --git a/civicrm/vendor/composer/installed.php b/civicrm/vendor/composer/installed.php index dd8efdadbb67db2a8190c06d4f2571249af32175..59aa9b21e93fc4ca236cfe31fa2dc012b9a5bdc2 100644 --- a/civicrm/vendor/composer/installed.php +++ b/civicrm/vendor/composer/installed.php @@ -1,9 +1,9 @@ <?php return array( 'root' => array( 'name' => 'civicrm/civicrm-core', - 'pretty_version' => '5.67.x-dev', - 'version' => '5.67.9999999.9999999-dev', - 'reference' => '5f86ffb076598c9cae9841fda3004459df2aa77a', + 'pretty_version' => '5.68.x-dev', + 'version' => '5.68.9999999.9999999-dev', + 'reference' => '8a55d28fd045ac640eaa5fc32b2b1441f92fe4b9', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -38,9 +38,9 @@ 'dev_requirement' => false, ), 'civicrm/civicrm-core' => array( - 'pretty_version' => '5.67.x-dev', - 'version' => '5.67.9999999.9999999-dev', - 'reference' => '5f86ffb076598c9cae9841fda3004459df2aa77a', + 'pretty_version' => '5.68.x-dev', + 'version' => '5.68.9999999.9999999-dev', + 'reference' => '8a55d28fd045ac640eaa5fc32b2b1441f92fe4b9', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -160,15 +160,6 @@ 0 => '*', ), ), - 'html2text/html2text' => array( - 'pretty_version' => '4.3.1', - 'version' => '4.3.1.0', - 'reference' => '61ad68e934066a6f8df29a3d23a6460536d0855c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../html2text/html2text', - 'aliases' => array(), - 'dev_requirement' => false, - ), 'laminas/laminas-escaper' => array( 'pretty_version' => '2.6.1', 'version' => '2.6.1.0', @@ -544,6 +535,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'soundasleep/html2text' => array( + 'pretty_version' => '2.1.0', + 'version' => '2.1.0.0', + 'reference' => '83502b6f8f1aaef8e2e238897199d64f284b4af3', + 'type' => 'library', + 'install_path' => __DIR__ . '/../soundasleep/html2text', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/config' => array( 'pretty_version' => 'v4.4.42', 'version' => '4.4.42.0', diff --git a/civicrm/vendor/html2text/html2text/.gitignore b/civicrm/vendor/html2text/html2text/.gitignore deleted file mode 100644 index 3c973fb7da657f3a014eb651aa8aed70053890cb..0000000000000000000000000000000000000000 --- a/civicrm/vendor/html2text/html2text/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.DS_Store -/vendor/ -composer.lock diff --git a/civicrm/vendor/html2text/html2text/.travis.yml b/civicrm/vendor/html2text/html2text/.travis.yml deleted file mode 100644 index e9087914c8ee9faed53e26dc102cfcc3beb2a51d..0000000000000000000000000000000000000000 --- a/civicrm/vendor/html2text/html2text/.travis.yml +++ /dev/null @@ -1,18 +0,0 @@ -language: php - -matrix: - include: - - php: 5.3 - dist: precise - - php: 5.4 - dist: trusty - - php: 5.5 - dist: trusty - - php: 5.6 - - php: 7.0 - - php: 7.1 - - php: 7.2 - - php: 7.3 - -before_script: - - composer install diff --git a/civicrm/vendor/html2text/html2text/PATCHES.txt b/civicrm/vendor/html2text/html2text/PATCHES.txt deleted file mode 100644 index 5388d4c0c9766adc820a8c7a465673f599b11743..0000000000000000000000000000000000000000 --- a/civicrm/vendor/html2text/html2text/PATCHES.txt +++ /dev/null @@ -1,7 +0,0 @@ -This file was automatically generated by Composer Patches (https://github.com/cweagans/composer-patches) -Patches applied to this directory: - -Fix deprecation warning in php8.1 on html_entity_decode -Source: https://raw.githubusercontent.com/civicrm/civicrm-core/e758d20e9f613ca6c4cf652c23d2cd7e5d3af3ce/tools/scripts/composer/html2text_html2_text_php81_deprecation.patch - - diff --git a/civicrm/vendor/html2text/html2text/README.md b/civicrm/vendor/html2text/html2text/README.md deleted file mode 100644 index e66da7b18be6bd94f4df01851023f03b7fead873..0000000000000000000000000000000000000000 --- a/civicrm/vendor/html2text/html2text/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Html2Text - -A PHP library for converting HTML to formatted plain text. - -[](https://travis-ci.org/mtibben/html2text) - -## Installing - -``` -composer require html2text/html2text -``` - -## Basic Usage -```php -$html = new \Html2Text\Html2Text('Hello, "<b>world</b>"'); - -echo $html->getText(); // Hello, "WORLD" -``` - -## History - -This library started life on the blog of Jon Abernathy http://www.chuggnutt.com/html2text - -A number of projects picked up the library and started using it - among those was RoundCube mail. They made a number of updates to it over time to suit their webmail client. - -Now it has been extracted as a standalone library. Hopefully it can be of use to others. diff --git a/civicrm/vendor/html2text/html2text/composer.json b/civicrm/vendor/html2text/html2text/composer.json deleted file mode 100644 index ab76efed566d87471fef9ecfcff3ebc2d0b96975..0000000000000000000000000000000000000000 --- a/civicrm/vendor/html2text/html2text/composer.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "html2text/html2text", - "description": "Converts HTML to formatted plain text", - "type": "library", - "license": "GPL-2.0-or-later", - "autoload": { - "psr-4": { "Html2Text\\": ["src/", "test/"] } - }, - "require-dev": { - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-mbstring": "For best performance", - "symfony/polyfill-mbstring": "If you can't install ext-mbstring" - } -} diff --git a/civicrm/vendor/html2text/html2text/phpunit.xml.dist b/civicrm/vendor/html2text/html2text/phpunit.xml.dist deleted file mode 100644 index 17beecab1c58de585f8c76a8709933ec4d186abe..0000000000000000000000000000000000000000 --- a/civicrm/vendor/html2text/html2text/phpunit.xml.dist +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<phpunit colors="true" - convertErrorsToExceptions="true" - convertNoticesToExceptions="true" - convertWarningsToExceptions="true" - processIsolation="false" - stopOnFailure="false" - syntaxCheck="false" - bootstrap="test/bootstrap.php" -> - <testsuites> - <testsuite name="Html2Text Test Suite"> - <directory>test</directory> - </testsuite> - </testsuites> -</phpunit> diff --git a/civicrm/vendor/html2text/html2text/src/Html2Text.php b/civicrm/vendor/html2text/html2text/src/Html2Text.php deleted file mode 100644 index 5fa6185ec8b774206b15b53b548d2a9e80660291..0000000000000000000000000000000000000000 --- a/civicrm/vendor/html2text/html2text/src/Html2Text.php +++ /dev/null @@ -1,659 +0,0 @@ -<?php - -/* - * Copyright (c) 2005-2007 Jon Abernathy <jon@chuggnutt.com> - * - * This script is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * The GNU General Public License can be found at - * http://www.gnu.org/copyleft/gpl.html. - * - * This script is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - -namespace Html2Text; - -class Html2Text -{ - const ENCODING = 'UTF-8'; - - protected $htmlFuncFlags; - - /** - * Contains the HTML content to convert. - * - * @var string $html - */ - protected $html; - - /** - * Contains the converted, formatted text. - * - * @var string $text - */ - protected $text; - - /** - * List of preg* regular expression patterns to search for, - * used in conjunction with $replace. - * - * @var array $search - * @see $replace - */ - protected $search = array( - "/\r/", // Non-legal carriage return - "/[\n\t]+/", // Newlines and tabs - '/<head\b[^>]*>.*?<\/head>/i', // <head> - '/<script\b[^>]*>.*?<\/script>/i', // <script>s -- which strip_tags supposedly has problems with - '/<style\b[^>]*>.*?<\/style>/i', // <style>s -- which strip_tags supposedly has problems with - '/<i\b[^>]*>(.*?)<\/i>/i', // <i> - '/<em\b[^>]*>(.*?)<\/em>/i', // <em> - '/<ins\b[^>]*>(.*?)<\/ins>/i', // <ins> - '/(<ul\b[^>]*>|<\/ul>)/i', // <ul> and </ul> - '/(<ol\b[^>]*>|<\/ol>)/i', // <ol> and </ol> - '/(<dl\b[^>]*>|<\/dl>)/i', // <dl> and </dl> - '/<li\b[^>]*>(.*?)<\/li>/i', // <li> and </li> - '/<dd\b[^>]*>(.*?)<\/dd>/i', // <dd> and </dd> - '/<dt\b[^>]*>(.*?)<\/dt>/i', // <dt> and </dt> - '/<li\b[^>]*>/i', // <li> - '/<hr\b[^>]*>/i', // <hr> - '/<div\b[^>]*>/i', // <div> - '/(<table\b[^>]*>|<\/table>)/i', // <table> and </table> - '/(<tr\b[^>]*>|<\/tr>)/i', // <tr> and </tr> - '/<td\b[^>]*>(.*?)<\/td>/i', // <td> and </td> - '/<span class="_html2text_ignore">.+?<\/span>/i', // <span class="_html2text_ignore">...</span> - '/<(img)\b[^>]*alt=\"([^>"]+)\"[^>]*>/i', // <img> with alt tag - ); - - /** - * List of pattern replacements corresponding to patterns searched. - * - * @var array $replace - * @see $search - */ - protected $replace = array( - '', // Non-legal carriage return - ' ', // Newlines and tabs - '', // <head> - '', // <script>s -- which strip_tags supposedly has problems with - '', // <style>s -- which strip_tags supposedly has problems with - '_\\1_', // <i> - '_\\1_', // <em> - '_\\1_', // <ins> - "\n\n", // <ul> and </ul> - "\n\n", // <ol> and </ol> - "\n\n", // <dl> and </dl> - "\t* \\1\n", // <li> and </li> - " \\1\n", // <dd> and </dd> - "\t* \\1", // <dt> and </dt> - "\n\t* ", // <li> - "\n-------------------------\n", // <hr> - "<div>\n", // <div> - "\n\n", // <table> and </table> - "\n", // <tr> and </tr> - "\t\t\\1\n", // <td> and </td> - "", // <span class="_html2text_ignore">...</span> - '[\\2]', // <img> with alt tag - ); - - /** - * List of preg* regular expression patterns to search for, - * used in conjunction with $entReplace. - * - * @var array $entSearch - * @see $entReplace - */ - protected $entSearch = array( - '/™/i', // TM symbol in win-1252 - '/—/i', // m-dash in win-1252 - '/&(amp|#38);/i', // Ampersand: see converter() - '/[ ]{2,}/', // Runs of spaces, post-handling - '/'/i', // The apostrophe symbol - ); - - /** - * List of pattern replacements corresponding to patterns searched. - * - * @var array $entReplace - * @see $entSearch - */ - protected $entReplace = array( - 'â„¢', // TM symbol - '—', // m-dash - '|+|amp|+|', // Ampersand: see converter() - ' ', // Runs of spaces, post-handling - '\'', // Apostrophe - ); - - /** - * List of preg* regular expression patterns to search for - * and replace using callback function. - * - * @var array $callbackSearch - */ - protected $callbackSearch = array( - '/<(h)[123456]( [^>]*)?>(.*?)<\/h[123456]>/i', // h1 - h6 - '/[ ]*<(p)( [^>]*)?>(.*?)<\/p>[ ]*/si', // <p> with surrounding whitespace. - '/<(br)[^>]*>[ ]*/i', // <br> with leading whitespace after the newline. - '/<(b)( [^>]*)?>(.*?)<\/b>/i', // <b> - '/<(strong)( [^>]*)?>(.*?)<\/strong>/i', // <strong> - '/<(del)( [^>]*)?>(.*?)<\/del>/i', // <del> - '/<(th)( [^>]*)?>(.*?)<\/th>/i', // <th> and </th> - '/<(a) [^>]*href=("|\')([^"\']+)\2([^>]*)>(.*?)<\/a>/i' // <a href=""> - ); - - /** - * List of preg* regular expression patterns to search for in PRE body, - * used in conjunction with $preReplace. - * - * @var array $preSearch - * @see $preReplace - */ - protected $preSearch = array( - "/\n/", - "/\t/", - '/ /', - '/<pre[^>]*>/', - '/<\/pre>/' - ); - - /** - * List of pattern replacements corresponding to patterns searched for PRE body. - * - * @var array $preReplace - * @see $preSearch - */ - protected $preReplace = array( - '<br>', - ' ', - ' ', - '', - '', - ); - - /** - * Temporary workspace used during PRE processing. - * - * @var string $preContent - */ - protected $preContent = ''; - - /** - * Contains the base URL that relative links should resolve to. - * - * @var string $baseurl - */ - protected $baseurl = ''; - - /** - * Indicates whether content in the $html variable has been converted yet. - * - * @var boolean $converted - * @see $html, $text - */ - protected $converted = false; - - /** - * Contains URL addresses from links to be rendered in plain text. - * - * @var array $linkList - * @see buildlinkList() - */ - protected $linkList = array(); - - /** - * Various configuration options (able to be set in the constructor) - * - * @var array $options - */ - protected $options = array( - 'do_links' => 'inline', // 'none' - // 'inline' (show links inline) - // 'nextline' (show links on the next line) - // 'table' (if a table of link URLs should be listed after the text. - // 'bbcode' (show links as bbcode) - - 'width' => 70, // Maximum width of the formatted text, in columns. - // Set this value to 0 (or less) to ignore word wrapping - // and not constrain text to a fixed-width column. - ); - - private function legacyConstruct($html = '', $fromFile = false, array $options = array()) - { - $this->set_html($html, $fromFile); - $this->options = array_merge($this->options, $options); - } - - /** - * @param string $html Source HTML - * @param array $options Set configuration options - */ - public function __construct($html = '', $options = array()) - { - $this->htmlFuncFlags = (PHP_VERSION_ID < 50400) - ? ENT_QUOTES - : ENT_QUOTES | ENT_HTML5; - - // for backwards compatibility - if (!is_array($options)) { - return call_user_func_array(array($this, 'legacyConstruct'), func_get_args()); - } - - $this->html = $html; - $this->options = array_merge($this->options, $options); - } - - /** - * Get the source HTML - * - * @return string - */ - public function getHtml() - { - return $this->html; - } - - /** - * Set the source HTML - * - * @param string $html HTML source content - */ - public function setHtml($html) - { - $this->html = $html; - $this->converted = false; - } - - /** - * @deprecated - */ - public function set_html($html, $from_file = false) - { - if ($from_file) { - throw new \InvalidArgumentException("Argument from_file no longer supported"); - } - - return $this->setHtml($html); - } - - /** - * Returns the text, converted from HTML. - * - * @return string Plain text - */ - public function getText() - { - if (!$this->converted) { - $this->convert(); - } - - return $this->text; - } - - /** - * @deprecated - */ - public function get_text() - { - return $this->getText(); - } - - /** - * @deprecated - */ - public function print_text() - { - print $this->getText(); - } - - /** - * @deprecated - */ - public function p() - { - return $this->print_text(); - } - - /** - * Sets a base URL to handle relative links. - * - * @param string $baseurl - */ - public function setBaseUrl($baseurl) - { - $this->baseurl = $baseurl; - } - - /** - * @deprecated - */ - public function set_base_url($baseurl) - { - return $this->setBaseUrl($baseurl); - } - - protected function convert() - { - $origEncoding = mb_internal_encoding(); - mb_internal_encoding(self::ENCODING); - - $this->doConvert(); - - mb_internal_encoding($origEncoding); - } - - protected function doConvert() - { - $this->linkList = array(); - - $text = trim($this->html); - - $this->converter($text); - - if ($this->linkList) { - $text .= "\n\nLinks:\n------\n"; - foreach ($this->linkList as $i => $url) { - $text .= '[' . ($i + 1) . '] ' . $url . "\n"; - } - } - - $this->text = $text; - - $this->converted = true; - } - - protected function converter(&$text) - { - $this->convertBlockquotes($text); - $this->convertPre($text); - $text = preg_replace($this->search, $this->replace, $text); - $text = preg_replace_callback($this->callbackSearch, array($this, 'pregCallback'), $text); - $text = strip_tags($text); - $text = preg_replace($this->entSearch, $this->entReplace, $text); - $text = html_entity_decode($text, $this->htmlFuncFlags, self::ENCODING); - - // Remove unknown/unhandled entities (this cannot be done in search-and-replace block) - $text = preg_replace('/&([a-zA-Z0-9]{2,6}|#[0-9]{2,4});/', '', $text); - - // Convert "|+|amp|+|" into "&", need to be done after handling of unknown entities - // This properly handles situation of "&quot;" in input string - $text = str_replace('|+|amp|+|', '&', $text); - - // Normalise empty lines - $text = preg_replace("/\n\s+\n/", "\n\n", $text); - $text = preg_replace("/[\n]{3,}/", "\n\n", $text); - - // remove leading empty lines (can be produced by eg. P tag on the beginning) - $text = ltrim($text, "\n"); - - if ($this->options['width'] > 0) { - $text = wordwrap($text, $this->options['width']); - } - } - - /** - * Helper function called by preg_replace() on link replacement. - * - * Maintains an internal list of links to be displayed at the end of the - * text, with numeric indices to the original point in the text they - * appeared. Also makes an effort at identifying and handling absolute - * and relative links. - * - * @param string $link URL of the link - * @param string $display Part of the text to associate number with - * @param null $linkOverride - * @return string - */ - protected function buildlinkList($link, $display, $linkOverride = null) - { - $linkMethod = ($linkOverride) ? $linkOverride : $this->options['do_links']; - if ($linkMethod == 'none') { - return $display; - } - - // Ignored link types - if (preg_match('!^(javascript:|mailto:|#)!i', html_entity_decode($link))) { - return $display; - } - - if (preg_match('!^([a-z][a-z0-9.+-]+:)!i', $link)) { - $url = $link; - } else { - $url = $this->baseurl; - if (mb_substr($link, 0, 1) != '/') { - $url .= '/'; - } - $url .= $link; - } - - if ($linkMethod == 'table') { - if (($index = array_search($url, $this->linkList)) === false) { - $index = count($this->linkList); - $this->linkList[] = $url; - } - - return $display . ' [' . ($index + 1) . ']'; - } elseif ($linkMethod == 'nextline') { - if ($url === $display) { - return $display; - } - return $display . "\n[" . $url . ']'; - } elseif ($linkMethod == 'bbcode') { - return sprintf('[url=%s]%s[/url]', $url, $display); - } else { // link_method defaults to inline - if ($url === $display) { - return $display; - } - return $display . ' [' . $url . ']'; - } - } - - /** - * Helper function for PRE body conversion. - * - * @param string &$text HTML content - */ - protected function convertPre(&$text) - { - // get the content of PRE element - while (preg_match('/<pre[^>]*>(.*)<\/pre>/ismU', $text, $matches)) { - // Replace br tags with newlines to prevent the search-and-replace callback from killing whitespace - $this->preContent = preg_replace('/(<br\b[^>]*>)/i', "\n", $matches[1]); - - // Run our defined tags search-and-replace with callback - $this->preContent = preg_replace_callback( - $this->callbackSearch, - array($this, 'pregCallback'), - $this->preContent - ); - - // convert the content - $this->preContent = sprintf( - '<div><br>%s<br></div>', - preg_replace($this->preSearch, $this->preReplace, $this->preContent) - ); - - // replace the content (use callback because content can contain $0 variable) - $text = preg_replace_callback( - '/<pre[^>]*>.*<\/pre>/ismU', - array($this, 'pregPreCallback'), - $text, - 1 - ); - - // free memory - $this->preContent = ''; - } - } - - /** - * Helper function for BLOCKQUOTE body conversion. - * - * @param string &$text HTML content - */ - protected function convertBlockquotes(&$text) - { - if (preg_match_all('/<\/*blockquote[^>]*>/i', $text, $matches, PREG_OFFSET_CAPTURE)) { - $originalText = $text; - $start = 0; - $taglen = 0; - $level = 0; - $diff = 0; - foreach ($matches[0] as $m) { - $m[1] = mb_strlen(substr($originalText, 0, $m[1])); - if ($m[0][0] == '<' && $m[0][1] == '/') { - $level--; - if ($level < 0) { - $level = 0; // malformed HTML: go to next blockquote - } elseif ($level > 0) { - // skip inner blockquote - } else { - $end = $m[1]; - $len = $end - $taglen - $start; - // Get blockquote content - $body = mb_substr($text, $start + $taglen - $diff, $len); - - // Set text width - $pWidth = $this->options['width']; - if ($this->options['width'] > 0) $this->options['width'] -= 2; - // Convert blockquote content - $body = trim($body); - $this->converter($body); - // Add citation markers and create PRE block - $body = preg_replace('/((^|\n)>*)/', '\\1> ', trim($body)); - $body = '<pre>' . htmlspecialchars($body, $this->htmlFuncFlags, self::ENCODING) . '</pre>'; - // Re-set text width - $this->options['width'] = $pWidth; - // Replace content - $text = mb_substr($text, 0, $start - $diff) - . $body - . mb_substr($text, $end + mb_strlen($m[0]) - $diff); - - $diff += $len + $taglen + mb_strlen($m[0]) - mb_strlen($body); - unset($body); - } - } else { - if ($level == 0) { - $start = $m[1]; - $taglen = mb_strlen($m[0]); - } - $level++; - } - } - } - } - - /** - * Callback function for preg_replace_callback use. - * - * @param array $matches PREG matches - * @return string - */ - protected function pregCallback($matches) - { - switch (mb_strtolower($matches[1])) { - case 'p': - // Replace newlines with spaces. - $para = str_replace("\n", " ", $matches[3]); - - // Trim trailing and leading whitespace within the tag. - $para = trim($para); - - // Add trailing newlines for this para. - return "\n" . $para . "\n"; - case 'br': - return "\n"; - case 'b': - case 'strong': - return $this->toupper($matches[3]); - case 'del': - return $this->tostrike($matches[3]); - case 'th': - return $this->toupper("\t\t" . $matches[3] . "\n"); - case 'h': - return $this->toupper("\n\n" . $matches[3] . "\n\n"); - case 'a': - // override the link method - $linkOverride = null; - if (preg_match('/_html2text_link_(\w+)/', $matches[4], $linkOverrideMatch)) { - $linkOverride = $linkOverrideMatch[1]; - } - // Remove spaces in URL (#1487805) - $url = str_replace(' ', '', $matches[3]); - - return $this->buildlinkList($url, $matches[5], $linkOverride); - } - - return ''; - } - - /** - * Callback function for preg_replace_callback use in PRE content handler. - * - * @param array $matches PREG matches - * @return string - */ - protected function pregPreCallback(/** @noinspection PhpUnusedParameterInspection */ $matches) - { - return $this->preContent; - } - - /** - * Strtoupper function with HTML tags and entities handling. - * - * @param string $str Text to convert - * @return string Converted text - */ - protected function toupper($str) - { - // string can contain HTML tags - $chunks = preg_split('/(<[^>]*>)/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); - - // convert toupper only the text between HTML tags - foreach ($chunks as $i => $chunk) { - if ($chunk[0] != '<') { - $chunks[$i] = $this->strtoupper($chunk); - } - } - - return implode($chunks); - } - - /** - * Strtoupper multibyte wrapper function with HTML entities handling. - * - * @param string $str Text to convert - * @return string Converted text - */ - protected function strtoupper($str) - { - $str = html_entity_decode($str, $this->htmlFuncFlags, self::ENCODING); - $str = mb_strtoupper($str); - $str = htmlspecialchars($str, $this->htmlFuncFlags, self::ENCODING); - - return $str; - } - - /** - * Helper function for DEL conversion. - * - * @param string $text HTML content - * @return string Converted text - */ - protected function tostrike($str) - { - $rtn = ''; - for ($i = 0; $i < mb_strlen($str); $i++) { - $chr = mb_substr($str, $i, 1); - $combiningChr = chr(0xC0 | 0x336 >> 6). chr(0x80 | 0x336 & 0x3F); - $rtn .= $chr . $combiningChr; - } - return $rtn; - } -} diff --git a/civicrm/vendor/soundasleep/html2text/.editorconfig b/civicrm/vendor/soundasleep/html2text/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..7974b6a8a2e8767518055394771a834e159ae4d6 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/.editorconfig @@ -0,0 +1,23 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = tab +indent_size = 4 + +[*.md] +indent_style = space +indent_size = 2 + +# don't add newlines to test files +[tests/*] +indent_style = tabs +trim_trailing_whitespace = false +insert_final_newline = false diff --git a/civicrm/vendor/soundasleep/html2text/.github/workflows/lint.yml b/civicrm/vendor/soundasleep/html2text/.github/workflows/lint.yml new file mode 100644 index 0000000000000000000000000000000000000000..d9c55dfc6abcceff6d22023fa2562dee35f8e4e4 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/.github/workflows/lint.yml @@ -0,0 +1,17 @@ +name: Lint +on: + - push +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + tools: phplint + - name: Check syntax + run: phplint . diff --git a/civicrm/vendor/soundasleep/html2text/.github/workflows/test.yml b/civicrm/vendor/soundasleep/html2text/.github/workflows/test.yml new file mode 100644 index 0000000000000000000000000000000000000000..f1c485e90c768d36427f5abb830ea0b83f139b0f --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/.github/workflows/test.yml @@ -0,0 +1,41 @@ +name: Test +on: + - push +jobs: + test: + strategy: + matrix: + operating-system: + - ubuntu-latest + php-version: + - '7.3' + - '7.4' + - '8.0' + - '8.1' + - '8.2' + name: php ${{ matrix.php-version }} on ${{ matrix.operating-system }} + runs-on: ${{ matrix.operating-system }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: mbstring + coverage: none + - name: Get composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Setup composer cache + uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + - name: Install composer dependencies + env: + COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH }} + run: composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + - name: Run tests + run: vendor/bin/phpunit diff --git a/civicrm/vendor/soundasleep/html2text/.gitignore b/civicrm/vendor/soundasleep/html2text/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a41c6bab9f94ff242cd9ee4f80545cea2c3a0615 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/.gitignore @@ -0,0 +1,7 @@ +tests/*.output +*.sublime-project +*.sublime-workspace +vendor/ +**/*.DS_Store +.phpunit.result.cache +composer.lock diff --git a/civicrm/vendor/soundasleep/html2text/CHANGELOG.md b/civicrm/vendor/soundasleep/html2text/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..a1bda09549599546cae5534aa0b5a759a312e0d6 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [1.1.0] - 2019-02-15 +### Added +- Zero-width non-joiners are now stripped to prevent output issues, similar to non-breaking whitespace + +### Fixed +- Fix namespace in composer [#67](https://github.com/soundasleep/html2text/pull/67) + +## [1.0.0] - 2019-02-14 +### Added +- Added `drop_links` option to render links without the target href [#65](https://github.com/soundasleep/html2text/pull/65) + +### Changed +- **Important:** Changed namespace from `\Html2Text\Html2Text` to `\Soundasleep\Html2text` [#45](https://github.com/soundasleep/html2text/issues/45) +- Treat non-breaking spaces consistently: never include them in output text [#64](https://github.com/soundasleep/html2text/pull/64) +- Second argument to `convert()` is now an array, rather than boolean [#65](https://github.com/soundasleep/html2text/pull/65) +- Optimise/improve newline & whitespace handling [#47](https://github.com/soundasleep/html2text/pull/47) +- Upgrade PHP support to PHP 7.3+ +- Upgrade PHPUnit to 7.x +- Re-release project under MIT license [#58](https://github.com/soundasleep/html2text/issues/58) + +## [0.5.0] - 2017-04-20 +### Added +- Add ignore_error optional argument [#63](https://github.com/soundasleep/html2text/pull/63) +- Blockquote support [#50](https://github.com/soundasleep/html2text/pull/50) + +[Unreleased]: https://github.com/soundasleep/html2text/compare/1.1.0...HEAD +[1.1.0]: https://github.com/soundasleep/html2text/compare/1.0.0...1.1.0 +[1.0.0]: https://github.com/soundasleep/html2text/compare/0.5.0...1.0.0 +[0.5.0]: https://github.com/soundasleep/html2text/compare/0.5.0...0.3.4 diff --git a/civicrm/vendor/soundasleep/html2text/LICENSE.md b/civicrm/vendor/soundasleep/html2text/LICENSE.md new file mode 100644 index 0000000000000000000000000000000000000000..d8613be25bba4aa382b3ccd1a95e32ffdaede1be --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Jevon Wright + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/civicrm/vendor/soundasleep/html2text/README.md b/civicrm/vendor/soundasleep/html2text/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3055234a7803a01fbac8a77acbbf1cae94e65c10 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/README.md @@ -0,0 +1,102 @@ + [](https://packagist.org/packages/soundasleep/html2text) +========= + +html2text is a very simple script that uses DOM methods to convert HTML into a format similar to what would be +rendered by a browser - perfect for places where you need a quick text representation. For example: + +```html +<html> +<title>Ignored Title</title> +<body> + <h1>Hello, World!</h1> + + <p>This is some e-mail content. + Even though it has whitespace and newlines, the e-mail converter + will handle it correctly. + + <p>Even mismatched tags.</p> + + <div>A div</div> + <div>Another div</div> + <div>A div<div>within a div</div></div> + + <a href="http://foo.com">A link</a> + +</body> +</html> +``` + +Will be converted into: + +```text +Hello, World! + +This is some e-mail content. Even though it has whitespace and newlines, the e-mail converter will handle it correctly. + +Even mismatched tags. + +A div +Another div +A div +within a div + +[A link](http://foo.com) +``` + +See the [original blog post](http://journals.jevon.org/users/jevon-phd/entry/19818) or the related [StackOverflow answer](http://stackoverflow.com/a/2564472/39531). + +## Installing + +You can use [Composer](http://getcomposer.org/) to add the [package](https://packagist.org/packages/soundasleep/html2text) to your project: + +```json +{ + "require": { + "soundasleep/html2text": "~1.1" + } +} +``` + +And then use it quite simply: + +```php +$text = \Soundasleep\Html2Text::convert($html); +``` + +You can also include the supplied `html2text.php` and use `$text = convert_html_to_text($html);` instead. + +### Options + +| Option | Default | Description | +|--------|---------|-------------| +| **ignore_errors** | `false` | Set to `true` to ignore any XML parsing errors. | +| **drop_links** | `false` | Set to `true` to not render links as `[http://foo.com](My Link)`, but rather just `My Link`. | +| **char_set** | `'auto'` | Specify a specific character set. Pass multiple character sets (comma separated) to detect encoding, default is ASCII,UTF-8 | + +Pass along options as a second argument to `convert`, for example: + +```php +$options = array( + 'ignore_errors' => true, + // other options go here +); +$text = \Soundasleep\Html2Text::convert($html, $options); +``` + +## Tests + +Some very basic tests are provided in the `tests/` directory. Run them with `composer install && vendor/bin/phpunit`. + +## Troubleshooting + +### Class 'DOMDocument' not found + +You need to [install the PHP XML extension](https://github.com/soundasleep/html2text/issues/55) for your PHP version. e.g. `apt-get install php7.4-xml` + +## License + +`html2text` is [licensed under MIT](LICENSE.md), making it suitable for both Eclipse and GPL projects. + +## Other versions + +Also see [html2text_ruby](https://github.com/soundasleep/html2text_ruby), a Ruby implementation. diff --git a/civicrm/vendor/soundasleep/html2text/composer.json b/civicrm/vendor/soundasleep/html2text/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..fb662c18ababa05e359a03eaa90411d0eade6331 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/composer.json @@ -0,0 +1,32 @@ +{ + "name": "soundasleep/html2text", + "description": "A PHP script to convert HTML into a plain text format", + "type": "library", + "keywords": [ "php", "html", "text", "email" ], + "homepage": "https://github.com/soundasleep/html2text", + "license": "MIT", + "authors": [ + { + "name": "Jevon Wright", + "homepage": "https://jevon.org", + "role": "Developer" + } + ], + "autoload": { + "psr-4": { + "Soundasleep\\": "src" + } + }, + "support": { + "email": "support@jevon.org" + }, + "require": { + "php": "^7.3|^8.0", + "ext-dom": "*", + "ext-libxml": "*" + }, + "require-dev": { + "phpunit/phpunit": "^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.9" + } +} diff --git a/civicrm/vendor/soundasleep/html2text/convert.php b/civicrm/vendor/soundasleep/html2text/convert.php new file mode 100644 index 0000000000000000000000000000000000000000..48094eb215b7e4f0d998d6264ded43e1c41ba57c --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/convert.php @@ -0,0 +1,21 @@ +<?php +/** + * This file allows you to convert through the command line. + * Usage: + * php -f convert.php [input file] + */ + +if (count($argv) < 2) { + throw new \InvalidArgumentException("Expected: php -f convert.php [input file]"); +} + +if (!file_exists($argv[1])) { + throw new \InvalidArgumentException("'" . $argv[1] . "' does not exist"); +} + +$input = file_get_contents($argv[1]); + +require_once(__DIR__ . "/src/Html2Text.php"); +require_once(__DIR__ . "/src/Html2TextException.php"); + +echo \Soundasleep\Html2Text::convert($input); diff --git a/civicrm/vendor/soundasleep/html2text/html2text.php b/civicrm/vendor/soundasleep/html2text/html2text.php new file mode 100644 index 0000000000000000000000000000000000000000..ed52a3b6da568ecd8b056a0fe6939558e32834f7 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/html2text.php @@ -0,0 +1,16 @@ +<?php +/** + * This file is available if you still want to use functions rather than + * autoloading classes. + */ + +require_once(__DIR__ . "/src/Html2Text.php"); +require_once(__DIR__ . "/src/Html2TextException.php"); + +function convert_html_to_text($html, $ignore_error = false) { + return Soundasleep\Html2Text::convert($html, $ignore_error); +} + +function fix_newlines($text) { + return Soundasleep\Html2Text::fixNewlines($text); +} diff --git a/civicrm/vendor/soundasleep/html2text/phpstan.neon.dist b/civicrm/vendor/soundasleep/html2text/phpstan.neon.dist new file mode 100644 index 0000000000000000000000000000000000000000..b05dc951193589e67058be20954945217246d733 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/phpstan.neon.dist @@ -0,0 +1,7 @@ +parameters: + level: 6 + errorFormat: raw + editorUrl: '%%file%% %%line%% %%column%%: %%error%%' + paths: + - src + - tests diff --git a/civicrm/vendor/soundasleep/html2text/phpunit.xml b/civicrm/vendor/soundasleep/html2text/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..352d5537a8a89aa791189618553f135ae9c9e6fa --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/phpunit.xml @@ -0,0 +1,8 @@ +<phpunit stopOnFailure="true" stopOnError="true" beStrictAboutTestsThatDoNotTestAnything="false"> + <testsuites> + <testsuite name="Tests"> + <!-- loads all *Test.php --> + <directory>tests</directory> + </testsuite> + </testsuites> +</phpunit> diff --git a/civicrm/vendor/soundasleep/html2text/src/Html2Text.php b/civicrm/vendor/soundasleep/html2text/src/Html2Text.php new file mode 100644 index 0000000000000000000000000000000000000000..1763cb4a4536ffe862fdf31f0b117cd45804f174 --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/src/Html2Text.php @@ -0,0 +1,540 @@ +<?php + +namespace Soundasleep; + +class Html2Text { + + /** @return array<string, bool | string> */ + public static function defaultOptions(): array { + return [ + 'ignore_errors' => false, + 'drop_links' => false, + 'char_set' => 'auto' + ]; + } + + /** + * Tries to convert the given HTML into a plain text format - best suited for + * e-mail display, etc. + * + * <p>In particular, it tries to maintain the following features: + * <ul> + * <li>Links are maintained, with the 'href' copied over + * <li>Information in the <head> is lost + * </ul> + * + * @param string $html the input HTML + * @param boolean|array<string, bool | string> $options if boolean, Ignore xml parsing errors, else ['ignore_errors' => false, 'drop_links' => false, 'char_set' => 'auto'] + * @return string the HTML converted, as best as possible, to text + * @throws Html2TextException if the HTML could not be loaded as a {@link \DOMDocument} + */ + public static function convert(string $html, $options = []): string { + + if ($options === false || $options === true) { + // Using old style (< 1.0) of passing in options + $options = ['ignore_errors' => $options]; + } + + $options = array_merge(static::defaultOptions(), $options); + + // check all options are valid + foreach ($options as $key => $value) { + if (!in_array($key, array_keys(static::defaultOptions()))) { + throw new \InvalidArgumentException("Unknown html2text option '$key'. Valid options are " . implode(',', static::defaultOptions())); + } + } + + $is_office_document = self::isOfficeDocument($html); + + if ($is_office_document) { + // remove office namespace + $html = str_replace(["<o:p>", "</o:p>"], "", $html); + } + + $html = self::fixNewlines($html); + + // use mb_convert_encoding for legacy versions of php + if (PHP_MAJOR_VERSION * 10 + PHP_MINOR_VERSION < 81 && mb_detect_encoding($html, "UTF-8", true)) { + $html = mb_convert_encoding($html, "HTML-ENTITIES", "UTF-8"); + } + + $doc = self::getDocument($html, $options); + + $output = self::iterateOverNode($doc, null, false, $is_office_document, $options); + + // process output for whitespace/newlines + $output = self::processWhitespaceNewlines($output); + + return $output; + } + + /** + * Unify newlines; in particular, \r\n becomes \n, and + * then \r becomes \n. This means that all newlines (Unix, Windows, Mac) + * all become \ns. + * + * @param string $text text with any number of \r, \r\n and \n combinations + * @return string the fixed text + */ + public static function fixNewlines(string $text): string { + // replace \r\n to \n + $text = str_replace("\r\n", "\n", $text); + // remove \rs + $text = str_replace("\r", "\n", $text); + + return $text; + } + + /** @return array<string> */ + public static function nbspCodes(): array { + return [ + "\xc2\xa0", + "\u00a0", + ]; + } + + /** @return array<string> */ + public static function zwnjCodes(): array { + return [ + "\xe2\x80\x8c", + "\u200c", + ]; + } + + /** + * Remove leading or trailing spaces and excess empty lines from provided multiline text + * + * @param string $text multiline text any number of leading or trailing spaces or excess lines + * @return string the fixed text + */ + public static function processWhitespaceNewlines(string $text): string { + + // remove excess spaces around tabs + $text = preg_replace("/ *\t */im", "\t", $text); + + // remove leading whitespace + $text = ltrim($text); + + // remove leading spaces on each line + $text = preg_replace("/\n[ \t]*/im", "\n", $text); + + // convert non-breaking spaces to regular spaces to prevent output issues, + // do it here so they do NOT get removed with other leading spaces, as they + // are sometimes used for indentation + $text = self::renderText($text); + + // remove trailing whitespace + $text = rtrim($text); + + // remove trailing spaces on each line + $text = preg_replace("/[ \t]*\n/im", "\n", $text); + + // unarmor pre blocks + $text = self::fixNewLines($text); + + // remove unnecessary empty lines + $text = preg_replace("/\n\n\n*/im", "\n\n", $text); + + return $text; + } + + /** + * Can we guess that this HTML is generated by Microsoft Office? + */ + public static function isOfficeDocument(string $html): bool { + return strpos($html, "urn:schemas-microsoft-com:office") !== false; + } + + public static function isWhitespace(string $text): bool { + return strlen(trim(self::renderText($text), "\n\r\t ")) === 0; + } + + /** + * Parse HTML into a DOMDocument + * + * @param string $html the input HTML + * @param array<string, bool | string> $options + * @return \DOMDocument the parsed document tree + */ + private static function getDocument(string $html, array $options): \DOMDocument { + + $doc = new \DOMDocument(); + + $html = trim($html); + + if (!$html) { + // DOMDocument doesn't support empty value and throws an error + // Return empty document instead + return $doc; + } + + if ($html[0] !== '<') { + // If HTML does not begin with a tag, we put a body tag around it. + // If we do not do this, PHP will insert a paragraph tag around + // the first block of text for some reason which can mess up + // the newlines. See pre.html test for an example. + $html = '<body>' . $html . '</body>'; + } + + $header = ''; + // use char sets for modern versions of php + if (PHP_MAJOR_VERSION * 10 + PHP_MINOR_VERSION >= 81) { + // use specified char_set, or auto detect if not set + $char_set = ! empty($options['char_set']) ? $options['char_set'] : 'auto'; + if ('auto' === $char_set) { + $char_set = mb_detect_encoding($html); + } else if (strpos($char_set, ',')) { + mb_detect_order($char_set); + $char_set = mb_detect_encoding($html); + } + // turn off error detection for Windows-1252 legacy html + if (strpos($char_set, '1252')) { + $options['ignore_errors'] = true; + } + $header = '<?xml version="1.0" encoding="' . $char_set . '">'; + } + + if (! empty($options['ignore_errors'])) { + $doc->strictErrorChecking = false; + $doc->recover = true; + $doc->xmlStandalone = true; + $old_internal_errors = libxml_use_internal_errors(true); + $load_result = $doc->loadHTML($header . $html, LIBXML_NOWARNING | LIBXML_NOERROR | LIBXML_NONET | LIBXML_PARSEHUGE); + libxml_use_internal_errors($old_internal_errors); + } + else { + $load_result = $doc->loadHTML($header . $html); + } + + if (!$load_result) { + throw new Html2TextException("Could not load HTML - badly formed?", $html); + } + + return $doc; + } + + /** + * Replace any special characters with simple text versions, to prevent output issues: + * - Convert non-breaking spaces to regular spaces; and + * - Convert zero-width non-joiners to '' (nothing). + * + * This is to match our goal of rendering documents as they would be rendered + * by a browser. + */ + private static function renderText(string $text): string { + $text = str_replace(self::nbspCodes(), " ", $text); + $text = str_replace(self::zwnjCodes(), "", $text); + return $text; + } + + private static function nextChildName(?\DOMNode $node): ?string { + // get the next child + $nextNode = $node->nextSibling; + while ($nextNode != null) { + if ($nextNode instanceof \DOMText) { + if (!self::isWhitespace($nextNode->wholeText)) { + break; + } + } + + if ($nextNode instanceof \DOMElement) { + break; + } + + $nextNode = $nextNode->nextSibling; + } + + $nextName = null; + if (($nextNode instanceof \DOMElement || $nextNode instanceof \DOMText) && $nextNode != null) { + $nextName = strtolower($nextNode->nodeName); + } + + return $nextName; + } + + /** @param array<string, bool | string> $options */ + private static function iterateOverNode(\DOMNode $node, ?string $prevName, bool $in_pre, bool $is_office_document, array $options): string { + if ($node instanceof \DOMText) { + // Replace whitespace characters with a space (equivilant to \s) + if ($in_pre) { + $text = "\n" . trim(self::renderText($node->wholeText), "\n\r\t ") . "\n"; + + // Remove trailing whitespace only + $text = preg_replace("/[ \t]*\n/im", "\n", $text); + + // armor newlines with \r. + return str_replace("\n", "\r", $text); + + } + $text = self::renderText($node->wholeText); + $text = preg_replace("/[\\t\\n\\f\\r ]+/im", " ", $text); + + if (!self::isWhitespace($text) && ($prevName == 'p' || $prevName == 'div')) { + return "\n" . $text; + } + return $text; + } + + if ($node instanceof \DOMDocumentType || $node instanceof \DOMProcessingInstruction) { + // ignore + return ""; + } + + $name = strtolower($node->nodeName); + $nextName = self::nextChildName($node); + + // start whitespace + switch ($name) { + case "hr": + $prefix = ''; + if ($prevName != null) { + $prefix = "\n"; + } + return $prefix . "---------------------------------------------------------------\n"; + + case "style": + case "head": + case "title": + case "meta": + case "script": + // ignore these tags + return ""; + + case "h1": + case "h2": + case "h3": + case "h4": + case "h5": + case "h6": + case "ol": + case "ul": + case "pre": + // add two newlines + $output = "\n\n"; + break; + + case "td": + case "th": + // add tab char to separate table fields + $output = "\t"; + break; + + case "p": + // Microsoft exchange emails often include HTML which, when passed through + // html2text, results in lots of double line returns everywhere. + // + // To fix this, for any p element with a className of `MsoNormal` (the standard + // classname in any Microsoft export or outlook for a paragraph that behaves + // like a line return) we skip the first line returns and set the name to br. + // @phpstan-ignore-next-line + if ($is_office_document && $node->getAttribute('class') == 'MsoNormal') { + $output = ""; + $name = 'br'; + break; + } + + // add two lines + $output = "\n\n"; + break; + + case "tr": + // add one line + $output = "\n"; + break; + + case "div": + $output = ""; + if ($prevName !== null) { + // add one line + $output .= "\n"; + } + break; + + case "li": + $output = "- "; + break; + + default: + // print out contents of unknown tags + $output = ""; + break; + } + + // debug + //$output .= "[$name,$nextName]"; + + if (isset($node->childNodes)) { + + $n = $node->childNodes->item(0); + $previousSiblingNames = []; + $previousSiblingName = null; + + $parts = []; + $trailing_whitespace = 0; + + while ($n != null) { + + $text = self::iterateOverNode($n, $previousSiblingName, $in_pre || $name == 'pre', $is_office_document, $options); + + // Pass current node name to next child, as previousSibling does not appear to get populated + if ($n instanceof \DOMDocumentType + || $n instanceof \DOMProcessingInstruction + || ($n instanceof \DOMText && self::isWhitespace($text))) { + // Keep current previousSiblingName, these are invisible + $trailing_whitespace++; + } + else { + $previousSiblingName = strtolower($n->nodeName); + $previousSiblingNames[] = $previousSiblingName; + $trailing_whitespace = 0; + } + + $node->removeChild($n); + $n = $node->childNodes->item(0); + + $parts[] = $text; + } + + // Remove trailing whitespace, important for the br check below + while ($trailing_whitespace-- > 0) { + array_pop($parts); + } + + // suppress last br tag inside a node list if follows text + $last_name = array_pop($previousSiblingNames); + if ($last_name === 'br') { + $last_name = array_pop($previousSiblingNames); + if ($last_name === '#text') { + array_pop($parts); + } + } + + $output .= implode('', $parts); + } + + // end whitespace + switch ($name) { + case "h1": + case "h2": + case "h3": + case "h4": + case "h5": + case "h6": + case "pre": + case "p": + // add two lines + $output .= "\n\n"; + break; + + case "br": + // add one line + $output .= "\n"; + break; + + case "div": + break; + + case "a": + // links are returned in [text](link) format + // @phpstan-ignore-next-line + $href = $node->getAttribute("href"); + + $output = trim($output); + + // remove double [[ ]] s from linking images + if (substr($output, 0, 1) == "[" && substr($output, -1) == "]") { + $output = substr($output, 1, strlen($output) - 2); + + // for linking images, the title of the <a> overrides the title of the <img> + // @phpstan-ignore-next-line + if ($node->getAttribute("title")) { + // @phpstan-ignore-next-line + $output = $node->getAttribute("title"); + } + } + + // if there is no link text, but a title attr + // @phpstan-ignore-next-line + if (!$output && $node->getAttribute("title")) { + // @phpstan-ignore-next-line + $output = $node->getAttribute("title"); + } + + if ($href == null) { + // it doesn't link anywhere + // @phpstan-ignore-next-line + if ($node->getAttribute("name") != null) { + if ($options['drop_links']) { + $output = "$output"; + } else { + $output = "[$output]"; + } + } + } else { + if ($href == $output || $href == "mailto:$output" || $href == "http://$output" || $href == "https://$output") { + // link to the same address: just use link + $output = "$output"; + } else { + // replace it + if ($output) { + if ($options['drop_links']) { + $output = "$output"; + } else { + $output = "[$output]($href)"; + } + } else { + // empty string + $output = "$href"; + } + } + } + + // does the next node require additional whitespace? + switch ($nextName) { + case "h1": case "h2": case "h3": case "h4": case "h5": case "h6": + $output .= "\n"; + break; + } + break; + + case "img": + // @phpstan-ignore-next-line + if ($node->getAttribute("title")) { + // @phpstan-ignore-next-line + $output = "[" . $node->getAttribute("title") . "]"; + // @phpstan-ignore-next-line + } elseif ($node->getAttribute("alt")) { + // @phpstan-ignore-next-line + $output = "[" . $node->getAttribute("alt") . "]"; + } else { + $output = ""; + } + break; + + case "li": + $output .= "\n"; + break; + + case "blockquote": + // process quoted text for whitespace/newlines + $output = self::processWhitespaceNewlines($output); + + // add leading newline + $output = "\n" . $output; + + // prepend '> ' at the beginning of all lines + $output = preg_replace("/\n/im", "\n> ", $output); + + // replace leading '> >' with '>>' + $output = preg_replace("/\n> >/im", "\n>>", $output); + + // add another leading newline and trailing newlines + $output = "\n" . $output . "\n\n"; + break; + default: + // do nothing + } + + return $output; + } +} diff --git a/civicrm/vendor/soundasleep/html2text/src/Html2TextException.php b/civicrm/vendor/soundasleep/html2text/src/Html2TextException.php new file mode 100644 index 0000000000000000000000000000000000000000..fe919f35773cd56c6778a7fe8c6cd890490e853b --- /dev/null +++ b/civicrm/vendor/soundasleep/html2text/src/Html2TextException.php @@ -0,0 +1,15 @@ +<?php + +namespace Soundasleep; + +class Html2TextException extends \Exception { + + /** @var string $more_info */ + public $more_info; + + public function __construct(string $message = "", string $more_info = "") { + parent::__construct($message); + $this->more_info = $more_info; + } + +} diff --git a/civicrm/xml/schema/ACL/ACL.xml b/civicrm/xml/schema/ACL/ACL.xml index 1e058ab4732e428696113fec05935188547d6faa..94e143ce7f0b86b899990042a8a834d6a9538306 100644 --- a/civicrm/xml/schema/ACL/ACL.xml +++ b/civicrm/xml/schema/ACL/ACL.xml @@ -144,6 +144,8 @@ <name>is_active</name> <title>ACL Is Active?</title> <type>boolean</type> + <required>true</required> + <default>1</default> <comment>Is this property active?</comment> <add>1.6</add> <html> diff --git a/civicrm/xml/schema/Contact/DashboardContact.xml b/civicrm/xml/schema/Contact/DashboardContact.xml index bd3538d35d099dd17808706efe1e16d2c70e2434..4018ca9673b1eeec72099684ec6131e5f7388acd 100644 --- a/civicrm/xml/schema/Contact/DashboardContact.xml +++ b/civicrm/xml/schema/Contact/DashboardContact.xml @@ -96,8 +96,10 @@ <field> <name>is_active</name> <type>boolean</type> + <required>true</required> <title>Dashlet is Active?</title> <comment>Is this widget active?</comment> + <!-- FIXME - nonstandard default for is_active --> <default>0</default> <html> <type>CheckBox</type> diff --git a/civicrm/xml/schema/Core/Dashboard.xml b/civicrm/xml/schema/Core/Dashboard.xml index d623d645c5e73012f197cdcaed639e2c790b7c69..d61f0b54651720185242d719268b6bf7b8181590 100644 --- a/civicrm/xml/schema/Core/Dashboard.xml +++ b/civicrm/xml/schema/Core/Dashboard.xml @@ -131,6 +131,7 @@ <type>boolean</type> <title>Is Dashlet Active?</title> <comment>Is this dashlet active?</comment> + <!-- FIXME - nonstandard default for is_active --> <default>0</default> <html> <type>CheckBox</type> diff --git a/civicrm/xml/schema/Core/EntityTag.xml b/civicrm/xml/schema/Core/EntityTag.xml index ab063e8a7d8faf5eeddd07e7f3f4162bdf672944..c39d45b2daae30918861c50e1cb9e8d2d7fdf854 100644 --- a/civicrm/xml/schema/Core/EntityTag.xml +++ b/civicrm/xml/schema/Core/EntityTag.xml @@ -56,7 +56,8 @@ <pseudoconstant> <table>civicrm_tag</table> <keyColumn>id</keyColumn> - <labelColumn>name</labelColumn> + <nameColumn>name</nameColumn> + <labelColumn>label</labelColumn> <condition>is_tagset != 1</condition> </pseudoconstant> <html> diff --git a/civicrm/xml/schema/Core/Managed.xml b/civicrm/xml/schema/Core/Managed.xml index 43de469c9d367d84ef09c376865de9773a8a8168..9897042cf859a941641d4bd2b53e2b45d5993053 100644 --- a/civicrm/xml/schema/Core/Managed.xml +++ b/civicrm/xml/schema/Core/Managed.xml @@ -27,16 +27,20 @@ <name>module</name> <title>Module</title> <type>varchar</type> - <length>127</length> + <length>255</length> <required>true</required> - <comment>Name of the module which declared this object</comment> + <comment>Name of the module which declared this object (soft FK to civicrm_extension.full_name)</comment> + <pseudoconstant> + <callback>CRM_Core_BAO_Managed::getBaseModules</callback> + </pseudoconstant> <add>4.2</add> </field> <field> <name>name</name> <title>Name</title> <type>varchar</type> - <length>127</length> + <length>255</length> + <required>true</required> <comment>Symbolic name used by the module to identify the object</comment> <add>4.2</add> </field> @@ -59,15 +63,16 @@ <name>entity_id</name> <title>Entity ID</title> <type>int unsigned</type> - <required>true</required> - <comment>Foreign key to the referenced item.</comment> + <comment>Soft foreign key to the referenced item.</comment> <add>4.2</add> </field> <field> <name>cleanup</name> <title>Cleanup Setting</title> <type>varchar</type> - <length>32</length> + <length>16</length> + <required>true</required> + <default>'always'</default> <comment>Policy on when to cleanup entity (always, never, unused)</comment> <pseudoconstant> <callback>CRM_Core_ManagedEntities::getCleanupOptions</callback> diff --git a/civicrm/xml/schema/Core/Tag.xml b/civicrm/xml/schema/Core/Tag.xml index 3d875d5346ed140be071bcdfcb912f2a69a2537e..620eb591e903b8f5ea0ce046df46f189d786df6b 100644 --- a/civicrm/xml/schema/Core/Tag.xml +++ b/civicrm/xml/schema/Core/Tag.xml @@ -8,7 +8,7 @@ <add>1.1</add> <log>true</log> <icon>fa-tag</icon> - <labelField>name</labelField> + <labelField>label</labelField> <field> <name>id</name> <title>Tag ID</title> @@ -30,9 +30,23 @@ <type>varchar</type> <required>true</required> <length>64</length> - <comment>Name of Tag.</comment> + <comment>Unique machine name</comment> <add>1.1</add> </field> + <!-- TODO: Localizable --> + <field> + <name>label</name> + <title>Tag Label</title> + <comment>User-facing tag name</comment> + <required>true</required> + <type>varchar</type> + <length>64</length> + <html> + <type>Text</type> + </html> + <add>5.68</add> + </field> + <!-- TODO: Localizable --> <field> <name>description</name> <title>Description</title> @@ -50,7 +64,8 @@ <pseudoconstant> <table>civicrm_tag</table> <keyColumn>id</keyColumn> - <labelColumn>name</labelColumn> + <nameColumn>name</nameColumn> + <labelColumn>label</labelColumn> </pseudoconstant> <html> <label>Parent Tag</label> @@ -116,6 +131,7 @@ <comment>FK to civicrm_contact, who created this tag</comment> <html> <label>Created By</label> + <type>EntityRef</type> </html> <add>3.4</add> </field> @@ -140,6 +156,13 @@ <type>datetime</type> <title>Tag Created Date</title> <comment>Date and time that tag was created.</comment> + <default>CURRENT_TIMESTAMP</default> + <readonly>true</readonly> + <html> + <type>Select Date</type> + <formatType>activityDateTime</formatType> + <label>Created Date</label> + </html> <add>3.4</add> </field> </table> diff --git a/civicrm/xml/schema/Event/Event.xml b/civicrm/xml/schema/Event/Event.xml index 0ed5c2e86305d09c3d8450b7749999e0c84e0fc8..194c97ecc8176d6932041e7af5f95a65755c4fc3 100644 --- a/civicrm/xml/schema/Event/Event.xml +++ b/civicrm/xml/schema/Event/Event.xml @@ -294,6 +294,7 @@ <title>Is Active</title> <type>boolean</type> <required>true</required> + <!-- FIXME - nonstandard default for is_active --> <default>0</default> <comment>Is this Event enabled or disabled/cancelled?</comment> <add>1.7</add> diff --git a/civicrm/xml/schema/Mailing/Mailing.xml b/civicrm/xml/schema/Mailing/Mailing.xml index 5cba6fe1854c8c3d60971708ef215ea70a4c7335..740e64ae15577f2b45fc456117eec8141307b5f7 100644 --- a/civicrm/xml/schema/Mailing/Mailing.xml +++ b/civicrm/xml/schema/Mailing/Mailing.xml @@ -11,8 +11,9 @@ <component>CiviMail</component> <labelField>name</labelField> <paths> - <add>civicrm/a/#/mailing/new</add> - <update>civicrm/a/#/mailing/[id]</update> + <add>civicrm/mailing/send</add> + <update>civicrm/mailing/send?mid=[id]&continue=true</update> + <copy>civicrm/mailing/send?mid=[id]</copy> <view>civicrm/mailing/report?mid=[id]&reset=1</view> <preview>civicrm/mailing/view?id=[id]&reset=1</preview> </paths> diff --git a/civicrm/xml/schema/Mailing/MailingTrackableURL.xml b/civicrm/xml/schema/Mailing/MailingTrackableURL.xml index 337e8adbbf8ce037ce68768f9155d0239d5f5d8d..7cef671ecd2646b3497b77ff00d559d9bd68083b 100644 --- a/civicrm/xml/schema/Mailing/MailingTrackableURL.xml +++ b/civicrm/xml/schema/Mailing/MailingTrackableURL.xml @@ -28,6 +28,9 @@ <type>text</type> <required>true</required> <comment>The URL to be tracked.</comment> + <html> + <type>Text</type> + </html> </field> <field> <name>mailing_id</name> diff --git a/civicrm/xml/templates/civicrm_msg_template.tpl b/civicrm/xml/templates/civicrm_msg_template.tpl index 8fcd5fe0354575b7fe35dd9b8b9d42bdd0ba0749..22f55527c14e7b5b82a09cafa7c67098f3e52798 100644 --- a/civicrm/xml/templates/civicrm_msg_template.tpl +++ b/civicrm/xml/templates/civicrm_msg_template.tpl @@ -9,74 +9,6 @@ -- Generated from {$smarty.template} -- {$generated} -- -{* not sure how to define the below in Smarty, so doing it in PHP instead *} -{php} - $ogNames = array( - 'case' => ts('Message Template Workflow for Cases', array('escape' => 'sql')), - 'contribution' => ts('Message Template Workflow for Contributions', array('escape' => 'sql')), - 'event' => ts('Message Template Workflow for Events', array('escape' => 'sql')), - 'friend' => ts('Message Template Workflow for Tell-a-Friend', array('escape' => 'sql')), - 'membership' => ts('Message Template Workflow for Memberships', array('escape' => 'sql')), - 'meta' => ts('Message Template Workflow for Meta Templates', array('escape' => 'sql')), - 'pledge' => ts('Message Template Workflow for Pledges', array('escape' => 'sql')), - 'uf' => ts('Message Template Workflow for Profiles', array('escape' => 'sql')), - 'petition' => ts('Message Template Workflow for Petition', array('escape' => 'sql')), - ); - $ovNames = array( - 'case' => array( - 'case_activity' => ts('Cases - Send Copy of an Activity', array('escape' => 'sql')), - ), - 'contribution' => array( - 'contribution_dupalert' => ts('Contributions - Duplicate Organization Alert', array('escape' => 'sql')), - 'contribution_offline_receipt' => ts('Contributions - Receipt (off-line)', array('escape' => 'sql')), - 'contribution_online_receipt' => ts('Contributions - Receipt (on-line)', array('escape' => 'sql')), - 'contribution_invoice_receipt' => ts('Contributions - Invoice', array('escape' => 'sql')), - 'contribution_recurring_notify' => ts('Contributions - Recurring Start and End Notification', array('escape' => 'sql')), - 'contribution_recurring_cancelled' => ts('Contributions - Recurring Cancellation Notification', array('escape' => 'sql')), - 'contribution_recurring_billing' => ts('Contributions - Recurring Billing Updates', array('escape' => 'sql')), - 'contribution_recurring_edit' => ts('Contributions - Recurring Updates', array('escape' => 'sql')), - 'pcp_notify' => ts('Personal Campaign Pages - Admin Notification', array('escape' => 'sql')), - 'pcp_status_change' => ts('Personal Campaign Pages - Supporter Status Change Notification', array('escape' => 'sql')), - 'pcp_supporter_notify' => ts('Personal Campaign Pages - Supporter Welcome', array('escape' => 'sql')), - 'pcp_owner_notify' => ts('Personal Campaign Pages - Owner Notification', array('escape' => 'sql')), - 'payment_or_refund_notification' => ts('Additional Payment Receipt or Refund Notification', array('escape' => 'sql')), - ), - 'event' => array( - 'event_offline_receipt' => ts('Events - Registration Confirmation and Receipt (off-line)', array('escape' => 'sql')), - 'event_online_receipt' => ts('Events - Registration Confirmation and Receipt (on-line)', array('escape' => 'sql')), - 'event_registration_receipt' => ts('Events - Receipt only', array('escape' => 'sql')), - 'participant_cancelled' => ts('Events - Registration Cancellation Notice', array('escape' => 'sql')), - 'participant_confirm' => ts('Events - Registration Confirmation Invite', array('escape' => 'sql')), - 'participant_expired' => ts('Events - Pending Registration Expiration Notice', array('escape' => 'sql')), - 'participant_transferred' => ts('Events - Registration Transferred Notice', array('escape' => 'sql')), - ), - 'friend' => array( - 'friend' => ts('Tell-a-Friend Email', array('escape' => 'sql')), - ), - 'membership' => array( - 'membership_offline_receipt' => ts('Memberships - Signup and Renewal Receipts (off-line)', array('escape' => 'sql')), - 'membership_online_receipt' => ts('Memberships - Receipt (on-line)', array('escape' => 'sql')), - 'membership_autorenew_cancelled' => ts('Memberships - Auto-renew Cancellation Notification', array('escape' => 'sql')), - 'membership_autorenew_billing' => ts('Memberships - Auto-renew Billing Updates', array('escape' => 'sql')), - ), - 'meta' => array( - 'test_preview' => ts('Test-drive - Receipt Header', array('escape' => 'sql')), - ), - 'pledge' => array( - 'pledge_acknowledge' => ts('Pledges - Acknowledgement', array('escape' => 'sql')), - 'pledge_reminder' => ts('Pledges - Payment Reminder', array('escape' => 'sql')), - ), - 'uf' => array( - 'uf_notify' => ts('Profiles - Admin Notification', array('escape' => 'sql')), - ), - 'petition' => array( - 'petition_sign' => ts('Petition - signature added', array('escape' => 'sql')), - 'petition_confirmation_needed' => ts('Petition - need verification', array('escape' => 'sql')), - ), - ); - $this->assign('ogNames', $ogNames); - $this->assign('ovNames', $ovNames); -{/php} INSERT INTO civicrm_option_group (name, {localize field='title'}title{/localize}, {localize field='description'}description{/localize}, is_reserved, is_active) VALUES @@ -106,23 +38,17 @@ INSERT INTO civicrm_msg_template (msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved) VALUES {foreach from=$ovNames key=gName item=ovs name=for_groups} {foreach from=$ovs key=vName item=title name=for_values} - {fetch assign=subject file="`$gencodeXmlDir`/templates/message_templates/`$vName`_subject.tpl"} - {fetch assign=text file="`$gencodeXmlDir`/templates/message_templates/`$vName`_text.tpl"} - {fetch assign=html file="`$gencodeXmlDir`/templates/message_templates/`$vName`_html.tpl"} + {assign var="subject_file_name" value=$vName|cat:'_subject'} + {assign var="html_file_name" value=$vName|cat:'_html'} + {assign var="text_file_name" value=$vName|cat:'_text'} + {fetch assign=subject file="$gencodeXmlDir/templates/message_templates/$subject_file_name.tpl"} + {fetch assign=text file="$gencodeXmlDir/templates/message_templates/$text_file_name.tpl"} + {fetch assign=html file="$gencodeXmlDir/templates/message_templates/$html_file_name.tpl"} ('{$title}', '{$subject|escape:"quotes"}', '{$text|escape:"quotes"}', '{$html|escape:"quotes"}', '{$vName}', @tpl_ovid_{$vName}, 1, 0), ('{$title}', '{$subject|escape:"quotes"}', '{$text|escape:"quotes"}', '{$html|escape:"quotes"}', '{$vName}', @tpl_ovid_{$vName}, 0, 1) {if $smarty.foreach.for_groups.last and $smarty.foreach.for_values.last};{else},{/if} {/foreach} {/foreach} -{php} - $dir = $this->_tpl_vars['gencodeXmlDir'] . '/templates/message_templates/sample'; - $templates = array(); - foreach (preg_grep('/\.tpl$/', scandir($dir)) as $filename) { - $templates[] = array('name' => basename($filename, '.tpl'), 'filename' => "$dir/$filename"); - } - $this->assign('templates', $templates); -{/php} - {foreach from=$templates item=tpl} {fetch assign=content file=$tpl.filename} INSERT INTO civicrm_msg_template diff --git a/civicrm/xml/templates/civicrm_state_province.tpl b/civicrm/xml/templates/civicrm_state_province.tpl index 45284f7413294660457e8669dea5f92db437790d..0246455a8cae3785b89165f524161001ccf5b437 100644 --- a/civicrm/xml/templates/civicrm_state_province.tpl +++ b/civicrm/xml/templates/civicrm_state_province.tpl @@ -2386,19 +2386,18 @@ INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES (3947, 1161, "06", "Buskerud"), (3948, 1161, "20", "Finnmark"), (3949, 1161, "04", "Hedmark"), -(3950, 1161, "12", "Hordaland"), (3951, 1161, "15", "Møre og Romsdal"), (3952, 1161, "18", "Nordland"), (3953, 1161, "17", "Nord-Trøndelag"), (3954, 1161, "05", "Oppland"), (3955, 1161, "03", "Oslo"), (3956, 1161, "11", "Rogaland"), -(3957, 1161, "14", "Sogn og Fjordane"), -(3958, 1161, "16", "Sør-Trøndelag"), -(3959, 1161, "06", "Telemark"), -(3960, 1161, "19", "Troms"), -(3961, 1161, "10", "Vest-Agder"), -(3962, 1161, "07", "Vestfold"), +(3957, 1161, "16", "Sør-Trøndelag"), +(3958, 1161, "06", "Telemark"), +(3959, 1161, "19", "Troms"), +(3960, 1161, "10", "Vest-Agder"), +(3961, 1161, "07", "Vestfold"), +(3962, 1161, "46", "Vestland"), (3963, 1161, "01", "Østfold"), (3964, 1161, "22", "Jan Mayen"), (3965, 1161, "21", "Svalbard"), diff --git a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl index 3cc70ea05f20945faedb15a42c41c436035276fe..8fad146e4b9469b79a330bf8f17e8d683704e8f1 100644 --- a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl @@ -380,7 +380,7 @@ </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -388,8 +388,8 @@ </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} diff --git a/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl index 62bb7854468ec048ef6a76e17ae2722fb170c693..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl @@ -1,233 +0,0 @@ -{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} -{$event.confirm_email_text} -{/if} - -{if !empty($isOnWaitlist)} -=============================================================================== - -{ts}You have been added to the WAIT LIST for this event.{/ts} - -{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} - -=============================================================================== - -{elseif !empty($isRequireApproval)} -=============================================================================== - -{ts}Your registration has been submitted.{/ts} - -{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts} - -=============================================================================== - -{elseif $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} - -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - - -=============================================================================== - -{ts}Event Information and Location{/ts} - -=============================================================================== - -{event.title} -{event.start_date|crmDate}{if {event.end_date|boolean}}-{if '{event.end_date|crmDate:"%Y%m%d"}' === '{event.start_date|crmDate:"%Y%m%d"}'}{event.end_date|crmDate:"Time"}{else}{event.end_date}{/if}{/if} - -{if "{participant.role_id:label}" neq 'Attendee'} -{ts}Participant Role{/ts}: {participant.role_id:label} -{/if} - -{if !empty($isShowLocation)} -{event.location} -{/if}{*End of isShowLocation condition*} - -{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}} -{ts}Event Contacts:{/ts} - -{if {event.loc_block_id.phone_id.phone|boolean}} -{if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.phone_2_id.phone|boolean}} -{if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}{event.loc_block_id.phone_2_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if} -{/if} - -{if {event.loc_block_id.email_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_id.email} -{/if} -{if {event.loc_block_id.email_2_id.email|boolean}} -{ts}Email {/ts}{event.loc_block_id.email_2_id.email}{/if} -{/if} - - -{if {event.is_public|boolean}} -{capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Download iCalendar entry for this event.{/ts} {$icalFeed} -{capture assign=gCalendar}{crmURL p='civicrm/event/ical' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} -{ts}Add event to Google Calendar{/ts} {$gCalendar} -{/if} - -{if {contact.email_primary.email|boolean}} - -=============================================================================== - -{ts}Registered Email{/ts} - -=============================================================================== - -{contact.email_primary.email} -{/if} -{if {event.is_monetary|boolean}} {* This section for Paid events only.*} - -=============================================================================== - -{event.fee_label} -=============================================================================== - -{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset} - -{if $value neq 'skip'} -{if {event.is_monetary|boolean}} -{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} -{ts 1=$priceset+1}Participant %1{/ts} -{/if} -{/if} ------------------------------------------------------------------------------ - -{capture assign=ts_item}{ts}Item{/ts}{/capture} -{capture assign=ts_qty}{ts}Qty{/ts}{/capture} -{capture assign=ts_each}{ts}Each{/ts}{/capture} -{if $isShowTax && {contribution.tax_amount|boolean}} -{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture} -{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture} -{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture} -{/if} -{capture assign=ts_total}{ts}Total{/ts}{/capture} -{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount)}{ts}Total Participants{/ts}{/if}{/capture} -{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:"%10s"}{/if} - -{foreach from=$value item=line} -{if !empty($pricesetFieldsCount)}{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney|string_format:"%10s"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:"%10s"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if} -{/foreach} -{/if} -{/foreach} - -{if $isShowTax && {contribution.tax_amount|boolean}} -{if $totalAmount and $totalTaxAmount} -{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency} -{/if} - -{foreach from=$dataArray item=value key=priceset} -{if $priceset || $priceset == 0} -{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{/if} -{/foreach} -{/if} -{/if} - -{if !empty($amount) && !$lineItem} -{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label} -{/foreach} -{/if} - -{if {contribution.tax_amount|boolean}} -{ts}Total Tax Amount{/ts}: {contribution.tax_amount} -{/if} -{if {event.is_monetary|boolean}} - -{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{ts}Balance{/ts}: {contribution.balance_amount} -{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} -{/if} - -{if !empty($pricesetFieldsCount)} - {assign var="count" value= 0} - {foreach from=$lineItem item=pcount} - {assign var="lineItemCount" value=0} - {if $pcount neq 'skip'} - {foreach from=$pcount item=p_count} - {assign var="lineItemCount" value=$lineItemCount+$p_count.participant_count} - {/foreach} - {if $lineItemCount < 1} - {assign var="lineItemCount" value=1} - {/if} - {assign var="count" value=$count+$lineItemCount} - {/if} - {/foreach} - -{ts}Total Participants{/ts}: {$count} -{/if} - -{if $isPrimary && {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}} -=============================================================================== - -{$pay_later_receipt} -=============================================================================== - -{/if} - -{if {participant.register_date|boolean}} -{ts}Registration Date{/ts}: {participant.register_date} -{/if} -{if {contribution.receive_date|boolean}} -{ts}Transaction Date{/ts}: {contribution.receive_date} -{/if} -{if {contribution.financial_type_id|boolean}} -{ts}Financial Type{/ts}: {contribution.financial_type_id:label} -{/if} -{if {contribution.trxn_id|boolean}} -{ts}Transaction #{/ts}: {contribution.trxn_id} -{/if} -{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}} -{ts}Paid By{/ts}: {contribution.payment_instrument_id:label} -{/if} -{if {contribution.check_number|boolean}} -{ts}Check Number{/ts}: {contribution.check_number} -{/if} -{if !empty($billingName)} - -=============================================================================== - -{ts}Billing Name and Address{/ts} - -=============================================================================== - -{$billingName} -{$address} -{/if} - -{if !empty($credit_card_type)} -=========================================================== -{ts}Credit Card Information{/ts} - -=============================================================================== - -{$credit_card_type} -{$credit_card_number} -{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate} -{/if} -{/if} -{/if} {* End of conditional section for Paid events *} - -{if !empty($customGroup)} -{foreach from=$customGroup item=value key=customName} -============================================================================== - -{$customName} -============================================================================== - -{foreach from=$value item=v key=n} -{$n}: {$v} -{/foreach} -{/foreach} -{/if} - - diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl index 12b3be3e4e9c55e3f3dc999cc64fb6a9d5896da0..30b451ca2754dbb284f94545de54d43462370649 100644 --- a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl @@ -389,7 +389,7 @@ </tr> {/if} - {if !empty($billingName)} + {if {contribution.address_id.display|boolean}} <tr> <th {$headerStyle}> {ts}Billing Name and Address{/ts} @@ -397,8 +397,8 @@ </tr> <tr> <td colspan="2" {$valueStyle}> - {$billingName}<br/> - {$address|nl2br} + {contribution.address_id.name}<br/> + {contribution.address_id.display} </td> </tr> {/if} diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl index d9adb6fab7d234b703b34404ce7050b057f7c0d3..1eb6b86c0691d369265cb505b9f8dcf44b39252f 100644 --- a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl @@ -184,7 +184,7 @@ You were registered by: {$payer.name} {if !empty($checkNumber)} {ts}Check Number{/ts}: {$checkNumber} {/if} -{if !empty($billingName)} +{if {contribution.address_id.display|boolean}} =============================================================================== @@ -192,8 +192,8 @@ You were registered by: {$payer.name} =============================================================================== -{$billingName} -{$address} +{contribution.address_id.name} +{contribution.address_id.display} {/if} {if !empty($credit_card_type)} diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl index 00854d6e9e8cdcb8ce2d3cca97ba924ec69915e3..6d1f2200dc829e1ead6a0bee010b0962f13e06bf 100644 --- a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl @@ -530,7 +530,6 @@ </th> </tr> {foreach from=$customPost item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -539,7 +538,6 @@ {$customValue} </td> </tr> - {/if} {/foreach} {/if} diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml index e508b09ccf084f3aae23b4e5db7ed5a7b65e35f5..0cd863821af3754ccf263b31be57244c215a7cc3 100644 --- a/civicrm/xml/version.xml +++ b/civicrm/xml/version.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="iso-8859-1" ?> <version> - <version_no>5.67.3</version_no> + <version_no>5.68.0</version_no> </version>