diff --git a/assets/templates/civicrm.shortcode.php b/assets/templates/civicrm.shortcode.php index 02f45e08df0447d01c21206d6d0ccf2f03bb3bcd..c590390b01a72437875c92bd261993dddbe6abad 100644 --- a/assets/templates/civicrm.shortcode.php +++ b/assets/templates/civicrm.shortcode.php @@ -2,7 +2,7 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/civicrm.php b/civicrm.php index 1b7a3ed1f10809af9a18741938d9ac5b70738978..944433caced4631af800d3d05fe07d5e341046b4 100644 --- a/civicrm.php +++ b/civicrm.php @@ -2,11 +2,10 @@ /* Plugin Name: CiviCRM Description: CiviCRM - Growing and Sustaining Relationships -Version: 5.4.0 +Version: 5.5.1 Author: CiviCRM LLC Author URI: https://civicrm.org/ Plugin URI: https://wiki.civicrm.org/confluence/display/CRMDOC/Installing+CiviCRM+for+WordPress -GitLab Plugin URI: https://develop.tadpole.cc/plugins/civicrm License: AGPL3 Text Domain: civicrm Domain Path: /languages @@ -15,7 +14,7 @@ Domain Path: /languages /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ @@ -71,7 +70,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // set version here: when it changes, will force JS to reload -define( 'CIVICRM_PLUGIN_VERSION', '5' ); +define( 'CIVICRM_PLUGIN_VERSION', '4.7' ); // store reference to this file if (!defined('CIVICRM_PLUGIN_FILE')) { diff --git a/civicrm/CONTRIBUTORS.txt b/civicrm/CONTRIBUTORS.txt index 6af5bf8853ca5a881aa645b290a1a82f0f115456..c32000ea0158492bbfdcff5849b7f37024bea97e 100644 --- a/civicrm/CONTRIBUTORS.txt +++ b/civicrm/CONTRIBUTORS.txt @@ -1,7 +1,7 @@ The following people and organizations sponsored and/or contributed new and improved features to the project. ************************************************ -Key Contributors and Sponsors for 5.x +Code Contributors for 5.x ************************************************ CiviCRM - Coleman Watts, Tim Otten @@ -13,6 +13,7 @@ applicado Australian Greens - Seamus Lee Bastien Ho Blackfly Solutions - Alan Dixon +Calibrate - Wannes De Roy Caltha - Tomasz Pietrzkowski CEDC - Laryn Kragt Bakker Chris Burgess @@ -23,6 +24,8 @@ CompuCorp - Camilo Rodriguez, Davi Alexandre, Debarshi Bhaumik, Michael Devery, Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove Davis Media Access - Darrick Servis Electronic Frontier Foundation - Mark Burdett +eQuality Technology - Greg Rundlett +Freeform Solutions - Herb van den Dool Fuzion - Jitendra Purohit Ginkgo Street Labs - Frank Gómez Hossein Amin @@ -40,9 +43,11 @@ MJW Consulting - Matthew Wire myDropWizard - David Snopek Naomi Rosenberg Olivier Tétard +OSSeed Technologies - Madhavi Malgaonkar Oxfam Germany - Thomas Schüttler, Yuliyana Liyana Pradeep Nayak Progressive Technology Project - Jamie McClelland +Richard van Oosterhout Romain Thouvenin Squiffle Consulting - Aidan Saunders Systopia - Björn Endres diff --git a/civicrm/CRM/ACL/DAO/ACL.php b/civicrm/CRM/ACL/DAO/ACL.php index 97e9f1c151fe9ea76a49314d631e142af1a7ae96..d5b37d89f3aef94c5ed7b289e4cfe3b1f40b7445 100644 --- a/civicrm/CRM/ACL/DAO/ACL.php +++ b/civicrm/CRM/ACL/DAO/ACL.php @@ -168,6 +168,7 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { 'title' => ts('Deny ACL?'), 'description' => 'Is this ACL entry Allow (0) or Deny (1) ?', 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_acl', 'entity' => 'ACL', 'bao' => 'CRM_ACL_BAO_ACL', diff --git a/civicrm/CRM/Activity/BAO/Activity.php b/civicrm/CRM/Activity/BAO/Activity.php index 31c3c253d9328b511a0c761210ddcf5ea3791400..e7921e83cc40d91876cb563fbe7bc6feb410088e 100644 --- a/civicrm/CRM/Activity/BAO/Activity.php +++ b/civicrm/CRM/Activity/BAO/Activity.php @@ -1772,20 +1772,27 @@ LEFT JOIN civicrm_activity_contact src ON (src.activity_id = ac.activity_id AND $smsProviderParams['To'] = ''; } - $sendResult = self::sendSMSMessage( - $contactId, - $tokenText, - $smsProviderParams, - $activityID, - $sourceContactId - ); + $doNotSms = CRM_Utils_Array::value('do_not_sms', $contact, 0); - if (PEAR::isError($sendResult)) { - // Collect all of the PEAR_Error objects - $errMsgs[] = $sendResult; + if ($doNotSms) { + $errMsgs[] = PEAR::raiseError('Contact Does not accept SMS', NULL, PEAR_ERROR_RETURN); } else { - $success++; + $sendResult = self::sendSMSMessage( + $contactId, + $tokenText, + $smsProviderParams, + $activityID, + $sourceContactId + ); + + if (PEAR::isError($sendResult)) { + // Collect all of the PEAR_Error objects + $errMsgs[] = $sendResult; + } + else { + $success++; + } } } @@ -1826,9 +1833,7 @@ LEFT JOIN civicrm_activity_contact src ON (src.activity_id = ac.activity_id AND $activityID, $sourceContactID = NULL ) { - $doNotSms = TRUE; $toPhoneNumber = NULL; - if ($smsProviderParams['To']) { // If phone number is specified use it $toPhoneNumber = trim($smsProviderParams['To']); @@ -1842,13 +1847,12 @@ LEFT JOIN civicrm_activity_contact src ON (src.activity_id = ac.activity_id AND $toPhoneNumberDetails = reset($toPhoneNumbers); $toPhoneNumber = CRM_Utils_Array::value('phone', $toPhoneNumberDetails); // Contact allows to send sms - $doNotSms = FALSE; } } // make sure both phone are valid // and that the recipient wants to receive sms - if (empty($toPhoneNumber) or $doNotSms) { + if (empty($toPhoneNumber)) { return PEAR::raiseError( 'Recipient phone number is invalid or recipient does not want to receive SMS', NULL, @@ -1856,7 +1860,7 @@ LEFT JOIN civicrm_activity_contact src ON (src.activity_id = ac.activity_id AND ); } - $recipient = $smsProviderParams['To']; + $recipient = $toPhoneNumber; $smsProviderParams['contact_id'] = $toID; $smsProviderParams['parent_activity_id'] = $activityID; @@ -2528,72 +2532,70 @@ AND cl.modified_id = c.id * @return array * array of exportable Fields */ - public static function &exportableFields($name = 'Activity') { - if (!isset(self::$_exportableFields[$name])) { - self::$_exportableFields[$name] = array(); - - // TODO: ideally we should retrieve all fields from xml, in this case since activity processing is done - // my case hence we have defined fields as case_* - if ($name == 'Activity') { - $exportableFields = CRM_Activity_DAO_Activity::export(); - $exportableFields['source_contact_id'] = [ - 'title' => ts('Source Contact ID'), - 'type' => CRM_Utils_Type::T_INT, - ]; - $exportableFields['source_contact'] = array( - 'title' => ts('Source Contact'), - 'type' => CRM_Utils_Type::T_STRING, - ); + public static function exportableFields($name = 'Activity') { + self::$_exportableFields[$name] = array(); + + // TODO: ideally we should retrieve all fields from xml, in this case since activity processing is done + // my case hence we have defined fields as case_* + if ($name == 'Activity') { + $exportableFields = CRM_Activity_DAO_Activity::export(); + $exportableFields['source_contact_id'] = [ + 'title' => ts('Source Contact ID'), + 'type' => CRM_Utils_Type::T_INT, + ]; + $exportableFields['source_contact'] = array( + 'title' => ts('Source Contact'), + 'type' => CRM_Utils_Type::T_STRING, + ); - $Activityfields = array( - 'activity_type' => array( - 'title' => ts('Activity Type'), - 'name' => 'activity_type', - 'type' => CRM_Utils_Type::T_STRING, - 'searchByLabel' => TRUE, - ), - 'activity_status' => array( - 'title' => ts('Activity Status'), - 'name' => 'activity_status', - 'type' => CRM_Utils_Type::T_STRING, - 'searchByLabel' => TRUE, - ), - 'activity_priority' => array( - 'title' => ts('Activity Priority'), - 'name' => 'activity_priority', - 'type' => CRM_Utils_Type::T_STRING, - 'searchByLabel' => TRUE, - ), - ); - $fields = array_merge($Activityfields, $exportableFields); - } - else { - // Set title to activity fields. - $fields = array( - 'case_activity_subject' => array('title' => ts('Activity Subject'), 'type' => CRM_Utils_Type::T_STRING), - 'case_source_contact_id' => array('title' => ts('Activity Reporter'), 'type' => CRM_Utils_Type::T_STRING), - 'case_recent_activity_date' => array('title' => ts('Activity Actual Date'), 'type' => CRM_Utils_Type::T_DATE), - 'case_scheduled_activity_date' => array( - 'title' => ts('Activity Scheduled Date'), - 'type' => CRM_Utils_Type::T_DATE, - ), - 'case_recent_activity_type' => array('title' => ts('Activity Type'), 'type' => CRM_Utils_Type::T_STRING), - 'case_activity_status' => array('title' => ts('Activity Status'), 'type' => CRM_Utils_Type::T_STRING), - 'case_activity_duration' => array('title' => ts('Activity Duration'), 'type' => CRM_Utils_Type::T_INT), - 'case_activity_medium_id' => array('title' => ts('Activity Medium'), 'type' => CRM_Utils_Type::T_INT), - 'case_activity_details' => array('title' => ts('Activity Details'), 'type' => CRM_Utils_Type::T_TEXT), - 'case_activity_is_auto' => array( - 'title' => ts('Activity Auto-generated?'), - 'type' => CRM_Utils_Type::T_BOOLEAN, - ), - ); - } + $Activityfields = array( + 'activity_type' => array( + 'title' => ts('Activity Type'), + 'name' => 'activity_type', + 'type' => CRM_Utils_Type::T_STRING, + 'searchByLabel' => TRUE, + ), + 'activity_status' => array( + 'title' => ts('Activity Status'), + 'name' => 'activity_status', + 'type' => CRM_Utils_Type::T_STRING, + 'searchByLabel' => TRUE, + ), + 'activity_priority' => array( + 'title' => ts('Activity Priority'), + 'name' => 'activity_priority', + 'type' => CRM_Utils_Type::T_STRING, + 'searchByLabel' => TRUE, + ), + ); + $fields = array_merge($Activityfields, $exportableFields); + } + else { + // Set title to activity fields. + $fields = array( + 'case_activity_subject' => array('title' => ts('Activity Subject'), 'type' => CRM_Utils_Type::T_STRING), + 'case_source_contact_id' => array('title' => ts('Activity Reporter'), 'type' => CRM_Utils_Type::T_STRING), + 'case_recent_activity_date' => array('title' => ts('Activity Actual Date'), 'type' => CRM_Utils_Type::T_DATE), + 'case_scheduled_activity_date' => array( + 'title' => ts('Activity Scheduled Date'), + 'type' => CRM_Utils_Type::T_DATE, + ), + 'case_recent_activity_type' => array('title' => ts('Activity Type'), 'type' => CRM_Utils_Type::T_STRING), + 'case_activity_status' => array('title' => ts('Activity Status'), 'type' => CRM_Utils_Type::T_STRING), + 'case_activity_duration' => array('title' => ts('Activity Duration'), 'type' => CRM_Utils_Type::T_INT), + 'case_activity_medium_id' => array('title' => ts('Activity Medium'), 'type' => CRM_Utils_Type::T_INT), + 'case_activity_details' => array('title' => ts('Activity Details'), 'type' => CRM_Utils_Type::T_TEXT), + 'case_activity_is_auto' => array( + 'title' => ts('Activity Auto-generated?'), + 'type' => CRM_Utils_Type::T_BOOLEAN, + ), + ); + } - // add custom data for case activities - $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Activity')); + // add custom data for case activities + $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Activity')); - self::$_exportableFields[$name] = $fields; - } + self::$_exportableFields[$name] = $fields; return self::$_exportableFields[$name]; } @@ -2833,6 +2835,22 @@ INNER JOIN civicrm_option_group grp ON ( grp.id = val.option_group_id AND grp.n return $allow; } + /** + * Checks if user has permissions to edit inbound e-mails, either bsic info + * or both basic information and content. + * + * @return bool + */ + public function checkEditInboundEmailsPermissions() { + if (CRM_Core_Permission::check('edit inbound email basic information') + || CRM_Core_Permission::check('edit inbound email basic information and content') + ) { + return TRUE; + } + + return FALSE; + } + /** * Wrapper for ajax activity selector. * diff --git a/civicrm/CRM/Activity/BAO/Query.php b/civicrm/CRM/Activity/BAO/Query.php index ddfb01aedd1d7c9bbaac3ff17d9f208e6e55a790..a450337ee2d42c5890303bd6c72b5fe9a7ea162b 100644 --- a/civicrm/CRM/Activity/BAO/Query.php +++ b/civicrm/CRM/Activity/BAO/Query.php @@ -413,11 +413,16 @@ class CRM_Activity_BAO_Query { break; case 'source_contact': - $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); - $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); + $sourceID = CRM_Core_PseudoConstant::getKey( + 'CRM_Activity_BAO_ActivityContact', + 'record_type_id', + 'Activity Source' + ); $from = " - INNER JOIN civicrm_contact source_contact ON - (civicrm_activity_contact.contact_id = source_contact.id) AND civicrm_activity_contact.record_type_id = {$sourceID}"; + LEFT JOIN civicrm_activity_contact source_activity + ON (source_activity.activity_id = civicrm_activity_contact.activity_id + AND source_activity.record_type_id = {$sourceID}) + LEFT JOIN civicrm_contact source_contact ON (source_activity.contact_id = source_contact.id)"; break; case 'parent_id': diff --git a/civicrm/CRM/Activity/DAO/Activity.php b/civicrm/CRM/Activity/DAO/Activity.php index c10f7d5b8816e525732523c336b44269c1df1941..bf8a0be6140632201ec82772916c52058146de32 100644 --- a/civicrm/CRM/Activity/DAO/Activity.php +++ b/civicrm/CRM/Activity/DAO/Activity.php @@ -475,6 +475,7 @@ class CRM_Activity_DAO_Activity extends CRM_Core_DAO { 'headerPattern' => '/(is.)?test(.activity)?/i', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_activity', 'entity' => 'Activity', 'bao' => 'CRM_Activity_BAO_Activity', @@ -505,6 +506,7 @@ class CRM_Activity_DAO_Activity extends CRM_Core_DAO { 'name' => 'is_auto', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Auto'), + 'default' => '0', 'table_name' => 'civicrm_activity', 'entity' => 'Activity', 'bao' => 'CRM_Activity_BAO_Activity', @@ -575,6 +577,7 @@ class CRM_Activity_DAO_Activity extends CRM_Core_DAO { 'headerPattern' => '/(activity.)?(trash|deleted)/i', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_activity', 'entity' => 'Activity', 'bao' => 'CRM_Activity_BAO_Activity', @@ -651,6 +654,7 @@ class CRM_Activity_DAO_Activity extends CRM_Core_DAO { 'headerPattern' => '/(activity.)?(star|favorite)/i', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_activity', 'entity' => 'Activity', 'bao' => 'CRM_Activity_BAO_Activity', diff --git a/civicrm/CRM/Activity/Form/Activity.php b/civicrm/CRM/Activity/Form/Activity.php index 5f78cbd9f1be8d4d9bd530c195c6f0c9d453d5d5..71d6ff01956b84be776aed84a30cae32536a688d 100644 --- a/civicrm/CRM/Activity/Form/Activity.php +++ b/civicrm/CRM/Activity/Form/Activity.php @@ -308,6 +308,7 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task { CRM_Activity_BAO_Activity::checkPermission($this->_activityId, CRM_Core_Action::UPDATE) ) { $this->assign('permission', 'edit'); + $this->assign('allow_edit_inbound_emails', CRM_Activity_BAO_Activity::checkEditInboundEmailsPermissions()); } if (!$this->_activityTypeId && $this->_activityId) { @@ -516,10 +517,20 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task { $params = array('id' => $this->_activityId); CRM_Activity_BAO_Activity::retrieve($params, $this->_values); } + $this->set('values', $this->_values); } if ($this->_action & CRM_Core_Action::UPDATE) { + // We filter out alternatives, in case this is a stored e-mail, before sending to front-end + $this->_values['details'] = CRM_Utils_String::stripAlternatives($this->_values['details']) ?: ''; + + if ($this->_activityTypeName === 'Inbound Email' && + !CRM_Core_Permission::check('edit inbound email basic information and content') + ) { + $this->_fields['details']['type'] = 'static'; + } + CRM_Core_Form_RecurringEntity::preProcess('civicrm_activity'); } diff --git a/civicrm/CRM/Activity/Page/Tab.php b/civicrm/CRM/Activity/Page/Tab.php index 8a4cd70d4ec053504f092cc7b5a792bbde232c5b..305c9dd8b6d4afbded841f7411c725145228e65e 100644 --- a/civicrm/CRM/Activity/Page/Tab.php +++ b/civicrm/CRM/Activity/Page/Tab.php @@ -131,6 +131,7 @@ class CRM_Activity_Page_Tab extends CRM_Core_Page { $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'browse'); $this->assign('action', $this->_action); + $this->assign('allow_edit_inbound_emails', CRM_Activity_BAO_Activity::checkEditInboundEmailsPermissions()); // also create the form element for the activity links box $controller = new CRM_Core_Controller_Simple( diff --git a/civicrm/CRM/Activity/Selector/Activity.php b/civicrm/CRM/Activity/Selector/Activity.php index e7f2541bed8ed804a295ea8741bee5785f97c3ca..8182c6409cf52f491db92bf17f3e633e6c72c1e6 100644 --- a/civicrm/CRM/Activity/Selector/Activity.php +++ b/civicrm/CRM/Activity/Selector/Activity.php @@ -181,6 +181,13 @@ class CRM_Activity_Selector_Activity extends CRM_Core_Selector_Base implements C case 'Inbound Email': $url = 'civicrm/contact/view/activity'; $qsView = "atype={$activityTypeId}&action=view&reset=1&id=%%id%%&cid=%%cid%%&context=%%cxt%%{$extraParams}"; + + if (CRM_Core_Permission::check('edit inbound email basic information') + || CRM_Core_Permission::check('edit inbound email basic information and content') + ) { + $showDelete = $showUpdate = TRUE; + $qsUpdate = "atype={$activityTypeId}&action=update&reset=1&id=%%id%%&cid=%%cid%%&context=%%cxt%%{$extraParams}"; + } break; case 'Open Case': diff --git a/civicrm/CRM/Admin/Form/OptionGroup.php b/civicrm/CRM/Admin/Form/OptionGroup.php index c1216fcd83c2294b8d88f289009b8114161ac15b..0b76228f1c1c9a8bbd47f389fa027de8f11bbcee 100644 --- a/civicrm/CRM/Admin/Form/OptionGroup.php +++ b/civicrm/CRM/Admin/Form/OptionGroup.php @@ -78,7 +78,7 @@ class CRM_Admin_Form_OptionGroup extends CRM_Admin_Form { CRM_Core_DAO::getAttribute('CRM_Core_DAO_OptionGroup', 'description') ); - $this->addSelect('data_type', array('options' => CRM_Utils_Type::dataTypes()), TRUE); + $this->addSelect('data_type', array('options' => CRM_Utils_Type::dataTypes()), empty($this->_values['is_reserved'])); $element = $this->add('checkbox', 'is_active', ts('Enabled?')); if ($this->_action & CRM_Core_Action::UPDATE) { @@ -96,8 +96,12 @@ class CRM_Admin_Form_OptionGroup extends CRM_Admin_Form { $element->freeze(); } } + + $this->add('checkbox', 'is_reserved', ts('Reserved?')); + $this->freeze('is_reserved'); + if (!empty($this->_values['is_reserved'])) { - $this->freeze(array('name', 'is_active')); + $this->freeze(array('name', 'is_active', 'data_type')); } } @@ -118,12 +122,13 @@ class CRM_Admin_Form_OptionGroup extends CRM_Admin_Form { // store the submitted values in an array $params = $this->exportValues(); - // If we are adding option group via UI it should not be marked reserved. - if (!isset($params['is_reserved'])) { - $params['is_reserved'] = 0; + if ($this->_action & CRM_Core_Action::ADD) { + // If we are adding option group via UI it should not be marked reserved. + if (!isset($params['is_reserved'])) { + $params['is_reserved'] = 0; + } } - - if ($this->_action & CRM_Core_Action::UPDATE) { + elseif ($this->_action & CRM_Core_Action::UPDATE) { $params['id'] = $this->_id; } diff --git a/civicrm/CRM/Admin/Form/Options.php b/civicrm/CRM/Admin/Form/Options.php index f68718d881b5886a5e55b02c36c8232390f1170e..fd4aa9dfa18a1964884db831b91ca20f78e28e01 100644 --- a/civicrm/CRM/Admin/Form/Options.php +++ b/civicrm/CRM/Admin/Form/Options.php @@ -464,9 +464,9 @@ class CRM_Admin_Form_Options extends CRM_Admin_Form { $params['reset_default_for'] = array('filter' => "0, " . $params['filter']); } - //make sure we should has to have space, CRM-6977 + //make sure we only have a single space, CRM-6977 and dev/mail/15 if ($this->_gName == 'from_email_address') { - $params['label'] = str_replace('"<', '" <', $params['label']); + $params['label'] = $this->sanitizeFromEmailAddress($params['label']); } } @@ -484,20 +484,7 @@ class CRM_Admin_Form_Options extends CRM_Admin_Form { $params['color'] = 'null'; } - $groupParams = array('name' => ($this->_gName)); - $optionValue = CRM_Core_OptionValue::addOptionValue($params, $groupParams, $this->_action, $this->_id); - - // CRM-11516 - if (!empty($params['financial_account_id'])) { - $relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Asset Account is' ")); - $params = array( - 'entity_table' => 'civicrm_option_value', - 'entity_id' => $optionValue->id, - 'account_relationship' => $relationTypeId, - 'financial_account_id' => $params['financial_account_id'], - ); - CRM_Financial_BAO_FinancialTypeAccount::add($params); - } + $optionValue = CRM_Core_OptionValue::addOptionValue($params, $this->_gName, $this->_action, $this->_id); CRM_Core_Session::setStatus(ts('The %1 \'%2\' has been saved.', array( 1 => $this->_gLabel, @@ -508,4 +495,9 @@ class CRM_Admin_Form_Options extends CRM_Admin_Form { } } + public function sanitizeFromEmailAddress($email) { + preg_match("/^\"(.*)\" *<([^@>]*@[^@>]*)>$/", $email, $parts); + return "\"{$parts[1]}\" <$parts[2]>"; + } + } diff --git a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php index 5f0cb2c0246abc5e0f4d3da715b4206176dd1b59..31ef53a873c162057187735ac1141d951b8e8ca7 100644 --- a/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php +++ b/civicrm/CRM/Admin/Form/Setting/Miscellaneous.php @@ -49,6 +49,7 @@ class CRM_Admin_Form_Setting_Miscellaneous extends CRM_Admin_Form_Setting { 'recaptchaOptions' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'recaptchaPublicKey' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'recaptchaPrivateKey' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, + 'forceRecaptcha' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'wkhtmltopdfPath' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'recentItemsMaxCount' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'recentItemsProviders' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, diff --git a/civicrm/CRM/Admin/Page/AJAX.php b/civicrm/CRM/Admin/Page/AJAX.php index 4854ffb9df7a177db199334f45c71a4ccb016772..1fef6d99e87f21286b99f00f552958e9c04f9b64 100644 --- a/civicrm/CRM/Admin/Page/AJAX.php +++ b/civicrm/CRM/Admin/Page/AJAX.php @@ -123,7 +123,7 @@ class CRM_Admin_Page_AJAX { $ret['content'] = ts('Are you sure you want to disable this CiviCRM Profile field?'); break; - case 'CRM_Contribute_BAO_ManagePremiums': + case 'CRM_Contribute_BAO_Product': $ret['content'] = ts('Are you sure you want to disable this premium? This action will remove the premium from any contribution pages that currently offer it. However it will not delete the premium record - so you can re-enable it and add it back to your contribution page(s) at a later time.'); break; @@ -265,8 +265,8 @@ class CRM_Admin_Page_AJAX { $recipientMapping = array_combine(array_keys($entityRecipientLabels), array_keys($entityRecipientLabels)); $output = array( - 'sel4' => CRM_Utils_Array::toKeyValueRows($dateFieldLabels), - 'sel5' => CRM_Utils_Array::toKeyValueRows($entityRecipientLabels), + 'sel4' => CRM_Utils_Array::makeNonAssociative($dateFieldLabels), + 'sel5' => CRM_Utils_Array::makeNonAssociative($entityRecipientLabels), 'recipientMapping' => $recipientMapping, ); @@ -291,7 +291,7 @@ class CRM_Admin_Page_AJAX { )); CRM_Utils_JSON::output(array( - 'recipients' => CRM_Utils_Array::toKeyValueRows(CRM_Core_BAO_ActionSchedule::getRecipientListing($mappingID, $recipientType)), + 'recipients' => CRM_Utils_Array::makeNonAssociative(CRM_Core_BAO_ActionSchedule::getRecipientListing($mappingID, $recipientType)), )); } diff --git a/civicrm/CRM/Campaign/DAO/Survey.php b/civicrm/CRM/Campaign/DAO/Survey.php index ebb2c5275acfe3be6985f400f7a208074d77017e..935b3dda570ce036c513ebdb672e7b512d278bc5 100644 --- a/civicrm/CRM/Campaign/DAO/Survey.php +++ b/civicrm/CRM/Campaign/DAO/Survey.php @@ -349,6 +349,7 @@ class CRM_Campaign_DAO_Survey extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Default Survey'), 'description' => 'Is this default survey?', + 'default' => '0', 'table_name' => 'civicrm_survey', 'entity' => 'Survey', 'bao' => 'CRM_Campaign_BAO_Survey', @@ -412,6 +413,7 @@ class CRM_Campaign_DAO_Survey extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('No Email Verification'), 'description' => 'Bypass the email verification.', + 'default' => '0', 'table_name' => 'civicrm_survey', 'entity' => 'Survey', 'bao' => 'CRM_Campaign_BAO_Survey', diff --git a/civicrm/CRM/Campaign/Form/SurveyType.php b/civicrm/CRM/Campaign/Form/SurveyType.php index cad02eabe6b0922f5d24a083400d354e905422a1..0cce9e4b358f8a5378c1037a0952625e678f308d 100644 --- a/civicrm/CRM/Campaign/Form/SurveyType.php +++ b/civicrm/CRM/Campaign/Form/SurveyType.php @@ -156,9 +156,8 @@ class CRM_Campaign_Form_SurveyType extends CRM_Admin_Form { $params['filter'] = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionValue', $this->_id, 'filter', 'id'); } - $groupParams = array('name' => ($this->_gName)); $params['component_id'] = CRM_Core_Component::getComponentID('CiviCampaign'); - $optionValue = CRM_Core_OptionValue::addOptionValue($params, $groupParams, $this->_action, $this->_id); + $optionValue = CRM_Core_OptionValue::addOptionValue($params, $this->_gName, $this->_action, $this->_id); CRM_Core_Session::setStatus(ts('The Survey type \'%1\' has been saved.', array(1 => $optionValue->label)), ts('Saved'), 'success'); } diff --git a/civicrm/CRM/Campaign/Form/Task.php b/civicrm/CRM/Campaign/Form/Task.php index a7e464ad83a7b6d7547cabed44f25b618e29516b..5ad1593f13d4f13c4372f52fb5b23c2060590979 100644 --- a/civicrm/CRM/Campaign/Form/Task.php +++ b/civicrm/CRM/Campaign/Form/Task.php @@ -65,7 +65,7 @@ class CRM_Campaign_Form_Task extends CRM_Core_Form_Task { else { $qfKey = CRM_Utils_Request::retrieve('qfKey', 'String', $this); $cacheKey = "civicrm search {$qfKey}"; - $allCids = CRM_Core_BAO_PrevNextCache::getSelection($cacheKey, "getall"); + $allCids = Civi::service('prevnext')->getSelection($cacheKey, "getall"); $ids = array_keys($allCids[$cacheKey]); $this->assign('totalSelectedVoters', count($ids)); } diff --git a/civicrm/CRM/Campaign/Selector/Search.php b/civicrm/CRM/Campaign/Selector/Search.php index 6f7d3fccab94728bb7ef983e2af516e82d35a514..28c2b15b6d7961c6899021582a5765012b16e5fc 100644 --- a/civicrm/CRM/Campaign/Selector/Search.php +++ b/civicrm/CRM/Campaign/Selector/Search.php @@ -271,7 +271,7 @@ class CRM_Campaign_Selector_Search extends CRM_Core_Selector_Base implements CRM if (!$crmPID) { $cacheKey = "civicrm search {$this->_key}"; - CRM_Core_BAO_PrevNextCache::deleteItem(NULL, $cacheKey, 'civicrm_contact'); + Civi::service('prevnext')->deleteItem(NULL, $cacheKey, 'civicrm_contact'); $sql = $this->_query->searchQuery(0, 0, $sort, FALSE, FALSE, @@ -281,18 +281,19 @@ class CRM_Campaign_Selector_Search extends CRM_Core_Selector_Base implements CRM $this->_campaignFromClause ); list($select, $from) = explode(' FROM ', $sql); - $insertSQL = " -INSERT INTO civicrm_prevnext_cache ( entity_table, entity_id1, entity_id2, cacheKey, data ) -SELECT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', contact_a.display_name + $selectSQL = " + SELECT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', contact_a.display_name FROM {$from} "; - $errorScope = CRM_Core_TemporaryErrorScope::ignoreException(); - $result = CRM_Core_DAO::executeQuery($insertSQL); - unset($errorScope); - if (is_a($result, 'DB_Error')) { + try { + Civi::service('prevnext')->fillWithSql($cacheKey, $selectSQL); + } + catch (CRM_Core_Exception $e) { + // Heavy handed, no? Seems like this merits an explanation. return; } + // also record an entry in the cache key table, so we can delete it periodically CRM_Core_BAO_Cache::setItem($cacheKey, 'CiviCRM Search PrevNextCache', $cacheKey); } diff --git a/civicrm/CRM/Case/BAO/Case.php b/civicrm/CRM/Case/BAO/Case.php index 0fa87b459e92f0910c38cfc3f885a539934ffea0..0d5f1d10c4277a1961579e630248970dff16ed40 100644 --- a/civicrm/CRM/Case/BAO/Case.php +++ b/civicrm/CRM/Case/BAO/Case.php @@ -684,7 +684,7 @@ LEFT JOIN civicrm_option_group aog ON aog.name='activity_type' $casesList[$key]['activity_list'] = sprintf('<a title="%s" class="crm-expand-row" href="%s"></a>', ts('Activities'), - CRM_Utils_System::url('civicrm/case/details', array('caseid' => $case['case_id'], 'cid' => $case['contact_id'], 'type' => $type)) + CRM_Utils_System::url('civicrm/case/details', array('caseId' => $case['case_id'], 'cid' => $case['contact_id'], 'type' => $type)) ); $phone = empty($case['phone']) ? '' : '<br /><span class="description">' . $case['phone'] . '</span>'; @@ -725,7 +725,7 @@ LEFT JOIN civicrm_option_group aog ON aog.name='activity_type' } if (self::checkPermission($actId, 'edit', $case['activity_type_id'], $userID)) { $casesList[$key]['date'] .= sprintf('<a class="action-item crm-hover-button" href="%s" title="%s"><i class="crm-i fa-pencil"></i></a>', - CRM_Utils_System::url('civicrm/case/activity', array('reset' => 1, 'cid' => $case['contact_id'], 'caseid' => $case['case_id'], 'action' => 'update')), + CRM_Utils_System::url('civicrm/case/activity', array('reset' => 1, 'cid' => $case['contact_id'], 'caseid' => $case['case_id'], 'action' => 'update', 'id' => $actId)), ts('Edit activity') ); } @@ -1590,7 +1590,7 @@ SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS c AND civicrm_case.id IN( {$caseID}) AND civicrm_case.is_deleted = {$cases['case_deleted']}"; - $query = self::getCaseActivityQuery($type, $userID, $condition, $cases['case_deleted']); + $query = self::getCaseActivityQuery($type, $userID, $condition); $res = CRM_Core_DAO::executeQuery($query); @@ -2745,6 +2745,12 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')'; //allow edit operation. $allowEditNames = array('Open Case'); + if (CRM_Core_Permission::check('edit inbound email basic information') || + CRM_Core_Permission::check('edit inbound email basic information and content') + ) { + $allowEditNames[] = 'Inbound Email'; + } + // do not allow File on Case $doNotFileNames = array( 'Open Case', diff --git a/civicrm/CRM/Case/DAO/Case.php b/civicrm/CRM/Case/DAO/Case.php index 514544ec04c340c03dfd71e12f1a2c4cb60fef2d..b881d0400649e2fb07033d8e9cb931b0b169044d 100644 --- a/civicrm/CRM/Case/DAO/Case.php +++ b/civicrm/CRM/Case/DAO/Case.php @@ -271,6 +271,7 @@ class CRM_Case_DAO_Case extends CRM_Core_DAO { 'headerPattern' => '', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_case', 'entity' => 'Case', 'bao' => 'CRM_Case_BAO_Case', diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php index f222e19594a8f976f2e5586bcbbab2f45aa45af4..9e4488208c0e76eff1f000620f945a3ee5d25eec 100644 --- a/civicrm/CRM/Contact/BAO/Contact.php +++ b/civicrm/CRM/Contact/BAO/Contact.php @@ -1013,7 +1013,10 @@ WHERE civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer'); CRM_Utils_Recent::delContact($id); self::updateContactCache($id, empty($restore)); - // delete any dupe cache entry + // delete any prevnext/dupe cache entry + // These two calls are redundant in default deployments, but they're + // meaningful if "prevnext" is memory-backed. + Civi::service('prevnext')->deleteItem($id); CRM_Core_BAO_PrevNextCache::deleteItem($id); $transaction->commit(); diff --git a/civicrm/CRM/Contact/BAO/Contact/Permission.php b/civicrm/CRM/Contact/BAO/Contact/Permission.php index 09b8925ede78a3255e54b503a77629f68f06f8f1..4896b03ad8bf3e5896716427bfae1f37cf188c2a 100644 --- a/civicrm/CRM/Contact/BAO/Contact/Permission.php +++ b/civicrm/CRM/Contact/BAO/Contact/Permission.php @@ -116,7 +116,7 @@ WHERE contact_id IN ({$contact_id_list}) if (count($result_set) < count($contact_ids)) { $rejected_contacts = array_diff_key($contact_ids, $result_set); // @todo consider storing these to the acl cache for next time, since we have fetched. - $allowed_by_relationship = self::relationshipList($rejected_contacts); + $allowed_by_relationship = self::relationshipList($rejected_contacts, $type); foreach ($allowed_by_relationship as $contact_id) { $result_set[(int) $contact_id] = TRUE; } @@ -161,7 +161,7 @@ WHERE contact_id IN ({$contact_id_list}) } // check permission based on relationship, CRM-2963 - if (self::relationshipList(array($id))) { + if (self::relationshipList(array($id), $type)) { return TRUE; } @@ -330,10 +330,13 @@ AND ac.user_id IS NULL * @param array $contact_ids * List of contact IDs to be filtered * + * @param int $type + * access type CRM_Core_Permission::VIEW or CRM_Core_Permission::EDIT + * * @return array * List of contact IDs that the user has permissions for */ - public static function relationshipList($contact_ids) { + public static function relationshipList($contact_ids, $type) { $result_set = array(); // no processing empty lists (avoid SQL errors as well) @@ -351,9 +354,17 @@ AND ac.user_id IS NULL $queries = array(); $contact_id_list = implode(',', $contact_ids); - // add a select statement for each direection + // add a select statement for each direction $directions = array(array('from' => 'a', 'to' => 'b'), array('from' => 'b', 'to' => 'a')); + // CRM_Core_Permission::VIEW is satisfied by either CRM_Contact_BAO_Relationship::VIEW or CRM_Contact_BAO_Relationship::EDIT + if ($type == CRM_Core_Permission::VIEW) { + $is_perm_condition = ' IN ( ' . CRM_Contact_BAO_Relationship::EDIT . ' , ' . CRM_Contact_BAO_Relationship::VIEW . ' ) '; + } + else { + $is_perm_condition = ' = ' . CRM_Contact_BAO_Relationship::EDIT; + } + // NORMAL/SINGLE DEGREE RELATIONSHIPS foreach ($directions as $direction) { $user_id_column = "contact_id_{$direction['from']}"; @@ -373,7 +384,7 @@ SELECT civicrm_relationship.{$contact_id_column} AS contact_id WHERE civicrm_relationship.{$user_id_column} = {$contactID} AND civicrm_relationship.{$contact_id_column} IN ({$contact_id_list}) AND civicrm_relationship.is_active = 1 - AND civicrm_relationship.is_permission_{$direction['from']}_{$direction['to']} = 1 + AND civicrm_relationship.is_permission_{$direction['from']}_{$direction['to']} {$is_perm_condition} $AND_CAN_ACCESS_DELETED"; } @@ -394,14 +405,14 @@ SELECT civicrm_relationship.{$contact_id_column} AS contact_id $queries[] = " SELECT second_degree_relationship.contact_id_{$second_direction['to']} AS contact_id FROM civicrm_relationship first_degree_relationship - LEFT JOIN civicrm_relationship second_degree_relationship ON first_degree_relationship.contact_id_{$first_direction['to']} = second_degree_relationship.contact_id_{$first_direction['from']} + LEFT JOIN civicrm_relationship second_degree_relationship ON first_degree_relationship.contact_id_{$first_direction['to']} = second_degree_relationship.contact_id_{$second_direction['from']} {$LEFT_JOIN_DELETED} WHERE first_degree_relationship.contact_id_{$first_direction['from']} = {$contactID} AND second_degree_relationship.contact_id_{$second_direction['to']} IN ({$contact_id_list}) AND first_degree_relationship.is_active = 1 - AND first_degree_relationship.is_permission_{$first_direction['from']}_{$first_direction['to']} = 1 + AND first_degree_relationship.is_permission_{$first_direction['from']}_{$first_direction['to']} {$is_perm_condition} AND second_degree_relationship.is_active = 1 - AND second_degree_relationship.is_permission_{$second_direction['from']}_{$second_direction['to']} = 1 + AND second_degree_relationship.is_permission_{$second_direction['from']}_{$second_direction['to']} {$is_perm_condition} $AND_CAN_ACCESS_DELETED"; } } diff --git a/civicrm/CRM/Contact/BAO/Contact/Utils.php b/civicrm/CRM/Contact/BAO/Contact/Utils.php index f3b391362afdd66216f7449110c66723b74003c1..2cee6e99dcb3b9e584bc7fcdb25c47f481157aa2 100644 --- a/civicrm/CRM/Contact/BAO/Contact/Utils.php +++ b/civicrm/CRM/Contact/BAO/Contact/Utils.php @@ -917,6 +917,9 @@ INNER JOIN civicrm_contact contact_target ON ( contact_target.id = act.contact_i return; } if ($isEmptyPrevNextTable) { + // These two calls are redundant in default deployments, but they're + // meaningful if "prevnext" is memory-backed. + Civi::service('prevnext')->deleteItem(); CRM_Core_BAO_PrevNextCache::deleteItem(); } // clear acl cache if any. diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php index eda7792aa7d315e4c17307b001562a4b3acf2dd9..ef6d06646deb5622d824ebdb26a8bf499369d1f9 100644 --- a/civicrm/CRM/Contact/BAO/Query.php +++ b/civicrm/CRM/Contact/BAO/Query.php @@ -1612,7 +1612,7 @@ class CRM_Contact_BAO_Query { $contactType = array(); $subType = array(); foreach ((array) $values as $key => $type) { - $types = explode('__', is_numeric($type) ? $key : $type); + $types = explode('__', is_numeric($type) ? $key : $type, 2); $contactType[$types[0]] = $types[0]; // Add sub-type if specified if (!empty($types[1])) { @@ -2341,7 +2341,7 @@ class CRM_Contact_BAO_Query { $this->_where[$grouping][] = CRM_Core_DAO::createSQLFilter($fieldName, $value, $type); } else { - if (!strpos($op, 'IN')) { + if (!self::caseImportant($op)) { $value = $strtolower($value); } if ($wildcard) { @@ -3558,14 +3558,13 @@ WHERE $smartGroupClause $n = trim($value); if ($n) { - $value = strtolower($n); if (strpos($value, '%') === FALSE) { // only add wild card if not there $value = "%{$value}%"; } $op = 'LIKE'; // LOWER roughly translates to 'hurt my database without deriving any benefit' See CRM-19811. - $this->_where[$grouping][] = self::buildClause('LOWER(civicrm_address.street_address)', $op, $value, 'String'); + $this->_where[$grouping][] = self::buildClause('civicrm_address.street_address', $op, $value, 'String'); $this->_qill[$grouping][] = ts('Street') . " $op '$n'"; } else { @@ -4042,7 +4041,6 @@ WHERE $smartGroupClause $relationType = $this->getWhereValues('relation_type_id', $grouping); $targetName = $this->getWhereValues('relation_target_name', $grouping); $relStatus = $this->getWhereValues('relation_status', $grouping); - $relPermission = $this->getWhereValues('relation_permission', $grouping); $targetGroup = $this->getWhereValues('relation_target_group', $grouping); $nameClause = $name = NULL; @@ -4188,21 +4186,7 @@ civicrm_relationship.start_date > {$today} } $where[$grouping][] = "(contact_b.is_deleted = {$onlyDeleted})"; - //check for permissioned, non-permissioned and all permissioned relations - if ($relPermission[2] == 1) { - $where[$grouping][] = "( -civicrm_relationship.is_permission_a_b = 1 -)"; - $this->_qill[$grouping][] = ts('Relationship - Permissioned'); - } - elseif ($relPermission[2] == 2) { - //non-allowed permission relationship. - $where[$grouping][] = "( -civicrm_relationship.is_permission_a_b = 0 -)"; - $this->_qill[$grouping][] = ts('Relationship - Non-permissioned'); - } - + $this->addRelationshipPermissionClauses($grouping, $where); $this->addRelationshipDateClauses($grouping, $where); $this->addRelationshipActivePeriodClauses($grouping, $where); if (!empty($relTypes)) { @@ -4235,6 +4219,27 @@ civicrm_relationship.is_permission_a_b = 0 } } + public function addRelationshipPermissionClauses($grouping, &$where) { + $relPermission = $this->getWhereValues('relation_permission', $grouping); + if ($relPermission) { + if (!is_array($relPermission[2])) { + // this form value was scalar in previous versions of Civi + $relPermission[2] = array($relPermission[2]); + } + $where[$grouping][] = "(civicrm_relationship.is_permission_a_b IN (" . implode(",", $relPermission[2]) . "))"; + + $allRelationshipPermissions = CRM_Contact_BAO_Relationship::buildOptions('is_permission_a_b'); + $relQill = ''; + foreach ($relPermission[2] as $rel) { + if (!empty($relQill)) { + $relQill .= ' OR '; + } + $relQill .= ts($allRelationshipPermissions[$rel]); + } + $this->_qill[$grouping][] = ts('Permissioned Relationships') . ' - ' . $relQill; + } + } + /** * Add start & end date criteria in * @param string $grouping @@ -5669,6 +5674,9 @@ SELECT COUNT( conts.total_amount ) as cancel_count, $clause = ($dataType == 'Date') ? " $field IS NOT NULL " : " (NULLIF($field, '') IS NOT NULL) "; return $clause; + case 'RLIKE': + return " {$clause} BINARY '{$value}' "; + case 'IN': case 'NOT IN': // I feel like this would be escaped properly if passed through $queryString = CRM_Core_DAO::createSqlFilter. diff --git a/civicrm/CRM/Contact/BAO/Relationship.php b/civicrm/CRM/Contact/BAO/Relationship.php index 67c95393882e83f44754e9de1a7e7b6f3258b6c4..df64ddcbba8d435f6435ec401c5e185a54ef5f14 100644 --- a/civicrm/CRM/Contact/BAO/Relationship.php +++ b/civicrm/CRM/Contact/BAO/Relationship.php @@ -37,6 +37,12 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship { */ const ALL = 0, PAST = 1, DISABLED = 2, CURRENT = 4, INACTIVE = 8; + /** + * Constants for is_permission fields. + * Note: the slightly non-obvious ordering is due to history... + */ + const NONE = 0, EDIT = 1, VIEW = 2; + /** * Create function - use the API instead. * @@ -470,8 +476,8 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship { public static function getdefaults() { return array( 'is_active' => 0, - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, + 'is_permission_a_b' => self::NONE, + 'is_permission_b_a' => self::NONE, 'description' => '', 'start_date' => 'NULL', 'case_id' => NULL, @@ -656,7 +662,7 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship { $relTypes = CRM_Utils_Array::index(array('name_a_b'), CRM_Core_PseudoConstant::relationshipType('name')); if ( (isset($relTypes['Employee of']) && $relationship->relationship_type_id == $relTypes['Employee of']['id']) || - (isset ($relTypes['Household Member of']) && $relationship->relationship_type_id == $relTypes['Household Member of']['id']) + (isset($relTypes['Household Member of']) && $relationship->relationship_type_id == $relTypes['Household Member of']['id']) ) { $sharedContact = new CRM_Contact_DAO_Contact(); $sharedContact->id = $relationship->contact_id_a; @@ -1715,10 +1721,10 @@ SELECT relationship_type_id, relationship_direction $membershipValues['skipStatusCal'] = TRUE; } foreach (array( - 'join_date', - 'start_date', - 'end_date', - ) as $dateField) { + 'join_date', + 'start_date', + 'end_date', + ) as $dateField) { if (!empty($membershipValues[$dateField])) { $membershipValues[$dateField] = CRM_Utils_Date::processDate($membershipValues[$dateField]); } @@ -2087,6 +2093,8 @@ AND cc.sort_name LIKE '%$name%'"; unset($relationships['total_relationships']); if (!empty($relationships)) { + $displayName = CRM_Contact_BAO_Contact::displayName($params['contact_id']); + // format params foreach ($relationships as $relationshipId => $values) { $relationship = array(); @@ -2117,24 +2125,44 @@ AND cc.sort_name LIKE '%$name%'"; 'civicrm/contact/view/rel', "action=view&reset=1&cid={$values['cid']}&id={$values['id']}&rtype={$values['rtype']}"); - if ($params['context'] == 'current') { - if (($params['contact_id'] == $values['contact_id_a'] AND $values['is_permission_a_b'] == 1) OR - ($params['contact_id'] == $values['contact_id_b'] AND $values['is_permission_b_a'] == 1) - ) { - $relationship['sort_name'] .= '<span id="permission-a-b" class="crm-marker permission-relationship"> *</span>'; - } - - if (($values['cid'] == $values['contact_id_a'] AND $values['is_permission_a_b'] == 1) OR - ($values['cid'] == $values['contact_id_b'] AND $values['is_permission_b_a'] == 1) - ) { - $relationship['relation'] .= '<span id="permission-b-a" class="crm-marker permission-relationship"> *</span>'; - } - } - if (!empty($values['description'])) { $relationship['relation'] .= "<p class='description'>{$values['description']}</p>"; } + if ($params['context'] == 'current') { + $smarty = CRM_Core_Smarty::singleton(); + + $contactCombos = [ + [ + 'permContact' => $params['contact_id'], + 'permDisplayName' => $displayName, + 'otherContact' => $values['cid'], + 'otherDisplayName' => $values['display_name'], + 'columnKey' => 'sort_name', + ], + [ + 'permContact' => $values['cid'], + 'permDisplayName' => $values['display_name'], + 'otherContact' => $params['contact_id'], + 'otherDisplayName' => $displayName, + 'columnKey' => 'relation', + ], + ]; + + foreach ($contactCombos as $combo) { + foreach ([CRM_Contact_BAO_Relationship::EDIT, CRM_Contact_BAO_Relationship::VIEW] as $permType) { + $smarty->assign('permType', $permType); + if (($combo['permContact'] == $values['contact_id_a'] and $values['is_permission_a_b'] == $permType) + || ($combo['permContact'] == $values['contact_id_b'] and $values['is_permission_b_a'] == $permType) + ) { + $smarty->assign('permDisplayName', $combo['permDisplayName']); + $smarty->assign('otherDisplayName', $combo['otherDisplayName']); + $relationship[$combo['columnKey']] .= $smarty->fetch('CRM/Contact/Page/View/RelationshipPerm.tpl'); + } + } + } + } + $relationship['start_date'] = CRM_Utils_Date::customFormat($values['start_date']); $relationship['end_date'] = CRM_Utils_Date::customFormat($values['end_date']); $relationship['city'] = $values['city']; diff --git a/civicrm/CRM/Contact/DAO/Contact.php b/civicrm/CRM/Contact/DAO/Contact.php index 59e9108b71414a7ec9295581b6b5e3fad443c8f0..d7049145cb1a3bf122bb09b16b62c1dda742aec3 100644 --- a/civicrm/CRM/Contact/DAO/Contact.php +++ b/civicrm/CRM/Contact/DAO/Contact.php @@ -487,6 +487,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO { 'headerPattern' => '/d(o )?(not )?(email)/i', 'dataPattern' => '/^\d{1,}$/', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', @@ -504,6 +505,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO { 'headerPattern' => '/d(o )?(not )?(call|phone)/i', 'dataPattern' => '/^\d{1,}$/', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', @@ -521,6 +523,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO { 'headerPattern' => '/^(d(o\s)?n(ot\s)?mail)|(\w*)?bulk\s?(\w*)$/i', 'dataPattern' => '/^\d{1,}$/', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', @@ -538,6 +541,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO { 'headerPattern' => '/d(o )?(not )?(sms)/i', 'dataPattern' => '/^\d{1,}$/', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', @@ -555,6 +559,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO { 'headerPattern' => '/d(o )?(not )?(trade)/i', 'dataPattern' => '/^\d{1,}$/', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', @@ -574,6 +579,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO { 'headerPattern' => '', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', @@ -1218,6 +1224,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO { 'headerPattern' => '/i(s\s)?d(eceased)$/i', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', @@ -1367,6 +1374,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO { 'where' => 'civicrm_contact.is_deleted', 'headerPattern' => '', 'dataPattern' => '', + 'default' => '0', 'table_name' => 'civicrm_contact', 'entity' => 'Contact', 'bao' => 'CRM_Contact_BAO_Contact', diff --git a/civicrm/CRM/Contact/DAO/DashboardContact.php b/civicrm/CRM/Contact/DAO/DashboardContact.php index e3eb9e07bd949880a4b203a614a6c25c538ce527..a6538b2c6997bea8405ff703569ad0e4645b83c6 100644 --- a/civicrm/CRM/Contact/DAO/DashboardContact.php +++ b/civicrm/CRM/Contact/DAO/DashboardContact.php @@ -139,6 +139,7 @@ class CRM_Contact_DAO_DashboardContact extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Column No'), 'description' => 'column no for this widget', + 'default' => '0', 'table_name' => 'civicrm_dashboard_contact', 'entity' => 'DashboardContact', 'bao' => 'CRM_Contact_BAO_DashboardContact', @@ -149,6 +150,7 @@ class CRM_Contact_DAO_DashboardContact extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Dashlet is Active?'), 'description' => 'Is this widget active?', + 'default' => '0', 'table_name' => 'civicrm_dashboard_contact', 'entity' => 'DashboardContact', 'bao' => 'CRM_Contact_BAO_DashboardContact', @@ -159,6 +161,7 @@ class CRM_Contact_DAO_DashboardContact extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Order'), 'description' => 'Ordering of the widgets.', + 'default' => '0', 'table_name' => 'civicrm_dashboard_contact', 'entity' => 'DashboardContact', 'bao' => 'CRM_Contact_BAO_DashboardContact', diff --git a/civicrm/CRM/Contact/DAO/Group.php b/civicrm/CRM/Contact/DAO/Group.php index e1de1bb5f8776cf5505682745362aa505f37d858..d0b22f0c7369ab6c9d2c7de3785ecc6aad69543d 100644 --- a/civicrm/CRM/Contact/DAO/Group.php +++ b/civicrm/CRM/Contact/DAO/Group.php @@ -401,6 +401,7 @@ class CRM_Contact_DAO_Group extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Group is Hidden'), 'description' => 'Is this group hidden?', + 'default' => '0', 'table_name' => 'civicrm_group', 'entity' => 'Group', 'bao' => 'CRM_Contact_BAO_Group', @@ -410,6 +411,7 @@ class CRM_Contact_DAO_Group extends CRM_Core_DAO { 'name' => 'is_reserved', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Group is Reserved'), + 'default' => '0', 'table_name' => 'civicrm_group', 'entity' => 'Group', 'bao' => 'CRM_Contact_BAO_Group', diff --git a/civicrm/CRM/Contact/DAO/Relationship.php b/civicrm/CRM/Contact/DAO/Relationship.php index f61c5c220fdbda0f18941bfcb951b42c3f87ae8e..740d0a752548aeffe70d195c1ffa6ebc76a36ae8 100644 --- a/civicrm/CRM/Contact/DAO/Relationship.php +++ b/civicrm/CRM/Contact/DAO/Relationship.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/Relationship.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:a5a833da9d5016f0aeb06ba7c1058b3c) + * (GenCodeChecksum:49381da59affbf165a4c9ce87c9a68ec) */ /** @@ -85,18 +85,16 @@ class CRM_Contact_DAO_Relationship extends CRM_Core_DAO { public $description; /** - * is contact a has permission to view / edit contact and - related data for contact b ? + * Permission that Contact A has to view/update Contact B * - * @var boolean + * @var int unsigned */ public $is_permission_a_b; /** - * is contact b has permission to view / edit contact and - related data for contact a ? + * Permission that Contact B has to view/update Contact A * - * @var boolean + * @var int unsigned */ public $is_permission_b_a; @@ -251,33 +249,39 @@ class CRM_Contact_DAO_Relationship extends CRM_Core_DAO { ], 'is_permission_a_b' => [ 'name' => 'is_permission_a_b', - 'type' => CRM_Utils_Type::T_BOOLEAN, + 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Contact A has Permission Over Contact B'), - 'description' => 'is contact a has permission to view / edit contact and - related data for contact b ? - ', + 'description' => 'Permission that Contact A has to view/update Contact B', + 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_relationship', 'entity' => 'Relationship', 'bao' => 'CRM_Contact_BAO_Relationship', 'localizable' => 0, 'html' => [ - 'type' => 'CheckBox', + 'type' => 'Radio', ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions', + ] ], 'is_permission_b_a' => [ 'name' => 'is_permission_b_a', - 'type' => CRM_Utils_Type::T_BOOLEAN, + 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Contact B has Permission Over Contact A'), - 'description' => 'is contact b has permission to view / edit contact and - related data for contact a ? - ', + 'description' => 'Permission that Contact B has to view/update Contact A', + 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_relationship', 'entity' => 'Relationship', 'bao' => 'CRM_Contact_BAO_Relationship', 'localizable' => 0, 'html' => [ - 'type' => 'CheckBox', + 'type' => 'Radio', ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions', + ] ], 'case_id' => [ 'name' => 'case_id', diff --git a/civicrm/CRM/Contact/DAO/SavedSearch.php b/civicrm/CRM/Contact/DAO/SavedSearch.php index 97ecac5207f3cd3a284f2e39d48220a532f9d2f2..91db5b3474d358e97addeec1077c9f6582e100a3 100644 --- a/civicrm/CRM/Contact/DAO/SavedSearch.php +++ b/civicrm/CRM/Contact/DAO/SavedSearch.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/SavedSearch.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:0341555885ddaf5dbc8e4d6cfe1d899c) + * (GenCodeChecksum:4b183aa40bb90cc7c715034178104a11) */ /** diff --git a/civicrm/CRM/Contact/Form/Edit/Email.php b/civicrm/CRM/Contact/Form/Edit/Email.php index 489f5e7b326726a7cbc353b30495b2804fb9742a..47ed4a448913fac957be8866eeafb66e8045b82d 100644 --- a/civicrm/CRM/Contact/Form/Edit/Email.php +++ b/civicrm/CRM/Contact/Form/Edit/Email.php @@ -58,7 +58,7 @@ class CRM_Contact_Form_Edit_Email { $form->applyFilter('__ALL__', 'trim'); //Email box - $form->addField("email[$blockId][email]", array('entity' => 'email')); + $form->addField("email[$blockId][email]", array('entity' => 'email', 'aria-label' => ts('Email %1', [1 => $blockId]))); $form->addRule("email[$blockId][email]", ts('Email is not valid.'), 'email'); if (isset($form->_contactType) || $blockEdit) { //Block type @@ -77,17 +77,16 @@ class CRM_Contact_Form_Edit_Email { $form->addElement('select', "email[$blockId][on_hold]", '', $holdOptions); } else { - $form->addField("email[$blockId][on_hold]", array('entity' => 'email', 'type' => 'advcheckbox')); + $form->addField("email[$blockId][on_hold]", array('entity' => 'email', 'type' => 'advcheckbox', 'aria-label' => ts('On Hold for Email %1?', [1 => $blockId]))); } //Bulkmail checkbox $form->assign('multipleBulk', $multipleBulk); + $js = array('id' => "Email_" . $blockId . "_IsBulkmail" , 'aria-label' => ts('Bulk Mailing for Email %1?', [1 => $blockId])); if ($multipleBulk) { - $js = array('id' => "Email_" . $blockId . "_IsBulkmail"); $form->addElement('advcheckbox', "email[$blockId][is_bulkmail]", NULL, '', $js); } else { - $js = array('id' => "Email_" . $blockId . "_IsBulkmail"); if (!$blockEdit) { $js['onClick'] = 'singleSelect( this.id );'; } @@ -95,7 +94,7 @@ class CRM_Contact_Form_Edit_Email { } //is_Primary radio - $js = array('id' => "Email_" . $blockId . "_IsPrimary"); + $js = array('id' => "Email_" . $blockId . "_IsPrimary", 'aria-label' => ts('Email %1 is primary?', [1 => $blockId])); if (!$blockEdit) { $js['onClick'] = 'singleSelect( this.id );'; } diff --git a/civicrm/CRM/Contact/Form/Edit/IM.php b/civicrm/CRM/Contact/Form/Edit/IM.php index f5df0b46aaa96a64490ed0697b688152b136a6e2..99a6bd719cf37b8eb4923d6673e6d2c7b6cc294d 100644 --- a/civicrm/CRM/Contact/Form/Edit/IM.php +++ b/civicrm/CRM/Contact/Form/Edit/IM.php @@ -61,9 +61,9 @@ class CRM_Contact_Form_Edit_IM { $form->addField("im[$blockId][location_type_id]", array('entity' => 'im', 'class' => 'eight', 'placeholder' => NULL, 'option_url' => NULL)); //IM box - $form->addField("im[$blockId][name]", array('entity' => 'im')); + $form->addField("im[$blockId][name]", array('entity' => 'im', 'aria-label' => ts('Instant Messenger %1', [1 => $blockId]))); //is_Primary radio - $js = array('id' => 'IM_' . $blockId . '_IsPrimary'); + $js = array('id' => 'IM_' . $blockId . '_IsPrimary', 'aria-label' => ts('Instant Messenger %1 is primary?', [1 => $blockId])); if (!$blockEdit) { $js['onClick'] = 'singleSelect( this.id );'; } diff --git a/civicrm/CRM/Contact/Form/Edit/Phone.php b/civicrm/CRM/Contact/Form/Edit/Phone.php index 756a96fca919b1890658c3dc15af7296fb423efa..4262bcadd569ba24c5b6368a5f0b75c8e5aa4b17 100644 --- a/civicrm/CRM/Contact/Form/Edit/Phone.php +++ b/civicrm/CRM/Contact/Form/Edit/Phone.php @@ -64,8 +64,8 @@ class CRM_Contact_Form_Edit_Phone { 'placeholder' => NULL, )); //main phone number with crm_phone class - $form->addField("phone[$blockId][phone]", array('entity' => 'phone', 'class' => 'crm_phone twelve')); - $form->addField("phone[$blockId][phone_ext]", array('entity' => 'phone')); + $form->addField("phone[$blockId][phone]", array('entity' => 'phone', 'class' => 'crm_phone twelve', 'aria-label' => ts('Phone %1', [1 => $blockId]))); + $form->addField("phone[$blockId][phone_ext]", array('entity' => 'phone', 'aria-label' => ts('Phone Extension %1', [1 => $blockId]))); if (isset($form->_contactType) || $blockEdit) { //Block type select $form->addField("phone[$blockId][location_type_id]", array( @@ -76,7 +76,7 @@ class CRM_Contact_Form_Edit_Phone { )); //is_Primary radio - $js = array('id' => 'Phone_' . $blockId . '_IsPrimary', 'onClick' => 'singleSelect( this.id );'); + $js = array('id' => 'Phone_' . $blockId . '_IsPrimary', 'onClick' => 'singleSelect( this.id );', 'aria-label' => ts('Phone %1 is primary?', [1 => $blockId])); $form->addElement('radio', "phone[$blockId][is_primary]", '', '', '1', $js); } // TODO: set this up as a group, we need a valid phone_type_id if we have a phone number diff --git a/civicrm/CRM/Contact/Form/Edit/Website.php b/civicrm/CRM/Contact/Form/Edit/Website.php index 160e84248de843eafb407aa67fd086fbddea0d3c..43ade78cf449f18915a862d5725f72aa91b157f3 100644 --- a/civicrm/CRM/Contact/Form/Edit/Website.php +++ b/civicrm/CRM/Contact/Form/Edit/Website.php @@ -58,7 +58,7 @@ class CRM_Contact_Form_Edit_Website { $form->addField("website[$blockId][website_type_id]", array('entity' => 'website', 'class' => 'eight')); //Website box - $form->addField("website[$blockId][url]", array('entity' => 'website')); + $form->addField("website[$blockId][url]", array('entity' => 'website', 'aria-label' => ts('Website URL %1', [1 => $blockId]))); $form->addRule("website[$blockId][url]", ts('Enter a valid web address beginning with \'http://\' or \'https://\'.'), 'url'); } diff --git a/civicrm/CRM/Contact/Form/Relationship.php b/civicrm/CRM/Contact/Form/Relationship.php index cdc2898fded815b46fb43f294c4cde1274301bf9..fc115dcf92524ceda91d4ebfcf2841f52c4b4b5a 100644 --- a/civicrm/CRM/Contact/Form/Relationship.php +++ b/civicrm/CRM/Contact/Form/Relationship.php @@ -260,6 +260,7 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form { else { $defaults['is_active'] = $defaults['is_current_employer'] = 1; $defaults['relationship_type_id'] = $this->_rtypeId; + $defaults['is_permission_a_b'] = $defaults['is_permission_b_a'] = CRM_Contact_BAO_Relationship::NONE; } $this->_enabled = $defaults['is_active']; @@ -339,8 +340,8 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form { $this->addField('is_active', array('label' => ts('Enabled?'), 'type' => 'advcheckbox')); - $this->addField('is_permission_a_b'); - $this->addField('is_permission_b_a'); + $this->addField('is_permission_a_b', array(), TRUE); + $this->addField('is_permission_b_a', array(), TRUE); $this->addField('description', array('label' => ts('Description'))); diff --git a/civicrm/CRM/Contact/Form/Search.php b/civicrm/CRM/Contact/Form/Search.php index 5b9a2079dd6441351d4cceba97b553723a600240..a9ea4d57d990b53345201ee0ac0fbfdf236ed135 100644 --- a/civicrm/CRM/Contact/Form/Search.php +++ b/civicrm/CRM/Contact/Form/Search.php @@ -497,7 +497,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { if ($qfKeyParam && ($this->get('component_mode') <= CRM_Contact_BAO_Query::MODE_CONTACTS || $this->get('component_mode') == CRM_Contact_BAO_Query::MODE_CONTACTSRELATED)) { $this->addClass('crm-ajax-selection-form'); $qfKeyParam = "civicrm search {$qfKeyParam}"; - $selectedContactIdsArr = CRM_Core_BAO_PrevNextCache::getSelection($qfKeyParam); + $selectedContactIdsArr = Civi::service('prevnext')->getSelection($qfKeyParam); $selectedContactIds = array_keys($selectedContactIdsArr[$qfKeyParam]); } @@ -782,7 +782,7 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { ) { //reset the cache table for new search $cacheKey = "civicrm search {$this->controller->_key}"; - CRM_Core_BAO_PrevNextCache::deleteItem(NULL, $cacheKey); + Civi::service('prevnext')->deleteItem(NULL, $cacheKey); } //get the button name diff --git a/civicrm/CRM/Contact/Form/Search/Criteria.php b/civicrm/CRM/Contact/Form/Search/Criteria.php index 52d7a100168d5b6ce39baf69e9271424c622a7c9..845ab7c9a54138c071a4e3882b73e4cbc65054ab 100644 --- a/civicrm/CRM/Contact/Form/Search/Criteria.php +++ b/civicrm/CRM/Contact/Form/Search/Criteria.php @@ -467,9 +467,9 @@ class CRM_Contact_Form_Search_Criteria { $form->addRadio('relation_status', ts('Relationship Status'), $relStatusOption); $form->setDefaults(array('relation_status' => 0)); // relation permission - $relPermissionOption = array(ts('Any'), ts('Yes'), ts('No')); - $form->addRadio('relation_permission', ts('Permissioned Relationship?'), $relPermissionOption); - $form->setDefaults(array('relation_permission' => 0)); + $allRelationshipPermissions = CRM_Contact_BAO_Relationship::buildOptions('is_permission_a_b'); + $form->add('select', 'relation_permission', ts('Permissioned Relationship'), + array('' => ts('- select -')) + $allRelationshipPermissions, FALSE, array('multiple' => TRUE, 'class' => 'crm-select2')); //add the target group if ($form->_group) { diff --git a/civicrm/CRM/Contact/Form/Search/Custom/MultipleValues.php b/civicrm/CRM/Contact/Form/Search/Custom/MultipleValues.php index acc1bd580f8100ca3c5e0f0f667f5bd14bc45fdb..31b9cebbc55f4d4e8820e38262f9ef85d25f0a68 100644 --- a/civicrm/CRM/Contact/Form/Search/Custom/MultipleValues.php +++ b/civicrm/CRM/Contact/Form/Search/Custom/MultipleValues.php @@ -246,7 +246,7 @@ contact_a.sort_name as sort_name, $this->_formValues ); if ($contact_type != NULL) { - $contactType = explode('__', $contact_type); + $contactType = explode('__', $contact_type, 2); if (count($contactType) > 1) { $clause[] = "contact_a.contact_type = '$contactType[0]' AND contact_a.contact_sub_type = '$contactType[1]'"; } diff --git a/civicrm/CRM/Contact/Form/Task.php b/civicrm/CRM/Contact/Form/Task.php index 2d6e7637bf7a46a75acda0ea7cd8d3eaf0c5f462..369d59451367e91e50fcc22c2e7d603842640ff8 100644 --- a/civicrm/CRM/Contact/Form/Task.php +++ b/civicrm/CRM/Contact/Form/Task.php @@ -172,7 +172,7 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { // rather than prevnext cache table for most of the task actions except export where we rebuild query to fetch // final result set if ($useTable) { - $allCids = CRM_Core_BAO_PrevNextCache::getSelection($cacheKey, "getall"); + $allCids = Civi::service('prevnext')->getSelection($cacheKey, "getall"); } else { $allCids[$cacheKey] = self::getContactIds($form); @@ -233,7 +233,7 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { } else { // fetching selected contact ids of passed cache key - $selectedCids = CRM_Core_BAO_PrevNextCache::getSelection($cacheKey); + $selectedCids = Civi::service('prevnext')->getSelection($cacheKey); foreach ($selectedCids[$cacheKey] as $selectedCid => $ignore) { if ($useTable) { $insertString[] = " ( {$selectedCid} ) "; @@ -273,7 +273,7 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { ) { $sel = CRM_Utils_Array::value('radio_ts', self::$_searchFormValues); $form->assign('searchtype', $sel); - $result = CRM_Core_BAO_PrevNextCache::getSelectedContacts(); + $result = self::getSelectedContactNames(); $form->assign("value", $result); } @@ -477,6 +477,29 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { } } + /** + * @return array + * List of contact names. + * NOTE: These are raw values from the DB. In current data-model, that means + * they are pre-encoded HTML. + */ + private static function getSelectedContactNames() { + $qfKey = CRM_Utils_Request::retrieve('qfKey', 'String'); + $cacheKey = "civicrm search {$qfKey}"; + + $cids = array(); + // Gymanstic time! + foreach (Civi::service('prevnext')->getSelection($cacheKey) as $cacheKey => $values) { + $cids = array_unique(array_merge($cids, array_keys($values))); + } + + $result = CRM_Utils_SQL_Select::from('civicrm_contact') + ->where('id IN (#cids)', ['cids' => $cids]) + ->execute() + ->fetchMap('id', 'sort_name'); + return $result; + } + /** * Given this task's list of targets, produce a hidden group. * diff --git a/civicrm/CRM/Contact/Page/AJAX.php b/civicrm/CRM/Contact/Page/AJAX.php index 79fa957b6c8dc6a169d7f0051a1c759094fa35ab..8270d7b753a2d8b1d923197e2d797c4b1db49818 100644 --- a/civicrm/CRM/Contact/Page/AJAX.php +++ b/civicrm/CRM/Contact/Page/AJAX.php @@ -966,19 +966,19 @@ LIMIT {$offset}, {$rowCount} $elements[$key] = self::_convertToId($element); } CRM_Utils_Type::escapeAll($elements, 'Integer'); - CRM_Core_BAO_PrevNextCache::markSelection($cacheKey, $actionToPerform, $elements); + Civi::service('prevnext')->markSelection($cacheKey, $actionToPerform, $elements); } else { - CRM_Core_BAO_PrevNextCache::markSelection($cacheKey, $actionToPerform); + Civi::service('prevnext')->markSelection($cacheKey, $actionToPerform); } } elseif ($variableType == 'single') { $cId = self::_convertToId($name); CRM_Utils_Type::escape($cId, 'Integer'); $action = ($state == 'checked') ? 'select' : 'unselect'; - CRM_Core_BAO_PrevNextCache::markSelection($cacheKey, $action, $cId); + Civi::service('prevnext')->markSelection($cacheKey, $action, $cId); } - $contactIds = CRM_Core_BAO_PrevNextCache::getSelection($cacheKey); + $contactIds = Civi::service('prevnext')->getSelection($cacheKey); $countSelectionCids = count($contactIds[$cacheKey]); $arrRet = array('getCount' => $countSelectionCids); diff --git a/civicrm/CRM/Contact/Page/View.php b/civicrm/CRM/Contact/Page/View.php index aded97985116dd3ad3661141257d4dd9b9c47be2..f7e0057eefa53549ea64c6488ccd933c7cef97ed 100644 --- a/civicrm/CRM/Contact/Page/View.php +++ b/civicrm/CRM/Contact/Page/View.php @@ -117,7 +117,7 @@ class CRM_Contact_Page_View extends CRM_Core_Page { 'nextPrevError' => 0, ); if ($qfKey) { - $pos = CRM_Core_BAO_PrevNextCache::getPositions("civicrm search $qfKey", + $pos = Civi::service('prevnext')->getPositions("civicrm search $qfKey", $this->_contactId, $this->_contactId ); @@ -306,7 +306,7 @@ class CRM_Contact_Page_View extends CRM_Core_Page { */ public static function setTitle($contactId, $isDeleted = FALSE) { static $contactDetails; - $displayName = $contactImage = NULL; + $contactImage = NULL; if (!isset($contactDetails[$contactId])) { list($displayName, $contactImage) = self::getContactDetails($contactId); $contactDetails[$contactId] = array( @@ -327,6 +327,15 @@ class CRM_Contact_Page_View extends CRM_Core_Page { } if ($isDeleted) { $title = "<del>{$title}</del>"; + $mergedTo = civicrm_api3('Contact', 'getmergedto', ['contact_id' => $contactId, 'api.Contact.get' => ['return' => 'display_name']]); + if ($mergedTo['count']) { + $mergedToContactID = $mergedTo['id']; + $mergedToDisplayName = $mergedTo['values'][$mergedToContactID]['api.Contact.get']['values'][0]['display_name']; + $title .= ' ' . ts('(This contact has been merged to <a href="%1">%2</a>)', [ + 1 => CRM_Utils_System::url('civicrm/contact/view', ['reset' => 1, 'cid' => $mergedToContactID]), + 2 => $mergedToDisplayName, + ]); + } } // Inline-edit places its own title on the page diff --git a/civicrm/CRM/Contact/Page/View/UserDashBoard.php b/civicrm/CRM/Contact/Page/View/UserDashBoard.php index 9ecf6863b6224d28033e09d466b9f4a388593fc2..2cc99577e1cc6af3dc2254fc33b2997aa464e4c1 100644 --- a/civicrm/CRM/Contact/Page/View/UserDashBoard.php +++ b/civicrm/CRM/Contact/Page/View/UserDashBoard.php @@ -72,7 +72,9 @@ class CRM_Contact_Page_View_UserDashBoard extends CRM_Core_Page { $userChecksum = CRM_Utils_Request::retrieve('cs', 'String', $this); $validUser = FALSE; if (empty($userID) && $this->_contactId && $userChecksum) { + $this->assign('userChecksum', $userChecksum); $validUser = CRM_Contact_BAO_Contact_Utils::validChecksum($this->_contactId, $userChecksum); + $this->_isChecksumUser = $validUser; } if (!$this->_contactId) { @@ -168,7 +170,7 @@ class CRM_Contact_Page_View_UserDashBoard extends CRM_Core_Page { $this->assign('pcpInfo', $pcpInfo); } - if (!empty($this->_userOptions['Assigned Activities'])) { + if (!empty($this->_userOptions['Assigned Activities']) && empty($this->_isChecksumUser)) { // Assigned Activities section $dashboardElements[] = array( 'class' => 'crm-dashboard-assignedActivities', diff --git a/civicrm/CRM/Contact/Selector.php b/civicrm/CRM/Contact/Selector.php index 731f78c69d6eacdc41d6f5ae5059ddf6a7800154..066e4a4476fd22a14557c37bc9f35f32aa960cb2 100644 --- a/civicrm/CRM/Contact/Selector.php +++ b/civicrm/CRM/Contact/Selector.php @@ -579,10 +579,10 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se // note that the default action is basic if ($rowCount) { $cacheKey = $this->buildPrevNextCache($sort); - $result = $this->_query->getCachedContacts($cacheKey, $offset, $rowCount, $includeContactIds); + $resultSet = $this->_query->getCachedContacts($cacheKey, $offset, $rowCount, $includeContactIds)->fetchGenerator(); } else { - $result = $this->_query->searchQuery($offset, $rowCount, $sort, FALSE, $includeContactIds); + $resultSet = $this->_query->searchQuery($offset, $rowCount, $sort, FALSE, $includeContactIds)->fetchGenerator(); } // process the result of the query @@ -671,7 +671,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se ); } - while ($result->fetch()) { + foreach ($resultSet as $result) { $row = array(); $this->_query->convertToPseudoNames($result); // the columns we are interested in @@ -881,7 +881,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se // check for current != previous to ensure cache is not reset if paging is done without changing // sort criteria if (!$pageNum || (!empty($currentSortID) && $currentSortID != $previousSortID)) { - CRM_Core_BAO_PrevNextCache::deleteItem(NULL, $cacheKey, 'civicrm_contact'); + Civi::service('prevnext')->deleteItem(NULL, $cacheKey, 'civicrm_contact'); // this means it's fresh search, so set pageNum=1 if (!$pageNum) { $pageNum = 1; @@ -900,7 +900,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se $sortByCharacter = CRM_Utils_Request::retrieve('sortByCharacter', 'String'); //for text field pagination selection save - $countRow = CRM_Core_BAO_PrevNextCache::getCount($cacheKey, NULL, "entity_table = 'civicrm_contact'"); + $countRow = Civi::service('prevnext')->getCount($cacheKey); // $sortByCharacter triggers a refresh in the prevNext cache if ($sortByCharacter && $sortByCharacter != 'all') { $cacheKey .= "_alphabet"; @@ -1039,17 +1039,11 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se // the other alternative of running the FULL query will just be incredibly inefficient // and slow things down way too much on large data sets / complex queries - $insertSQL = " -INSERT INTO civicrm_prevnext_cache ( entity_table, entity_id1, entity_id2, cacheKey, data ) -SELECT DISTINCT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', contact_a.sort_name -"; + $selectSQL = "SELECT DISTINCT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', contact_a.sort_name"; - $sql = str_replace(array("SELECT contact_a.id as contact_id", "SELECT contact_a.id as id"), $insertSQL, $sql); + $sql = str_replace(array("SELECT contact_a.id as contact_id", "SELECT contact_a.id as id"), $selectSQL, $sql); try { - $result = CRM_Core_DAO::executeQuery($sql, [], FALSE, NULL, FALSE, TRUE, TRUE); - if (is_a($result, 'DB_Error')) { - throw new CRM_Core_Exception($result->message); - } + Civi::service('prevnext')->fillWithSql($cacheKey, $sql); } catch (CRM_Core_Exception $e) { if ($coreSearch) { @@ -1089,18 +1083,17 @@ SELECT DISTINCT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', cont $dao = CRM_Core_DAO::executeQuery($sql); // build insert query, note that currently we build cache for 500 (self::CACHE_SIZE) contact records at a time, hence below approach - $insertValues = array(); + $rows = []; while ($dao->fetch()) { - $insertValues[] = "('civicrm_contact', {$dao->contact_id}, {$dao->contact_id}, '{$cacheKey}', '" . CRM_Core_DAO::escapeString($dao->sort_name) . "')"; + $rows[] = [ + 'entity_table' => 'civicrm_contact', + 'entity_id1' => $dao->contact_id, + 'entity_id2' => $dao->contact_id, + 'data' => $dao->sort_name, + ]; } - //update pre/next cache using single insert query - if (!empty($insertValues)) { - $sql = 'INSERT INTO civicrm_prevnext_cache ( entity_table, entity_id1, entity_id2, cacheKey, data ) VALUES -' . implode(',', $insertValues); - - $result = CRM_Core_DAO::executeQuery($sql); - } + Civi::service('prevnext')->fillWithArray($cacheKey, $rows); } /** diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php index 5682ae6fea556e788ff07c798f52ea1fe6572097..bd1d1d452ef500383ed481a1962b2b6c293c5629 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution.php +++ b/civicrm/CRM/Contribute/BAO/Contribution.php @@ -4621,12 +4621,13 @@ WHERE eft.financial_trxn_id IN ({$trxnId}, {$baseTrxnId['financialTrxnId']}) $values['is_email_receipt'] = $recurContrib->is_email_receipt; } - self::updateMembershipBasedOnCompletionOfContribution( - $contribution, - $primaryContributionID, - $changeDate, - CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', CRM_Utils_Array::value('contribution_status_id', $input)) - ); + if ($contributionParams['contribution_status_id'] === $completedContributionStatusID) { + self::updateMembershipBasedOnCompletionOfContribution( + $contribution, + $primaryContributionID, + $changeDate + ); + } } else { if (empty($input['IAmAHorribleNastyBeyondExcusableHackInTheCRMEventFORMTaskClassThatNeedsToBERemoved'])) { @@ -4854,7 +4855,7 @@ WHERE eft.financial_trxn_id IN ({$trxnId}, {$baseTrxnId['financialTrxnId']}) * * @param array $params * - * @return object + * @return CRM_Financial_DAO_FinancialTrxn */ public static function recordPartialPayment($contribution, $params) { $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); @@ -5000,6 +5001,7 @@ WHERE eft.financial_trxn_id IN ({$trxnId}, {$baseTrxnId['financialTrxnId']}) public static function checkLineItems(&$params) { $totalAmount = CRM_Utils_Array::value('total_amount', $params); $lineItemAmount = 0; + foreach ($params['line_items'] as &$lineItems) { foreach ($lineItems['line_item'] as &$item) { if (empty($item['financial_type_id'])) { @@ -5008,11 +5010,20 @@ WHERE eft.financial_trxn_id IN ({$trxnId}, {$baseTrxnId['financialTrxnId']}) $lineItemAmount += $item['line_total']; } } + if (!isset($totalAmount)) { $params['total_amount'] = $lineItemAmount; } - elseif ($totalAmount != $lineItemAmount) { - throw new API_Exception("Line item total doesn't match with total amount."); + else { + $currency = CRM_Utils_Array::value('currency', $params, ''); + + if (empty($currency)) { + $currency = CRM_Core_Config::singleton()->defaultCurrency; + } + + if (!CRM_Utils_Money::equals($totalAmount, $lineItemAmount, $currency)) { + throw new CRM_Contribute_Exception_CheckLineItemsException(); + } } } @@ -5029,11 +5040,13 @@ WHERE eft.financial_trxn_id IN ({$trxnId}, {$baseTrxnId['financialTrxnId']}) if (!empty($params['financial_account_id'])) { return $params['financial_account_id']; } + $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus($params['contribution_status_id'], 'name'); $preferredAccountsRelationships = array( 'Refunded' => 'Credit/Contra Revenue Account is', 'Chargeback' => 'Chargeback Account is', ); + if (in_array($contributionStatus, array_keys($preferredAccountsRelationships))) { $financialTypeID = !empty($params['financial_type_id']) ? $params['financial_type_id'] : $params['prevContribution']->financial_type_id; return CRM_Financial_BAO_FinancialAccount::getFinancialAccountForFinancialTypeByRelationship( @@ -5041,6 +5054,7 @@ WHERE eft.financial_trxn_id IN ({$trxnId}, {$baseTrxnId['financialTrxnId']}) $preferredAccountsRelationships[$contributionStatus] ); } + return $default; } @@ -5391,12 +5405,11 @@ LEFT JOIN civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co * @param \CRM_Contribute_BAO_Contribution $contribution * @param int $primaryContributionID * @param string $changeDate - * @param string $contributionStatus - * This shouldn't be required but historical function overload by repeattransaction probably requires it. * - * @todo investigate completely bypassing this function if $contributionStatus != Completed. + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception */ - protected static function updateMembershipBasedOnCompletionOfContribution($contribution, $primaryContributionID, $changeDate, $contributionStatus = 'Completed') { + protected static function updateMembershipBasedOnCompletionOfContribution($contribution, $primaryContributionID, $changeDate) { $contribution->loadRelatedMembershipObjects(); if (empty($contribution->_relatedObjects['membership'])) { return; @@ -5436,55 +5449,50 @@ LIMIT 1;"; } $dao->free(); - // Unclear why this is here but this function is overloaded by repeattransaction. - if ($contributionStatus === 'Pending') { - $membershipParams['num_terms'] = 0; - } - else { - $membershipParams['num_terms'] = $contribution->getNumTermsByContributionAndMembershipType( - $membershipParams['membership_type_id'], - $primaryContributionID + $membershipParams['num_terms'] = $contribution->getNumTermsByContributionAndMembershipType( + $membershipParams['membership_type_id'], + $primaryContributionID + ); + // @todo remove all this stuff in favour of letting the api call further down handle in + // (it is a duplication of what the api does). + $dates = array_fill_keys(array( + 'join_date', + 'start_date', + 'end_date', + ), NULL); + if ($currentMembership) { + /* + * Fixed FOR CRM-4433 + * In BAO/Membership.php(renewMembership function), we skip the extend membership date and status + * when Contribution mode is notify and membership is for renewal ) + */ + CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew($currentMembership, $changeDate); + + // @todo - we should pass membership_type_id instead of null here but not + // adding as not sure of testing + $dates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType($membershipParams['id'], + $changeDate, NULL, $membershipParams['num_terms'] ); - // @todo remove all this stuff in favour of letting the api call further down handle in - // (it is a duplication of what the api does). - $dates = array_fill_keys(array( - 'join_date', - 'start_date', - 'end_date', - ), NULL); - if ($currentMembership) { - /* - * Fixed FOR CRM-4433 - * In BAO/Membership.php(renewMembership function), we skip the extend membership date and status - * when Contribution mode is notify and membership is for renewal ) - */ - CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew($currentMembership, $changeDate); - - // @todo - we should pass membership_type_id instead of null here but not - // adding as not sure of testing - $dates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType($membershipParams['id'], - $changeDate, NULL, $membershipParams['num_terms'] - ); - $dates['join_date'] = $currentMembership['join_date']; - } + $dates['join_date'] = $currentMembership['join_date']; + } - //get the status for membership. - $calcStatus = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dates['start_date'], - $dates['end_date'], - $dates['join_date'], - 'today', - TRUE, - $membershipParams['membership_type_id'], - $membershipParams - ); + //get the status for membership. + $calcStatus = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dates['start_date'], + $dates['end_date'], + $dates['join_date'], + 'today', + TRUE, + $membershipParams['membership_type_id'], + $membershipParams + ); + + unset($dates['end_date']); + $membershipParams['status_id'] = CRM_Utils_Array::value('id', $calcStatus, 'New'); + //we might be renewing membership, + //so make status override false. + $membershipParams['is_override'] = FALSE; + $membershipParams['status_override_end_date'] = 'null'; - unset($dates['end_date']); - $membershipParams['status_id'] = CRM_Utils_Array::value('id', $calcStatus, 'New'); - //we might be renewing membership, - //so make status override false. - $membershipParams['is_override'] = FALSE; - $membershipParams['status_override_end_date'] = 'null'; - } //CRM-17723 - reset static $relatedContactIds array() // @todo move it to Civi Statics. $var = TRUE; diff --git a/civicrm/CRM/Contribute/BAO/ManagePremiums.php b/civicrm/CRM/Contribute/BAO/ManagePremiums.php index 7b900e4044639652a10c3980aef9213e789d613b..f122fb0b8873fcb3d8d7f45a056e05e5df888062 100644 --- a/civicrm/CRM/Contribute/BAO/ManagePremiums.php +++ b/civicrm/CRM/Contribute/BAO/ManagePremiums.php @@ -29,114 +29,81 @@ * * @package CRM * @copyright CiviCRM LLC (c) 2004-2018 + * @deprecated */ -class CRM_Contribute_BAO_ManagePremiums extends CRM_Contribute_DAO_Product { - - /** - * Static holder for the default LT. - */ - static $_defaultContributionType = NULL; +class CRM_Contribute_BAO_ManagePremiums extends CRM_Contribute_BAO_Product { /** * Class constructor. */ public function __construct() { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Contribute_BAO_Product::construct'); parent::__construct(); } /** * Fetch object based on array of properties. * + * @deprecated * @param array $params * (reference ) an assoc array of name/value pairs. * @param array $defaults * (reference ) an assoc array to hold the flattened values. * - * @return CRM_Contribute_BAO_ManagePremium + * @return CRM_Contribute_BAO_Product */ public static function retrieve(&$params, &$defaults) { - $premium = new CRM_Contribute_DAO_Product(); - $premium->copyValues($params); - if ($premium->find(TRUE)) { - $premium->product_name = $premium->name; - CRM_Core_DAO::storeValues($premium, $defaults); - return $premium; - } - return NULL; + CRM_Core_Error::deprecatedFunctionWarning('CRM_Contribute_BAO_Product::retrieve'); + return parent::retrieve($params, $defaults); } /** * Update the is_active flag in the db. * + * @deprecated * @param int $id * Id of the database record. * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool */ public static function setIsActive($id, $is_active) { - if (!$is_active) { - $dao = new CRM_Contribute_DAO_PremiumsProduct(); - $dao->product_id = $id; - $dao->delete(); - } - return CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Product', $id, 'is_active', $is_active); + CRM_Core_Error::deprecatedFunctionWarning('CRM_Contribute_BAO_Product::setIsActive'); + return parent::setIsActive($id, $is_active); } /** * Add a premium product to the database, and return it. * + * @deprecated * @param array $params * Reference array contains the values submitted by the form. - * @param array $ids + * @param array $ids (deprecated) * Reference array contains the id. * * @return CRM_Contribute_DAO_Product */ - public static function add(&$params, &$ids) { - $params = array_merge(array( - 'id' => CRM_Utils_Array::value('premium', $ids), - 'image' => '', - 'thumbnail' => '', - 'is_active' => 0, - 'is_deductible' => FALSE, - 'currency' => CRM_Core_Config::singleton()->defaultCurrency, - ), $params); - - // Modify the submitted values for 'image' and 'thumbnail' so that we use - // local URLs for these images when possible. - $params['image'] = CRM_Utils_String::simplifyURL($params['image'], TRUE); - $params['thumbnail'] = CRM_Utils_String::simplifyURL($params['thumbnail'], TRUE); - - // Save and return - $premium = new CRM_Contribute_DAO_Product(); - $premium->copyValues($params); - $premium->save(); - return $premium; + public static function add(&$params, $ids) { + CRM_Core_Error::deprecatedFunctionWarning('CRM_Contribute_BAO_Product::create'); + $id = CRM_Utils_Array::value('id', $params, CRM_Utils_Array::value('premium', $ids)); + if ($id) { + $params['id'] = $id; + } + return parent::create($params); } /** * Delete premium Types. * + * @deprecated * @param int $productID + * + * @throws \CRM_Core_Exception */ public static function del($productID) { - //check dependencies - $premiumsProduct = new CRM_Contribute_DAO_PremiumsProduct(); - $premiumsProduct->product_id = $productID; - if ($premiumsProduct->find(TRUE)) { - $session = CRM_Core_Session::singleton(); - $message .= ts('This Premium is being linked to <a href=\'%1\'>Online Contribution page</a>. Please remove it in order to delete this Premium.', array(1 => CRM_Utils_System::url('civicrm/admin/contribute', 'reset=1')), ts('Deletion Error'), 'error'); - CRM_Core_Session::setStatus($message); - return CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/admin/contribute/managePremiums', 'reset=1&action=browse')); - } - - //delete from financial Type table - $premium = new CRM_Contribute_DAO_Product(); - $premium->id = $productID; - $premium->delete(); + CRM_Core_Error::deprecatedFunctionWarning('CRM_Contribute_BAO_Product::del'); + return parent::del($productID); } } diff --git a/civicrm/CRM/Contribute/BAO/Premium.php b/civicrm/CRM/Contribute/BAO/Premium.php index 49b3bebe77c94e5f754ceeddc2b830d99405ec0e..a7db1d5efd48f604cc84d6f87509bdca837b4060 100644 --- a/civicrm/CRM/Contribute/BAO/Premium.php +++ b/civicrm/CRM/Contribute/BAO/Premium.php @@ -104,32 +104,33 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium { public static function buildPremiumBlock(&$form, $pageID, $formItems = FALSE, $selectedProductID = NULL, $selectedOption = NULL) { $form->add('hidden', "selectProduct", $selectedProductID, array('id' => 'selectProduct')); - $dao = new CRM_Contribute_DAO_Premium(); - $dao->entity_table = 'civicrm_contribution_page'; - $dao->entity_id = $pageID; - $dao->premiums_active = 1; - CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, CRM_Core_Action::ADD); - $addWhere = "financial_type_id IN (0)"; - if (!empty($financialTypes)) { - $addWhere = "financial_type_id IN (" . implode(',', array_keys($financialTypes)) . ")"; - } + $premiumDao = new CRM_Contribute_DAO_Premium(); + $premiumDao->entity_table = 'civicrm_contribution_page'; + $premiumDao->entity_id = $pageID; + $premiumDao->premiums_active = 1; - if ($dao->find(TRUE)) { - $premiumID = $dao->id; + if ($premiumDao->find(TRUE)) { + $premiumID = $premiumDao->id; $premiumBlock = array(); - CRM_Core_DAO::storeValues($dao, $premiumBlock); + CRM_Core_DAO::storeValues($premiumDao, $premiumBlock); - $dao = new CRM_Contribute_DAO_PremiumsProduct(); - $dao->premiums_id = $premiumID; - $dao->whereAdd($addWhere); - $dao->orderBy('weight'); - $dao->find(); + CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, CRM_Core_Action::ADD); + $addWhere = "financial_type_id IN (0)"; + if (!empty($financialTypes)) { + $addWhere = "financial_type_id IN (" . implode(',', array_keys($financialTypes)) . ")"; + } + $addWhere = "{$addWhere} OR financial_type_id IS NULL"; + + $premiumsProductDao = new CRM_Contribute_DAO_PremiumsProduct(); + $premiumsProductDao->premiums_id = $premiumID; + $premiumsProductDao->whereAdd($addWhere); + $premiumsProductDao->orderBy('weight'); + $premiumsProductDao->find(); $products = array(); - $radio = array(); - while ($dao->fetch()) { + while ($premiumsProductDao->fetch()) { $productDAO = new CRM_Contribute_DAO_Product(); - $productDAO->id = $dao->product_id; + $productDAO->id = $premiumsProductDao->product_id; $productDAO->is_active = 1; if ($productDAO->find(TRUE)) { if ($selectedProductID != NULL) { diff --git a/civicrm/CRM/Contribute/BAO/Product.php b/civicrm/CRM/Contribute/BAO/Product.php new file mode 100644 index 0000000000000000000000000000000000000000..22f1f9739d24b47365a26e8bb5cfab7e910885b2 --- /dev/null +++ b/civicrm/CRM/Contribute/BAO/Product.php @@ -0,0 +1,145 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2018 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC (c) 2004-2018 + */ +class CRM_Contribute_BAO_Product extends CRM_Contribute_DAO_Product { + + /** + * Static holder for the default LT. + */ + static $_defaultContributionType = NULL; + + /** + * Class constructor. + */ + public function __construct() { + parent::__construct(); + } + + /** + * Fetch object based on array of properties. + * + * @param array $params + * (reference ) an assoc array of name/value pairs. + * @param array $defaults + * (reference ) an assoc array to hold the flattened values. + * + * @return CRM_Contribute_BAO_Product + */ + public static function retrieve(&$params, &$defaults) { + $premium = new CRM_Contribute_DAO_Product(); + $premium->copyValues($params); + if ($premium->find(TRUE)) { + $premium->product_name = $premium->name; + CRM_Core_DAO::storeValues($premium, $defaults); + return $premium; + } + return NULL; + } + + /** + * Update the is_active flag in the db. + * + * @param int $id + * Id of the database record. + * @param bool $is_active + * Value we want to set the is_active field. + * + * @return bool + */ + public static function setIsActive($id, $is_active) { + if (!$is_active) { + $dao = new CRM_Contribute_DAO_PremiumsProduct(); + $dao->product_id = $id; + $dao->delete(); + } + return CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Product', $id, 'is_active', $is_active); + } + + /** + * Add a premium product to the database, and return it. + * + * @param array $params + * Update parameters. + * + * @return CRM_Contribute_DAO_Product + */ + public static function create($params) { + $id = CRM_Utils_Array::value('id', $params); + if (empty($id)) { + $defaultParams = [ + 'id' => $id, + 'image' => '', + 'thumbnail' => '', + 'is_active' => 0, + 'is_deductible' => FALSE, + 'currency' => CRM_Core_Config::singleton()->defaultCurrency, + ]; + $params = array_merge($defaultParams, $params); + } + + // Modify the submitted values for 'image' and 'thumbnail' so that we use + // local URLs for these images when possible. + if (isset($params['image'])) { + $params['image'] = CRM_Utils_String::simplifyURL($params['image'], TRUE); + } + if (isset($params['thumbnail'])) { + $params['thumbnail'] = CRM_Utils_String::simplifyURL($params['thumbnail'], TRUE); + } + + // Save and return + $premium = new CRM_Contribute_DAO_Product(); + $premium->copyValues($params); + $premium->save(); + return $premium; + } + + /** + * Delete premium Types. + * + * @param int $productID + * + * @throws \CRM_Core_Exception + */ + public static function del($productID) { + //check dependencies + $premiumsProduct = new CRM_Contribute_DAO_PremiumsProduct(); + $premiumsProduct->product_id = $productID; + if ($premiumsProduct->find(TRUE)) { + throw new CRM_Core_Exception('Cannot delete a Premium that is linked to a Contribution page'); + } + // delete product + $premium = new CRM_Contribute_DAO_Product(); + $premium->id = $productID; + $premium->delete(); + } + +} diff --git a/civicrm/CRM/Contribute/DAO/Contribution.php b/civicrm/CRM/Contribute/DAO/Contribution.php index 527cb61eb562cc192d8739c8357da16d9c02a039..d92f6f7958f66d235a1621c2e8a4f2aec851fedf 100644 --- a/civicrm/CRM/Contribute/DAO/Contribution.php +++ b/civicrm/CRM/Contribute/DAO/Contribution.php @@ -399,6 +399,7 @@ class CRM_Contribute_DAO_Contribution extends CRM_Core_DAO { 'headerPattern' => '/non?.?deduct/i', 'dataPattern' => '/^\d+(\.\d{2})?$/', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contribution', 'entity' => 'Contribution', 'bao' => 'CRM_Contribute_BAO_Contribution', @@ -696,6 +697,7 @@ class CRM_Contribute_DAO_Contribution extends CRM_Core_DAO { 'headerPattern' => '', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contribution', 'entity' => 'Contribution', 'bao' => 'CRM_Contribute_BAO_Contribution', @@ -713,6 +715,7 @@ class CRM_Contribute_DAO_Contribution extends CRM_Core_DAO { 'headerPattern' => '', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contribution', 'entity' => 'Contribution', 'bao' => 'CRM_Contribute_BAO_Contribution', diff --git a/civicrm/CRM/Contribute/DAO/ContributionPage.php b/civicrm/CRM/Contribute/DAO/ContributionPage.php index ab08e950890ab8f8c9869c3d88d5c2149e21cdca..98565ad90e42cd3d2f17295fc40aa73cce9787f7 100644 --- a/civicrm/CRM/Contribute/DAO/ContributionPage.php +++ b/civicrm/CRM/Contribute/DAO/ContributionPage.php @@ -458,6 +458,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Credit Card Only?'), 'description' => 'if true - processing logic must reject transaction at confirmation stage if pay method != credit card', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', @@ -479,6 +480,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Recurring'), 'description' => 'if true - allows recurring contributions, valid only for PayPal_Standard', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', @@ -521,6 +523,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Support Recurring Intervals'), 'description' => 'if true - supports recurring intervals', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', @@ -531,6 +534,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Recurring Installments?'), 'description' => 'if true - asks user for recurring installments', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', @@ -541,6 +545,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Adjust Recurring Start Date'), 'description' => 'if true - user is able to adjust payment start date', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', @@ -551,6 +556,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Pay Later'), 'description' => 'if true - allows the user to send payment directly to the org later', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', @@ -581,6 +587,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Allow Partial Payment'), 'description' => 'is partial payment enabled for this online contribution page', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', @@ -627,6 +634,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Allow Other Amounts'), 'description' => 'if true, page will include an input text field where user can enter their own amount', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', @@ -731,6 +739,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Send email Receipt'), 'description' => 'if true, receipt is automatically emailed to contact on success', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', @@ -930,6 +939,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is billing block required'), 'description' => 'if true - billing block is required for online contribution page', + 'default' => '0', 'table_name' => 'civicrm_contribution_page', 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', diff --git a/civicrm/CRM/Contribute/DAO/ContributionRecur.php b/civicrm/CRM/Contribute/DAO/ContributionRecur.php index 1f1650edad7d25876b316d710fdb804cd535cbaf..c27f63c0044d09fe55981deb525b156eb756a0e3 100644 --- a/civicrm/CRM/Contribute/DAO/ContributionRecur.php +++ b/civicrm/CRM/Contribute/DAO/ContributionRecur.php @@ -508,6 +508,7 @@ class CRM_Contribute_DAO_ContributionRecur extends CRM_Core_DAO { 'headerPattern' => '', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contribution_recur', 'entity' => 'ContributionRecur', 'bao' => 'CRM_Contribute_BAO_ContributionRecur', @@ -549,6 +550,7 @@ class CRM_Contribute_DAO_ContributionRecur extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Number of Failures'), 'description' => 'Number of failed charge attempts since last success. Business rule could be set to deactivate on more than x failures.', + 'default' => '0', 'table_name' => 'civicrm_contribution_recur', 'entity' => 'ContributionRecur', 'bao' => 'CRM_Contribute_BAO_ContributionRecur', @@ -576,6 +578,7 @@ class CRM_Contribute_DAO_ContributionRecur extends CRM_Core_DAO { 'title' => ts('Auto Renew'), 'description' => 'Some systems allow contributor to set a number of installments - but then auto-renew the subscription or commitment if they do not cancel.', 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contribution_recur', 'entity' => 'ContributionRecur', 'bao' => 'CRM_Contribute_BAO_ContributionRecur', diff --git a/civicrm/CRM/Contribute/DAO/ContributionSoft.php b/civicrm/CRM/Contribute/DAO/ContributionSoft.php index 977a00bea708ccaf79a4338ff3581bdf020eb303..88c9c47f0017f7472eee5507315b47093bba0319 100644 --- a/civicrm/CRM/Contribute/DAO/ContributionSoft.php +++ b/civicrm/CRM/Contribute/DAO/ContributionSoft.php @@ -233,6 +233,7 @@ class CRM_Contribute_DAO_ContributionSoft extends CRM_Core_DAO { 'name' => 'pcp_display_in_roll', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Soft Contribution Display on PCP'), + 'default' => '0', 'table_name' => 'civicrm_contribution_soft', 'entity' => 'ContributionSoft', 'bao' => 'CRM_Contribute_BAO_ContributionSoft', diff --git a/civicrm/CRM/Contribute/DAO/Premium.php b/civicrm/CRM/Contribute/DAO/Premium.php index f8981352c93006b0ca3986de1b167f9223387801..9ff1e31b313b464fb0df94d3ae8509cb96e574e4 100644 --- a/civicrm/CRM/Contribute/DAO/Premium.php +++ b/civicrm/CRM/Contribute/DAO/Premium.php @@ -169,6 +169,7 @@ class CRM_Contribute_DAO_Premium extends CRM_Core_DAO { 'title' => ts('Is Premium Active?'), 'description' => 'Is the Premiums feature enabled for this page?', 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_premiums', 'entity' => 'Premium', 'bao' => 'CRM_Contribute_BAO_Premium', diff --git a/civicrm/CRM/Contribute/DAO/Product.php b/civicrm/CRM/Contribute/DAO/Product.php index 9c1328102a727c9a82086b2d187bcb9b54a2f159..5799fa61a55d729f04fd110c79040420b6a9040a 100644 --- a/civicrm/CRM/Contribute/DAO/Product.php +++ b/civicrm/CRM/Contribute/DAO/Product.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contribute/Product.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:81e315b903d403508f379dc9c0fcf532) + * (GenCodeChecksum:a66a59f20355ce5773f427b85bd7bf0b) */ /** @@ -196,7 +196,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'required' => TRUE, 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'product_name' => [ @@ -213,7 +213,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'dataPattern' => '', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 1, ], 'description' => [ @@ -223,7 +223,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'description' => 'Optional description of the product/premium.', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 1, ], 'sku' => [ @@ -239,7 +239,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'dataPattern' => '', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'options' => [ @@ -249,7 +249,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'description' => 'Store comma-delimited list of color, size, etc. options for the product.', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 1, ], 'image' => [ @@ -261,7 +261,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'size' => CRM_Utils_Type::HUGE, 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'thumbnail' => [ @@ -273,7 +273,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'size' => CRM_Utils_Type::HUGE, 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'price' => [ @@ -287,7 +287,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { ], 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'currency' => [ @@ -300,7 +300,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'default' => 'NULL', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, 'html' => [ 'type' => 'Select', @@ -320,7 +320,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'default' => 'NULL', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, 'FKClassName' => 'CRM_Financial_DAO_FinancialType', 'pseudoconstant' => [ @@ -340,7 +340,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { ], 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'cost' => [ @@ -354,7 +354,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { ], 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'is_active' => [ @@ -365,7 +365,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'required' => TRUE, 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'period_type' => [ @@ -379,7 +379,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'default' => 'rolling', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, 'html' => [ 'type' => 'Select', @@ -396,7 +396,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'default' => '0101', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'duration_unit' => [ @@ -408,7 +408,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'default' => 'year', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, 'html' => [ 'type' => 'Select', @@ -424,7 +424,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'description' => 'Number of units for total duration of subscription, service, membership (e.g. 12 Months).', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], 'frequency_unit' => [ @@ -437,7 +437,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'default' => 'month', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, 'html' => [ 'type' => 'Select', @@ -453,7 +453,7 @@ class CRM_Contribute_DAO_Product extends CRM_Core_DAO { 'description' => 'Number of units for delivery frequency of subscription, service, membership (e.g. every 3 Months).', 'table_name' => 'civicrm_product', 'entity' => 'Product', - 'bao' => 'CRM_Contribute_DAO_Product', + 'bao' => 'CRM_Contribute_BAO_Product', 'localizable' => 0, ], ]; diff --git a/civicrm/CRM/Contribute/Exception/CheckLineItemsException.php b/civicrm/CRM/Contribute/Exception/CheckLineItemsException.php new file mode 100644 index 0000000000000000000000000000000000000000..c1c0d3a9142746b47f267c38e00c1f7196065a4e --- /dev/null +++ b/civicrm/CRM/Contribute/Exception/CheckLineItemsException.php @@ -0,0 +1,13 @@ +<?php + +/** + * Class CRM_Contribute_Exception_CheckLineItemsException + */ +class CRM_Contribute_Exception_CheckLineItemsException extends API_Exception { + const LINE_ITEM_DIFFERRING_TOTAL_EXCEPTON_MSG = "Line item total doesn't match with total amount."; + + public function __construct($message = self::LINE_ITEM_DIFFERRING_TOTAL_EXCEPTON_MSG, $error_code = 0, array $extraParams = [], $previous = NULL) { + parent::__construct($message, $error_code, $extraParams, $previous); + } + +} diff --git a/civicrm/CRM/Contribute/Form/AdditionalInfo.php b/civicrm/CRM/Contribute/Form/AdditionalInfo.php index d279d644e109ad92270bab31b114e05f96266cfb..33bf7bb1968533bba838179e9b02134069cd7770 100644 --- a/civicrm/CRM/Contribute/Form/AdditionalInfo.php +++ b/civicrm/CRM/Contribute/Form/AdditionalInfo.php @@ -209,7 +209,7 @@ class CRM_Contribute_Form_AdditionalInfo { ); $productDetails = array(); - CRM_Contribute_BAO_ManagePremiums::retrieve($premiumParams, $productDetails); + CRM_Contribute_BAO_Product::retrieve($premiumParams, $productDetails); $dao->financial_type_id = CRM_Utils_Array::value('financial_type_id', $productDetails); if (!empty($options[$selectedProductID])) { $dao->product_option = $options[$selectedProductID][$selectedProductOptionID]; diff --git a/civicrm/CRM/Contribute/Form/Contribution/Main.php b/civicrm/CRM/Contribute/Form/Contribution/Main.php index 89b92fbf3e98710b2fdce7061f66ad4be69f0ce5..4a302b82b70a19e761745512bccbaa737e23d24a 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Main.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Main.php @@ -302,6 +302,15 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->buildComponentForm($this->_id, $this); } + if (count($this->_paymentProcessors) >= 1 && !isset($this->_paymentProcessors[0]) && !$this->get_template_vars("isCaptcha") && $this->hasToAddForcefully()) { + if (!$this->_userID) { + $this->enableCaptchaOnForm(); + } + else { + $this->displayCaptchaWarning(); + } + } + // Build payment processor form CRM_Core_Payment_ProcessorForm::buildQuickForm($this); @@ -554,7 +563,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $form->add('checkbox', 'is_recur', ts('I want to contribute this amount'), NULL); if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { - $form->add('text', 'frequency_interval', ts('Every'), $attributes['frequency_interval']); + $form->add('text', 'frequency_interval', ts('Every'), $attributes['frequency_interval'] + ['aria-label' => ts('Every')]); $form->addRule('frequency_interval', ts('Frequency must be a whole number (EXAMPLE: Every 3 months).'), 'integer'); } else { @@ -595,7 +604,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } } } - $frequencyUnit = &$form->add('select', 'frequency_unit', NULL, $units); + $frequencyUnit = &$form->addElement('select', 'frequency_unit', NULL, $units, ['aria-label' => ts('Frequency Unit')]); } // FIXME: Ideally we should freeze select box if there is only diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php index 561adfe00d4d0c61d90ce67c8da0452f54ded010..ec174f47baa4e70501a4b8640ffb976714c02e54 100644 --- a/civicrm/CRM/Contribute/Form/ContributionBase.php +++ b/civicrm/CRM/Contribute/Form/ContributionBase.php @@ -777,14 +777,43 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { } if ($addCaptcha && !$viewOnly) { - $captcha = CRM_Utils_ReCAPTCHA::singleton(); - $captcha->add($this); - $this->assign('isCaptcha', TRUE); + $this->enableCaptchaOnForm(); } } } } + /** + * Enable ReCAPTCHA on Contribution form + */ + protected function enableCaptchaOnForm() { + $captcha = CRM_Utils_ReCAPTCHA::singleton(); + if ($captcha->hasSettingsAvailable()) { + $captcha->add($this); + $this->assign('isCaptcha', TRUE); + } + } + + /** + * Display ReCAPTCHA warning on Contribution form + */ + protected function displayCaptchaWarning() { + if (CRM_Core_Permission::check("administer CiviCRM")) { + $captcha = CRM_Utils_ReCAPTCHA::singleton(); + if (!$captcha->hasSettingsAvailable()) { + $this->assign('displayCaptchaWarning', TRUE); + } + } + } + + /** + * Check if ReCAPTCHA has to be added on Contribution form forcefully. + */ + protected function hasToAddForcefully() { + $captcha = CRM_Utils_ReCAPTCHA::singleton(); + return $captcha->hasToAddForcefully(); + } + /** * Add onbehalf/honoree profile fields and native module fields. * diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php b/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php index cf3b8055157e5cb1f705a68c7720e239e25b08fb..7191085d864bda49fa175a25f2490953bd0606aa 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/AddProduct.php @@ -229,15 +229,12 @@ class CRM_Contribute_Form_ContributionPage_AddProduct extends CRM_Contribute_For $urlParams = 'civicrm/admin/contribute/premium'; if ($this->_action & CRM_Core_Action::PREVIEW) { - $session = CRM_Core_Session::singleton(); $url = CRM_Utils_System::url($urlParams, 'reset=1&action=update&id=' . $this->_id); - $single = $session->get('singleForm'); CRM_Utils_System::redirect($url); return; } if ($this->_action & CRM_Core_Action::DELETE) { - $session = CRM_Core_Session::singleton(); $url = CRM_Utils_System::url($urlParams, 'reset=1&action=update&id=' . $this->_id); $dao = new CRM_Contribute_DAO_PremiumsProduct(); $dao->id = $this->_pid; @@ -246,7 +243,6 @@ class CRM_Contribute_Form_ContributionPage_AddProduct extends CRM_Contribute_For CRM_Utils_System::redirect($url); } else { - $session = CRM_Core_Session::singleton(); $url = CRM_Utils_System::url($urlParams, 'reset=1&action=update&id=' . $this->_id); if ($this->_pid) { $params['id'] = $this->_pid; diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php index fc6486c24fd91fde50f3b44ee9344c50f4f56519..ef174d9405260dbd712ee461f06617d9742ba60b 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php @@ -372,6 +372,11 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co $errors['pay_later_receipt'] = ts('Please enter the instructions to be sent to the contributor when they choose to \'pay later\'.'); } } + else { + if ($fields['amount_block_is_active'] && empty($fields['payment_processor'])) { + $errors['payment_processor'] = ts('You have listed fixed contribution options or selected a price set, but no payment option has been selected. Please select at least one payment processor and/or enable the pay later option.'); + } + } // don't allow price set w/ membership signup, CRM-5095 if ($priceSetId = CRM_Utils_Array::value('price_set_id', $fields)) { diff --git a/civicrm/CRM/Contribute/Form/ManagePremiums.php b/civicrm/CRM/Contribute/Form/ManagePremiums.php index 8ac350b9c6a80e53aab8a51b4ded0519c1857972..37bad336abd6c96128a022cba9244df3877626a6 100644 --- a/civicrm/CRM/Contribute/Form/ManagePremiums.php +++ b/civicrm/CRM/Contribute/Form/ManagePremiums.php @@ -50,8 +50,7 @@ class CRM_Contribute_Form_ManagePremiums extends CRM_Contribute_Form { $defaults = parent::setDefaultValues(); if ($this->_id) { $params = array('id' => $this->_id); - CRM_Contribute_BAO_ManagePremiums::retrieve($params, $tempDefaults); - $imageUrl = (isset($tempDefaults['image'])) ? $tempDefaults['image'] : ""; + CRM_Contribute_BAO_Product::retrieve($params, $tempDefaults); if (isset($tempDefaults['image']) && isset($tempDefaults['thumbnail'])) { $defaults['imageUrl'] = $tempDefaults['image']; $defaults['thumbnailUrl'] = $tempDefaults['thumbnail']; @@ -272,7 +271,15 @@ class CRM_Contribute_Form_ManagePremiums extends CRM_Contribute_Form { // If deleting, then only delete and skip the rest of the post-processing if ($this->_action & CRM_Core_Action::DELETE) { - CRM_Contribute_BAO_ManagePremiums::del($this->_id); + try { + CRM_Contribute_BAO_Product::del($this->_id); + } + catch (CRM_Core_Exception $e) { + $message = ts("This Premium is linked to an <a href='%1'>Online Contribution page</a>. Please remove it before deleting this Premium.", array(1 => CRM_Utils_System::url('civicrm/admin/contribute', 'reset=1'))); + CRM_Core_Session::setStatus($message, ts('Cannot delete Premium'), 'error'); + CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm/admin/contribute/managePremiums', 'reset=1&action=browse')); + return; + } CRM_Core_Session::setStatus( ts('Selected Premium Product type has been deleted.'), ts('Deleted'), 'info'); @@ -287,15 +294,15 @@ class CRM_Contribute_Form_ManagePremiums extends CRM_Contribute_Form { $params[$field] = CRM_Utils_Rule::cleanMoney($params[$field]); } - $ids = array(); + // If we're updating, we need to pass in the premium product Id if ($this->_action & CRM_Core_Action::UPDATE) { - $ids['premium'] = $this->_id; + $params['id'] = $this->_id; } $this->_processImages($params); - // Save to database - $premium = CRM_Contribute_BAO_ManagePremiums::add($params, $ids); + // Save the premium product to database + $premium = CRM_Contribute_BAO_Product::create($params); CRM_Core_Session::setStatus( ts("The Premium '%1' has been saved.", array(1 => $premium->name)), diff --git a/civicrm/CRM/Contribute/Page/ManagePremiums.php b/civicrm/CRM/Contribute/Page/ManagePremiums.php index d4abc4dcd014775bcd98dc11a43f218eeee01991..462e8b33ebf3df8359c02091bec21e746f3f24f9 100644 --- a/civicrm/CRM/Contribute/Page/ManagePremiums.php +++ b/civicrm/CRM/Contribute/Page/ManagePremiums.php @@ -52,7 +52,7 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic { * Classname of BAO. */ public function getBAOName() { - return 'CRM_Contribute_BAO_ManagePremiums'; + return 'CRM_Contribute_BAO_Product'; } /** @@ -150,10 +150,9 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic { 'Premium', $dao->id ); - //Financial Type + // Financial Type if (!empty($dao->financial_type_id)) { - require_once 'CRM/Core/DAO.php'; - $premiums[$dao->id]['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $dao->financial_type_id, 'name'); + $premiums[$dao->id]['financial_type'] = CRM_Core_PseudoConstant::getLabel('CRM_Financial_BAO_FinancialType', 'financial_type', $dao->financial_type_id); } } $this->assign('rows', $premiums); diff --git a/civicrm/CRM/Contribute/Page/Premium.php b/civicrm/CRM/Contribute/Page/Premium.php index 3a61d21ed0dc48929179a425479387bdf9014460..0028036acbc9ccd7cdc051dda5de8a72295719bf 100644 --- a/civicrm/CRM/Contribute/Page/Premium.php +++ b/civicrm/CRM/Contribute/Page/Premium.php @@ -130,45 +130,45 @@ class CRM_Contribute_Page_Premium extends CRM_Core_Page_Basic { $pageID = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE, 0 ); - $dao = new CRM_Contribute_DAO_Premium(); - $dao->entity_table = 'civicrm_contribution_page'; - $dao->entity_id = $pageID; - $dao->find(TRUE); - $premiumID = $dao->id; + $premiumDao = new CRM_Contribute_DAO_Premium(); + $premiumDao->entity_table = 'civicrm_contribution_page'; + $premiumDao->entity_id = $pageID; + $premiumDao->find(TRUE); + $premiumID = $premiumDao->id; $this->assign('products', FALSE); $this->assign('id', $pageID); if (!$premiumID) { return; } - $dao = new CRM_Contribute_DAO_PremiumsProduct(); - $dao->premiums_id = $premiumID; - $dao->orderBy('weight'); - $dao->find(); + $premiumsProductDao = new CRM_Contribute_DAO_PremiumsProduct(); + $premiumsProductDao->premiums_id = $premiumID; + $premiumsProductDao->orderBy('weight'); + $premiumsProductDao->find(); - while ($dao->fetch()) { + while ($premiumsProductDao->fetch()) { $productDAO = new CRM_Contribute_DAO_Product(); - $productDAO->id = $dao->product_id; + $productDAO->id = $premiumsProductDao->product_id; $productDAO->is_active = 1; if ($productDAO->find(TRUE)) { $premiums[$productDAO->id] = array(); - $premiums[$productDAO->id]['weight'] = $dao->weight; + $premiums[$productDAO->id]['weight'] = $premiumsProductDao->weight; CRM_Core_DAO::storeValues($productDAO, $premiums[$productDAO->id]); $action = array_sum(array_keys($this->links())); - $premiums[$dao->product_id]['action'] = CRM_Core_Action::formLink(self::links(), $action, - array('id' => $pageID, 'pid' => $dao->id), + $premiums[$premiumsProductDao->product_id]['action'] = CRM_Core_Action::formLink(self::links(), $action, + array('id' => $pageID, 'pid' => $premiumsProductDao->id), ts('more'), FALSE, 'premium.contributionpage.row', 'Premium', - $dao->id + $premiumsProductDao->id ); - //Financial Type - if (!empty($dao->financial_type_id)) { - $premiums[$productDAO->id]['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $dao->financial_type_id, 'name'); + // Financial Type + if (!empty($premiumsProductDao->financial_type_id)) { + $premiums[$productDAO->id]['financial_type'] = CRM_Core_PseudoConstant::getLabel('CRM_Financial_BAO_FinancialType', 'financial_type', $premiumsProductDao->financial_type_id); } } } diff --git a/civicrm/CRM/Contribute/Page/Tab.php b/civicrm/CRM/Contribute/Page/Tab.php index b5c20a9e0c57449eff850f1ec1d539143d154db0..fa80f7d728fd7f3ab686a62d407bf8ed63e08c96 100644 --- a/civicrm/CRM/Contribute/Page/Tab.php +++ b/civicrm/CRM/Contribute/Page/Tab.php @@ -158,7 +158,9 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { if ($this->_contactId) { $displayName = CRM_Contact_BAO_Contact::displayName($this->_contactId); $this->assign('displayName', $displayName); - $this->ajaxResponse['tabCount'] = CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId); + $tabCount = CRM_Contact_BAO_Contact::getCountComponent('contribution', $this->_contactId); + $this->assign('tabCount', $tabCount); + $this->ajaxResponse['tabCount'] = $tabCount; } } @@ -166,13 +168,14 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { * Get all the recurring contribution information and assign to the template */ private function addRecurringContributionsBlock() { - $activeContributions = $this->getActiveRecurringContributions(); - $inactiveRecurringContributions = $this->getInactiveRecurringContributions(); + list($activeContributions, $activeContributionsCount) = $this->getActiveRecurringContributions(); + list($inactiveRecurringContributions, $inactiveContributionsCount) = $this->getInactiveRecurringContributions(); if (!empty($activeContributions) || !empty($inactiveRecurringContributions)) { // assign vars to templates $this->assign('action', $this->_action); $this->assign('activeRecurRows', $activeContributions); + $this->assign('contributionRecurCount', $activeContributionsCount + $inactiveContributionsCount); $this->assign('inactiveRecurRows', $inactiveRecurringContributions); $this->assign('recur', TRUE); } @@ -189,7 +192,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { $contributionRecurResult = civicrm_api3('ContributionRecur', 'get', array( 'contact_id' => $this->_contactId, 'contribution_status_id' => array('NOT IN' => CRM_Contribute_BAO_ContributionRecur::getInactiveStatuses()), - 'options' => array('limit' => 0, 'sort' => 'start_date ASC'), + 'options' => ['limit' => 0, 'sort' => 'is_test, start_date DESC'], )); $recurContributions = CRM_Utils_Array::value('values', $contributionRecurResult); } @@ -211,7 +214,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { $contributionRecurResult = civicrm_api3('ContributionRecur', 'get', array( 'contact_id' => $this->_contactId, 'contribution_status_id' => array('IN' => CRM_Contribute_BAO_ContributionRecur::getInactiveStatuses()), - 'options' => array('limit' => 0, 'sort' => 'start_date ASC'), + 'options' => ['limit' => 0, 'sort' => 'is_test, start_date DESC'], )); $recurContributions = CRM_Utils_Array::value('values', $contributionRecurResult); } @@ -228,11 +231,16 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { * @return mixed */ private function buildRecurringContributionsArray($recurContributions) { + $liveRecurringContributionCount = 0; foreach ($recurContributions as $recurId => $recurDetail) { $action = array_sum(array_keys($this->recurLinks($recurId))); // no action allowed if it's not active $recurContributions[$recurId]['is_active'] = (!CRM_Contribute_BAO_Contribution::isContributionStatusNegative($recurDetail['contribution_status_id'])); + if (empty($recurDetail['is_test'])) { + $liveRecurringContributionCount++; + } + // Get the name of the payment processor if (!empty($recurDetail['payment_processor_id'])) { $recurContributions[$recurId]['payment_processor'] = CRM_Financial_BAO_PaymentProcessor::getPaymentProcessorName($recurDetail['payment_processor_id']); @@ -265,7 +273,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { } } - return $recurContributions; + return [$recurContributions, $liveRecurringContributionCount]; } /** @@ -392,8 +400,6 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { $qfKey = NULL; } - $session = CRM_Core_Session::singleton(); - switch ($context) { case 'user': $url = CRM_Utils_System::url('civicrm/user', 'reset=1'); diff --git a/civicrm/CRM/Core/BAO/Cache.php b/civicrm/CRM/Core/BAO/Cache.php index ce1d63ede35a9a3106ea2f10f13963330fc5645d..d1f97f63f661a483becb6e05016fece69d483e3c 100644 --- a/civicrm/CRM/Core/BAO/Cache.php +++ b/civicrm/CRM/Core/BAO/Cache.php @@ -73,7 +73,8 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache { $argString = "CRM_CT_{$group}_{$path}_{$componentID}"; if (!array_key_exists($argString, self::$_cache)) { $cache = CRM_Utils_Cache::singleton(); - self::$_cache[$argString] = $cache->get(self::cleanKey($argString)); + $cleanKey = self::cleanKey($argString); + self::$_cache[$argString] = $cache->get($cleanKey); if (!self::$_cache[$argString]) { $table = self::getTableName(); $where = self::whereCache($group, $path, $componentID); @@ -81,7 +82,7 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache { $data = $rawData ? self::decode($rawData) : NULL; self::$_cache[$argString] = $data; - $cache->set(self::cleanKey($argString), self::$_cache[$argString]); + $cache->set($cleanKey, self::$_cache[$argString]); } } return self::$_cache[$argString]; @@ -106,7 +107,8 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache { $argString = "CRM_CT_CI_{$group}_{$componentID}"; if (!array_key_exists($argString, self::$_cache)) { $cache = CRM_Utils_Cache::singleton(); - self::$_cache[$argString] = $cache->get(self::cleanKey($argString)); + $cleanKey = self::cleanKey($argString); + self::$_cache[$argString] = $cache->get($cleanKey); if (!self::$_cache[$argString]) { $table = self::getTableName(); $where = self::whereCache($group, NULL, $componentID); @@ -119,7 +121,7 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache { $dao->free(); self::$_cache[$argString] = $result; - $cache->set(self::cleanKey($argString), self::$_cache[$argString]); + $cache->set($cleanKey, self::$_cache[$argString]); } } @@ -448,7 +450,7 @@ class CRM_Core_BAO_Cache extends CRM_Core_DAO_Cache { return $escape . md5($key); } - $r = preg_replace_callback(';[^A-Za-z0-9_\. ];', function($m) use ($escape) { + $r = preg_replace_callback(';[^A-Za-z0-9_\.];', function($m) use ($escape) { return $escape . dechex(ord($m[0])); }, $key); diff --git a/civicrm/CRM/Core/BAO/ConfigSetting.php b/civicrm/CRM/Core/BAO/ConfigSetting.php index bb5340bbec4ab108cc6bd7687128cfe81121e25d..4b5f3111e80fdc882809dc02ea6a01ebd5c1f53e 100644 --- a/civicrm/CRM/Core/BAO/ConfigSetting.php +++ b/civicrm/CRM/Core/BAO/ConfigSetting.php @@ -96,7 +96,7 @@ class CRM_Core_BAO_ConfigSetting { $urlVar = 'task'; } - if ($isUpgrade && CRM_Core_DAO::checkFieldExists('civicrm_domain', 'config_backend')) { + if ($isUpgrade && CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_domain', 'config_backend')) { $domain->selectAdd('config_backend'); } else { diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php index 554eb94dc9ea141e0178b67a996f8da24a37452a..8dd1a491fc3acb6a9f5d95e0bd2cdbe26faa3693 100644 --- a/civicrm/CRM/Core/BAO/CustomField.php +++ b/civicrm/CRM/Core/BAO/CustomField.php @@ -230,6 +230,8 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $optionGroup->name = "{$columnName}_" . date('YmdHis'); $optionGroup->title = $params['label']; $optionGroup->is_active = 1; + // Don't set reserved as it's not a built-in option group and may be useful for other custom fields. + $optionGroup->is_reserved = 0; $optionGroup->data_type = $dataType; $optionGroup->save(); $params['option_group_id'] = $optionGroup->id; @@ -400,6 +402,9 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $this->find(TRUE); } + // This will hold the list of options in format key => label + $options = []; + if (!empty($this->option_group_id)) { $options = CRM_Core_OptionGroup::valuesByID( $this->option_group_id, @@ -419,9 +424,6 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { elseif ($this->data_type === 'Boolean') { $options = $context == 'validate' ? array(0, 1) : CRM_Core_SelectValues::boolean(); } - else { - return FALSE; - } CRM_Utils_Hook::customFieldOptions($this->id, $options, FALSE); CRM_Utils_Hook::fieldOptions($this->getEntity(), "custom_{$this->id}", $options, array('context' => $context)); return $options; @@ -2030,6 +2032,8 @@ AND cf.id = %1"; /** * Get custom option groups. * + * @deprecated Use the API OptionGroup.get + * * @param array $includeFieldIds * Ids of custom fields for which option groups must be included. * diff --git a/civicrm/CRM/Core/BAO/CustomValueTable.php b/civicrm/CRM/Core/BAO/CustomValueTable.php index 9455b06a4fa3cabc91315e1f4e16d0858aabd5d6..73a431065a898d73f8c5e80fee96c2db3ba9996d 100644 --- a/civicrm/CRM/Core/BAO/CustomValueTable.php +++ b/civicrm/CRM/Core/BAO/CustomValueTable.php @@ -637,6 +637,10 @@ AND cf.id IN ( $fieldIDList ) 'extends' => $dao->extends, ); + if (!empty($params['id'])) { + $cvParam['id'] = $params['id']; + } + if ($cvParam['type'] == 'File') { $cvParam['file_id'] = $fieldValue['value']; } diff --git a/civicrm/CRM/Core/BAO/FinancialTrxn.php b/civicrm/CRM/Core/BAO/FinancialTrxn.php index ccb7d9ca0a15b3333be4ebd5b2970bf7245e09b2..393714f3b424b97758d38d1b9858cb861158c707 100644 --- a/civicrm/CRM/Core/BAO/FinancialTrxn.php +++ b/civicrm/CRM/Core/BAO/FinancialTrxn.php @@ -48,7 +48,7 @@ class CRM_Core_BAO_FinancialTrxn extends CRM_Financial_DAO_FinancialTrxn { * @param array $params * (reference ) an assoc array of name/value pairs. * - * @return CRM_Core_BAO_FinancialTrxn + * @return CRM_Financial_DAO_FinancialTrxn */ public static function create($params) { $trxn = new CRM_Financial_DAO_FinancialTrxn(); @@ -116,7 +116,7 @@ class CRM_Core_BAO_FinancialTrxn extends CRM_Financial_DAO_FinancialTrxn { * @param array $defaults * (reference ) an assoc array to hold the flattened values. * - * @return CRM_Contribute_BAO_ContributionType + * @return \CRM_Financial_DAO_FinancialTrxn */ public static function retrieve(&$params, &$defaults) { $financialItem = new CRM_Financial_DAO_FinancialTrxn(); @@ -350,7 +350,6 @@ WHERE ceft.entity_id = %1"; $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); $toFinancialAccountType = !empty($params['isDeleted']) ? 'Premiums Inventory Account is' : 'Cost of Sales Account is'; $fromFinancialAccountType = !empty($params['isDeleted']) ? 'Cost of Sales Account is' : 'Premiums Inventory Account is'; - $accountRelationship = array_flip($accountRelationship); $financialtrxn = array( 'to_financial_account_id' => CRM_Contribute_PseudoConstant::getRelationalFinancialAccount($params['financial_type_id'], $toFinancialAccountType), 'from_financial_account_id' => CRM_Contribute_PseudoConstant::getRelationalFinancialAccount($params['financial_type_id'], $fromFinancialAccountType), @@ -369,7 +368,7 @@ WHERE ceft.entity_id = %1"; 'id' => $params['oldPremium']['product_id'], ); $productDetails = array(); - CRM_Contribute_BAO_ManagePremiums::retrieve($premiumParams, $productDetails); + CRM_Contribute_BAO_Product::retrieve($premiumParams, $productDetails); $params = array( 'cost' => CRM_Utils_Array::value('cost', $productDetails), 'currency' => CRM_Utils_Array::value('currency', $productDetails), @@ -387,7 +386,7 @@ WHERE ceft.entity_id = %1"; * @param array $params * To create trxn entries. * - * @return bool + * @return bool|void */ public static function recordFees($params) { $domainId = CRM_Core_Config::domainID(); @@ -482,7 +481,6 @@ WHERE ft.is_payment = 1 "; $ftTotalAmt = CRM_Core_DAO::singleValueQuery($sqlFtTotalAmt); - $value = 0; if (!$ftTotalAmt) { $ftTotalAmt = 0; } @@ -507,7 +505,7 @@ WHERE ft.is_payment = 1 /** * @param int $contributionId * - * @return array + * @return string */ public static function getTotalPayments($contributionId) { $statusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); @@ -531,7 +529,7 @@ WHERE ft.is_payment = 1 * @param array $contribution * @param array $params * - * @return CRM_Core_BAO_FinancialTrxn + * @return \CRM_Financial_DAO_FinancialTrxn */ public static function getPartialPaymentTrxn($contribution, $params) { $trxn = CRM_Contribute_BAO_Contribution::recordPartialPayment($contribution, $params); diff --git a/civicrm/CRM/Core/BAO/Navigation.php b/civicrm/CRM/Core/BAO/Navigation.php index 968bd1bb6e7ec39ae24b51d2568aa650f3c8891f..9b5f50a00c5350acea1780ec7773e962127e0607 100644 --- a/civicrm/CRM/Core/BAO/Navigation.php +++ b/civicrm/CRM/Core/BAO/Navigation.php @@ -70,6 +70,7 @@ class CRM_Core_BAO_Navigation extends 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['domain_id'] = CRM_Utils_Array::value('domain_id', $params, CRM_Core_Config::domainID()); } if (!isset($params['id']) || @@ -93,8 +94,6 @@ class CRM_Core_BAO_Navigation extends CRM_Core_DAO_Navigation { $navigation->copyValues($params); - $navigation->domain_id = CRM_Core_Config::domainID(); - $navigation->save(); return $navigation; } diff --git a/civicrm/CRM/Core/BAO/OptionGroup.php b/civicrm/CRM/Core/BAO/OptionGroup.php index fdc415b5cab5df557d057de5d33c57f22310d6d0..bbabcef8bd42e1fcc265e20d6e3a3159b2749375 100644 --- a/civicrm/CRM/Core/BAO/OptionGroup.php +++ b/civicrm/CRM/Core/BAO/OptionGroup.php @@ -88,16 +88,12 @@ class CRM_Core_BAO_OptionGroup extends CRM_Core_DAO_OptionGroup { * @return object */ public static function add(&$params, $ids = array()) { - if (empty($params['id'])) { - $params['id'] = CRM_Utils_Array::value('optionGroup', $ids); + if (empty($params['id']) && !empty($ids['optionGroup'])) { + CRM_Core_Error::deprecatedFunctionWarning('no $ids array'); + $params['id'] = $ids['optionGroup']; } - - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - - // action is taken depending upon the mode $optionGroup = new CRM_Core_DAO_OptionGroup(); $optionGroup->copyValues($params);; - $optionGroup->save(); return $optionGroup; } diff --git a/civicrm/CRM/Core/BAO/OptionValue.php b/civicrm/CRM/Core/BAO/OptionValue.php index cfb4b45dce48838c9d9b53720e6db4b26fd80fc7..98a331c6f4422edd1ea37c66fb8604af845005ec 100644 --- a/civicrm/CRM/Core/BAO/OptionValue.php +++ b/civicrm/CRM/Core/BAO/OptionValue.php @@ -243,6 +243,29 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue { $optionValue->id = $id; $optionValue->save(); CRM_Core_PseudoConstant::flush(); + + // Create relationship for payment intrument options + if (!empty($params['financial_account_id'])) { + $optionName = civicrm_api3('OptionGroup', 'getvalue', [ + 'return' => 'name', + 'id' => $params['option_group_id'], + ]); + // Only create relationship for payment intrument options + if ($optionName == 'payment_instrument') { + $relationTypeId = civicrm_api3('OptionValue', 'getvalue', [ + 'return' => 'value', + 'option_group_id' => 'account_relationship', + 'name' => 'Asset Account is', + ]); + $params = [ + 'entity_table' => 'civicrm_option_value', + 'entity_id' => $optionValue->id, + 'account_relationship' => $relationTypeId, + 'financial_account_id' => $params['financial_account_id'], + ]; + CRM_Financial_BAO_FinancialTypeAccount::add($params); + } + } return $optionValue; } diff --git a/civicrm/CRM/Core/BAO/PrevNextCache.php b/civicrm/CRM/Core/BAO/PrevNextCache.php index bf9cc0e8d477c0d294adb3fe8370c41cc30db12f..c3078140ac421ed494687bb7103e888e8127d6f3 100644 --- a/civicrm/CRM/Core/BAO/PrevNextCache.php +++ b/civicrm/CRM/Core/BAO/PrevNextCache.php @@ -438,164 +438,18 @@ AND c.created_date < date_sub( NOW( ), INTERVAL %2 day ) CRM_Core_DAO::executeQuery($sql, $params); } - /** - * Save checkbox selections. - * - * @param $cacheKey - * @param string $action - * @param array $cIds - * @param string $entity_table - */ - public static function markSelection($cacheKey, $action = 'unselect', $cIds = NULL, $entity_table = 'civicrm_contact') { - if (!$cacheKey) { - return; - } - $params = array(); - - $entity_whereClause = " AND entity_table = '{$entity_table}'"; - if ($cIds && $cacheKey && $action) { - if (is_array($cIds)) { - $cIdFilter = "(" . implode(',', $cIds) . ")"; - $whereClause = " -WHERE cacheKey LIKE %1 -AND (entity_id1 IN {$cIdFilter} OR entity_id2 IN {$cIdFilter}) -"; - } - else { - $whereClause = " -WHERE cacheKey LIKE %1 -AND (entity_id1 = %2 OR entity_id2 = %2) -"; - $params[2] = array("{$cIds}", 'Integer'); - } - if ($action == 'select') { - $whereClause .= "AND is_selected = 0"; - $sql = "UPDATE civicrm_prevnext_cache SET is_selected = 1 {$whereClause} {$entity_whereClause}"; - $params[1] = array("{$cacheKey}%", 'String'); - } - elseif ($action == 'unselect') { - $whereClause .= "AND is_selected = 1"; - $sql = "UPDATE civicrm_prevnext_cache SET is_selected = 0 {$whereClause} {$entity_whereClause}"; - $params[1] = array("%{$cacheKey}%", 'String'); - } - // default action is reseting - } - elseif (!$cIds && $cacheKey && $action == 'unselect') { - $sql = " -UPDATE civicrm_prevnext_cache -SET is_selected = 0 -WHERE cacheKey LIKE %1 AND is_selected = 1 - {$entity_whereClause} -"; - $params[1] = array("{$cacheKey}%", 'String'); - } - CRM_Core_DAO::executeQuery($sql, $params); - } /** * Get the selections. * - * @param string $cacheKey - * Cache key. - * @param string $action - * Action. - * $action : get - get only selection records - * getall - get all the records of the specified cache key - * @param string $entity_table - * Entity table. - * - * @return array|NULL - */ - public static function getSelection($cacheKey, $action = 'get', $entity_table = 'civicrm_contact') { - if (!$cacheKey) { - return NULL; - } - $params = array(); - - $entity_whereClause = " AND entity_table = '{$entity_table}'"; - if ($cacheKey && ($action == 'get' || $action == 'getall')) { - $actionGet = ($action == "get") ? " AND is_selected = 1 " : ""; - $sql = " -SELECT entity_id1, entity_id2 FROM civicrm_prevnext_cache -WHERE cacheKey LIKE %1 - $actionGet - $entity_whereClause -ORDER BY id -"; - $params[1] = array("{$cacheKey}%", 'String'); - - $contactIds = array($cacheKey => array()); - $cIdDao = CRM_Core_DAO::executeQuery($sql, $params); - while ($cIdDao->fetch()) { - if ($cIdDao->entity_id1 == $cIdDao->entity_id2) { - $contactIds[$cacheKey][$cIdDao->entity_id1] = 1; - } - } - return $contactIds; - } - } - - /** - * @return array - */ - public static function getSelectedContacts() { - $qfKey = CRM_Utils_Request::retrieve('qfKey', 'String'); - $cacheKey = "civicrm search {$qfKey}"; - $query = " -SELECT * -FROM civicrm_prevnext_cache -WHERE cacheKey LIKE %1 - AND is_selected=1 - AND cacheKey NOT LIKE %2 -"; - $params1[1] = array("{$cacheKey}%", 'String'); - $params1[2] = array("{$cacheKey}_alphabet%", 'String'); - $dao = CRM_Core_DAO::executeQuery($query, $params1); - - $val = array(); - while ($dao->fetch()) { - $val[] = $dao->data; - } - return $val; - } - - /** - * @param CRM_Core_Form $form - * @param array $params + * NOTE: This stub has been preserved because one extension in `universe` + * was referencing the function. * - * @return mixed + * @deprecated + * @see CRM_Core_PrevNextCache_Sql::getSelection() */ - public static function buildSelectedContactPager(&$form, &$params) { - $params['status'] = ts('Contacts %%StatusMessage%%'); - $params['csvString'] = NULL; - $params['buttonTop'] = 'PagerTopButton'; - $params['buttonBottom'] = 'PagerBottomButton'; - $params['rowCount'] = $form->get(CRM_Utils_Pager::PAGE_ROWCOUNT); - - if (!$params['rowCount']) { - $params['rowCount'] = CRM_Utils_Pager::ROWCOUNT; - } - - $qfKey = CRM_Utils_Request::retrieve('qfKey', 'String', $form); - $cacheKey = "civicrm search {$qfKey}"; - - $query = " -SELECT count(*) -FROM civicrm_prevnext_cache -WHERE cacheKey LIKE %1 - AND is_selected = 1 - AND cacheKey NOT LIKE %2 -"; - $params1[1] = array("{$cacheKey}%", 'String'); - $params1[2] = array("{$cacheKey}_alphabet%", 'String'); - $paramsTotal = CRM_Core_DAO::singleValueQuery($query, $params1); - $params['total'] = $paramsTotal; - $form->_pager = new CRM_Utils_Pager($params); - $form->assign_by_ref('pager', $form->_pager); - list($offset, $rowCount) = $form->_pager->getOffsetAndRowCount(); - $params['offset'] = $offset; - $params['rowCount1'] = $rowCount; - return $params; + public static function getSelection($cacheKey, $action = 'get') { + return Civi::service('prevnext')->getSelection($cacheKey, $action); } /** diff --git a/civicrm/CRM/Core/BAO/SchemaHandler.php b/civicrm/CRM/Core/BAO/SchemaHandler.php index ab58a8aa4b25f6efa0d77af505661b3d9e16430a..1a926044fff0f335e97ee941a7a9b18c43513b88 100644 --- a/civicrm/CRM/Core/BAO/SchemaHandler.php +++ b/civicrm/CRM/Core/BAO/SchemaHandler.php @@ -627,18 +627,17 @@ MODIFY {$columnName} varchar( $length ) * * @param string $tableName * @param string $columnName + * @param bool $i18nRewrite + * Whether to rewrite the query on multilingual setups. * * @return bool */ - public static function checkIfFieldExists($tableName, $columnName) { - $result = CRM_Core_DAO::executeQuery( - "SHOW COLUMNS FROM $tableName LIKE %1", - array(1 => array($columnName, 'String')) - ); - if ($result->fetch()) { - return TRUE; - } - return FALSE; + public static function checkIfFieldExists($tableName, $columnName, $i18nRewrite = TRUE) { + $query = "SHOW COLUMNS FROM $tableName LIKE '%1'"; + $dao = CRM_Core_DAO::executeQuery($query, [1 => [$columnName, 'Alphanumeric']], TRUE, NULL, FALSE, $i18nRewrite); + $result = $dao->fetch() ? TRUE : FALSE; + $dao->free(); + return $result; } /** diff --git a/civicrm/CRM/Core/BAO/UFField.php b/civicrm/CRM/Core/BAO/UFField.php index eaac6c3ff1aefebc73234a3d710a9f63d9a9c47e..e3ce7a46b557c23ee8dc17f1dcd5fe2450f9e860 100644 --- a/civicrm/CRM/Core/BAO/UFField.php +++ b/civicrm/CRM/Core/BAO/UFField.php @@ -896,7 +896,7 @@ SELECT id 'address_options', TRUE, NULL, TRUE ); - if (!$addressOptions['county']) { + if (empty($addressOptions['county'])) { unset($fields['Individual']['county'], $fields['Household']['county'], $fields['Organization']['county']); } diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php index 722fc4b9dfc6d05a8d8fce2ccc4c5902d788a8f1..4434d2b43952de7445a4a3feb75f899ce72b1254 100644 --- a/civicrm/CRM/Core/BAO/UFGroup.php +++ b/civicrm/CRM/Core/BAO/UFGroup.php @@ -1673,12 +1673,12 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) public static function getModuleUFGroup($moduleName = NULL, $count = 0, $skipPermission = TRUE, $op = CRM_Core_Permission::VIEW, $returnFields = NULL) { $selectFields = array('id', 'title', 'created_id', 'is_active', 'is_reserved', 'group_type'); - if (CRM_Core_DAO::checkFieldExists('civicrm_uf_group', 'description')) { + if (CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_uf_group', 'description')) { // CRM-13555, since description field was added later (4.4), and to avoid any problems with upgrade $selectFields[] = 'description'; } - if (CRM_Core_DAO::checkFieldExists('civicrm_uf_group', 'frontend_title')) { + if (CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_uf_group', 'frontend_title')) { $selectFields[] = 'frontend_title'; } diff --git a/civicrm/CRM/Core/Config/MagicMerge.php b/civicrm/CRM/Core/Config/MagicMerge.php index e9414cb783edcc0a6ca021b52bf8303ebb30adee..63f15a8a5896fb0990ce0ab774178f255349230b 100644 --- a/civicrm/CRM/Core/Config/MagicMerge.php +++ b/civicrm/CRM/Core/Config/MagicMerge.php @@ -173,6 +173,7 @@ class CRM_Core_Config_MagicMerge { 'recaptchaOptions' => array('setting'), 'recaptchaPublicKey' => array('setting'), 'recaptchaPrivateKey' => array('setting'), + 'forceRecaptcha' => array('setting'), 'replyTo' => array('setting'), 'secondDegRelPermissions' => array('setting'), 'smartGroupCacheTimeout' => array('setting'), diff --git a/civicrm/CRM/Core/DAO.php b/civicrm/CRM/Core/DAO.php index b4d07e75adcc492ef031b68b10ec5142603a7104..c6a495b61db5a68c2838401527d680e23c72e8a1 100644 --- a/civicrm/CRM/Core/DAO.php +++ b/civicrm/CRM/Core/DAO.php @@ -849,6 +849,9 @@ class CRM_Core_DAO extends DB_DataObject { /** * Check if there is a given column in a specific table. * + * @deprecated + * @see CRM_Core_BAO_SchemaHandler::checkIfFieldExists + * * @param string $tableName * @param string $columnName * @param bool $i18nRewrite @@ -858,16 +861,7 @@ class CRM_Core_DAO extends DB_DataObject { * true if exists, else false */ public static function checkFieldExists($tableName, $columnName, $i18nRewrite = TRUE) { - $query = " -SHOW COLUMNS -FROM $tableName -LIKE %1 -"; - $params = array(1 => array($columnName, 'String')); - $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, NULL, FALSE, $i18nRewrite); - $result = $dao->fetch() ? TRUE : FALSE; - $dao->free(); - return $result; + return CRM_Core_BAO_SchemaHandler::checkIfFieldExists($tableName, $columnName, $i18nRewrite); } /** @@ -1114,6 +1108,29 @@ FROM civicrm_domain return $result; } + /** + * Return the results as PHP generator. + * + * @param string $type + * Whether the generator yields 'dao' objects or 'array's. + */ + public function fetchGenerator($type = 'dao') { + while ($this->fetch()) { + switch ($type) { + case 'dao': + yield $this; + break; + + case 'array': + yield $this->toArray(); + break; + + default: + throw new \RuntimeException("Invalid record type ($type)"); + } + } + } + /** * Returns a singular value. * diff --git a/civicrm/CRM/Core/DAO/ActionLog.php b/civicrm/CRM/Core/DAO/ActionLog.php index 671e1542f8c7572b4d3827a7759fb46657978093..3958e5ff22f7746ee86b04ac929fe67138d5028b 100644 --- a/civicrm/CRM/Core/DAO/ActionLog.php +++ b/civicrm/CRM/Core/DAO/ActionLog.php @@ -200,6 +200,7 @@ class CRM_Core_DAO_ActionLog extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Error?'), 'description' => 'Was there any error sending the reminder?', + 'default' => '0', 'table_name' => 'civicrm_action_log', 'entity' => 'ActionLog', 'bao' => 'CRM_Core_BAO_ActionLog', diff --git a/civicrm/CRM/Core/DAO/ActionSchedule.php b/civicrm/CRM/Core/DAO/ActionSchedule.php index 20d7fde9d3b6ec14baf395a8b8b04f42520cd919..c7ee8457f1adc3bf7caff8d10eeaf4319df77c46 100644 --- a/civicrm/CRM/Core/DAO/ActionSchedule.php +++ b/civicrm/CRM/Core/DAO/ActionSchedule.php @@ -407,6 +407,7 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Start Action Offset'), 'description' => 'Reminder Interval.', + 'default' => '0', 'table_name' => 'civicrm_action_schedule', 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', @@ -458,6 +459,7 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'name' => 'is_repeat', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Repeat?'), + 'default' => '0', 'table_name' => 'civicrm_action_schedule', 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', @@ -486,6 +488,7 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Repetition Frequency Interval'), 'description' => 'Time interval for repeating the reminder.', + 'default' => '0', 'table_name' => 'civicrm_action_schedule', 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', @@ -514,6 +517,7 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('End Frequency Interval'), 'description' => 'Time interval till repeating the reminder.', + 'default' => '0', 'table_name' => 'civicrm_action_schedule', 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', diff --git a/civicrm/CRM/Core/DAO/Address.php b/civicrm/CRM/Core/DAO/Address.php index de15258fbf23a758abd3620459d8febb68a2f14e..877496a9d59f714cb42ec5a9703e8d7211efa1bf 100644 --- a/civicrm/CRM/Core/DAO/Address.php +++ b/civicrm/CRM/Core/DAO/Address.php @@ -311,6 +311,7 @@ class CRM_Core_DAO_Address extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Address Primary?'), 'description' => 'Is this the primary address.', + 'default' => '0', 'table_name' => 'civicrm_address', 'entity' => 'Address', 'bao' => 'CRM_Core_BAO_Address', @@ -324,6 +325,7 @@ class CRM_Core_DAO_Address extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Billing Address'), 'description' => 'Is this the billing address.', + 'default' => '0', 'table_name' => 'civicrm_address', 'entity' => 'Address', 'bao' => 'CRM_Core_BAO_Address', @@ -706,6 +708,7 @@ class CRM_Core_DAO_Address extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is manually geocoded'), 'description' => 'Is this a manually entered geo code', + 'default' => '0', 'table_name' => 'civicrm_address', 'entity' => 'Address', 'bao' => 'CRM_Core_BAO_Address', diff --git a/civicrm/CRM/Core/DAO/Country.php b/civicrm/CRM/Core/DAO/Country.php index 5823935f092fc4e10379665c191116591803dd84..82af44c6856b3bb6afd40458505d7461b3d63f42 100644 --- a/civicrm/CRM/Core/DAO/Country.php +++ b/civicrm/CRM/Core/DAO/Country.php @@ -227,6 +227,7 @@ class CRM_Core_DAO_Country extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Abbreviate Province?'), 'description' => 'Should state/province be displayed as abbreviation for contacts from this country?', + 'default' => '0', 'table_name' => 'civicrm_country', 'entity' => 'Country', 'bao' => 'CRM_Core_BAO_Country', diff --git a/civicrm/CRM/Core/DAO/CustomField.php b/civicrm/CRM/Core/DAO/CustomField.php index 24b86133fe260882d83008ba0271b36f1feb0896..fea2e7e4c7df6d3ed5dd65c7b2d4b45f872e2fc8 100644 --- a/civicrm/CRM/Core/DAO/CustomField.php +++ b/civicrm/CRM/Core/DAO/CustomField.php @@ -377,6 +377,7 @@ class CRM_Core_DAO_CustomField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Custom Field Is Required?'), 'description' => 'Is a value required for this property.', + 'default' => '0', 'table_name' => 'civicrm_custom_field', 'entity' => 'CustomField', 'bao' => 'CRM_Core_BAO_CustomField', @@ -387,6 +388,7 @@ class CRM_Core_DAO_CustomField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Allow Searching on Field?'), 'description' => 'Is this property searchable.', + 'default' => '0', 'table_name' => 'civicrm_custom_field', 'entity' => 'CustomField', 'bao' => 'CRM_Core_BAO_CustomField', @@ -397,6 +399,7 @@ class CRM_Core_DAO_CustomField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Search as a Range'), 'description' => 'Is this property range searchable.', + 'default' => '0', 'table_name' => 'civicrm_custom_field', 'entity' => 'CustomField', 'bao' => 'CRM_Core_BAO_CustomField', @@ -486,6 +489,7 @@ class CRM_Core_DAO_CustomField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Field is Viewable'), 'description' => 'Is this property set by PHP Code? A code field is viewable but not editable', + 'default' => '0', 'table_name' => 'civicrm_custom_field', 'entity' => 'CustomField', 'bao' => 'CRM_Core_BAO_CustomField', @@ -617,6 +621,7 @@ class CRM_Core_DAO_CustomField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Field Display'), 'description' => 'Should the multi-record custom field values be displayed in tab table listing', + 'default' => '0', 'table_name' => 'civicrm_custom_field', 'entity' => 'CustomField', 'bao' => 'CRM_Core_BAO_CustomField', diff --git a/civicrm/CRM/Core/DAO/CustomGroup.php b/civicrm/CRM/Core/DAO/CustomGroup.php index 93d82140553e3dd3207fc9a3e87752bb8ec6546a..9e014563bc5a985c4edc7c7e51bb2ecdbc535500 100644 --- a/civicrm/CRM/Core/DAO/CustomGroup.php +++ b/civicrm/CRM/Core/DAO/CustomGroup.php @@ -309,6 +309,7 @@ class CRM_Core_DAO_CustomGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Collapse Custom Group?'), 'description' => 'Will this group be in collapsed or expanded mode on initial display ?', + 'default' => '0', 'table_name' => 'civicrm_custom_group', 'entity' => 'CustomGroup', 'bao' => 'CRM_Core_BAO_CustomGroup', @@ -384,6 +385,7 @@ class CRM_Core_DAO_CustomGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Supports Multiple Records'), 'description' => 'Does this group hold multiple values?', + 'default' => '0', 'table_name' => 'civicrm_custom_group', 'entity' => 'CustomGroup', 'bao' => 'CRM_Core_BAO_CustomGroup', @@ -414,6 +416,7 @@ class CRM_Core_DAO_CustomGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Collapse Group Display'), 'description' => 'Will this group be in collapsed or expanded mode on advanced search display ?', + 'default' => '0', 'table_name' => 'civicrm_custom_group', 'entity' => 'CustomGroup', 'bao' => 'CRM_Core_BAO_CustomGroup', @@ -445,6 +448,7 @@ class CRM_Core_DAO_CustomGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Reserved Group?'), 'description' => 'Is this a reserved Custom Group?', + 'default' => '0', 'table_name' => 'civicrm_custom_group', 'entity' => 'CustomGroup', 'bao' => 'CRM_Core_BAO_CustomGroup', diff --git a/civicrm/CRM/Core/DAO/Dashboard.php b/civicrm/CRM/Core/DAO/Dashboard.php index 3974eab19e40d3595328a08a19f7b5592b7f3c1e..634e0f34124f9989b5c08af4ecccb57bccca1676 100644 --- a/civicrm/CRM/Core/DAO/Dashboard.php +++ b/civicrm/CRM/Core/DAO/Dashboard.php @@ -238,6 +238,7 @@ class CRM_Core_DAO_Dashboard extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Dashlet Active?'), 'description' => 'Is this dashlet active?', + 'default' => '0', 'table_name' => 'civicrm_dashboard', 'entity' => 'Dashboard', 'bao' => 'CRM_Core_BAO_Dashboard', @@ -248,6 +249,7 @@ class CRM_Core_DAO_Dashboard extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Dashlet Reserved?'), 'description' => 'Is this dashlet reserved?', + 'default' => '0', 'table_name' => 'civicrm_dashboard', 'entity' => 'Dashboard', 'bao' => 'CRM_Core_BAO_Dashboard', diff --git a/civicrm/CRM/Core/DAO/Email.php b/civicrm/CRM/Core/DAO/Email.php index 7abc05f434d1eb33d0c22641a7f4f6e593a6b0d9..9d7d24eba260e144da44d12bbb4309c4938c4bd7 100644 --- a/civicrm/CRM/Core/DAO/Email.php +++ b/civicrm/CRM/Core/DAO/Email.php @@ -209,6 +209,7 @@ class CRM_Core_DAO_Email extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Primary email'), 'description' => 'Is this the primary?', + 'default' => '0', 'table_name' => 'civicrm_email', 'entity' => 'Email', 'bao' => 'CRM_Core_BAO_Email', @@ -219,6 +220,7 @@ class CRM_Core_DAO_Email extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Billing Email?'), 'description' => 'Is this the billing?', + 'default' => '0', 'table_name' => 'civicrm_email', 'entity' => 'Email', 'bao' => 'CRM_Core_BAO_Email', @@ -234,6 +236,7 @@ class CRM_Core_DAO_Email extends CRM_Core_DAO { 'where' => 'civicrm_email.on_hold', 'headerPattern' => '', 'dataPattern' => '', + 'default' => '0', 'table_name' => 'civicrm_email', 'entity' => 'Email', 'bao' => 'CRM_Core_BAO_Email', @@ -252,6 +255,7 @@ class CRM_Core_DAO_Email extends CRM_Core_DAO { 'where' => 'civicrm_email.is_bulkmail', 'headerPattern' => '', 'dataPattern' => '', + 'default' => '0', 'table_name' => 'civicrm_email', 'entity' => 'Email', 'bao' => 'CRM_Core_BAO_Email', diff --git a/civicrm/CRM/Core/DAO/IM.php b/civicrm/CRM/Core/DAO/IM.php index dcdf67f176d88b5270a2f140e9dd4f99ffcc5ae1..35a1b01d9eb39f224f9070a3f3346f06a6bd1b07 100644 --- a/civicrm/CRM/Core/DAO/IM.php +++ b/civicrm/CRM/Core/DAO/IM.php @@ -190,6 +190,7 @@ class CRM_Core_DAO_IM extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is IM Primary?'), 'description' => 'Is this the primary IM for this contact and location.', + 'default' => '0', 'table_name' => 'civicrm_im', 'entity' => 'IM', 'bao' => 'CRM_Core_BAO_IM', @@ -200,6 +201,7 @@ class CRM_Core_DAO_IM extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is IM Billing?'), 'description' => 'Is this the billing?', + 'default' => '0', 'table_name' => 'civicrm_im', 'entity' => 'IM', 'bao' => 'CRM_Core_BAO_IM', diff --git a/civicrm/CRM/Core/DAO/MessageTemplate.php b/civicrm/CRM/Core/DAO/MessageTemplate.php index 93d2b0ec7ec3c55dcc5cd78689b601a5f737b31c..90beadc0aac7d9433d9843a84df6362cde8913b4 100644 --- a/civicrm/CRM/Core/DAO/MessageTemplate.php +++ b/civicrm/CRM/Core/DAO/MessageTemplate.php @@ -224,6 +224,7 @@ class CRM_Core_DAO_MessageTemplate extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Message Template is used for SMS?'), 'description' => 'Is this message template used for sms?', + 'default' => '0', 'table_name' => 'civicrm_msg_template', 'entity' => 'MessageTemplate', 'bao' => 'CRM_Core_BAO_MessageTemplate', diff --git a/civicrm/CRM/Core/DAO/OpenID.php b/civicrm/CRM/Core/DAO/OpenID.php index 90569e58f06923a2295c4503919ce202bde6ed9e..0033e3f37e27ade2aa238bc61f6326b9c74697d7 100644 --- a/civicrm/CRM/Core/DAO/OpenID.php +++ b/civicrm/CRM/Core/DAO/OpenID.php @@ -157,6 +157,7 @@ class CRM_Core_DAO_OpenID extends CRM_Core_DAO { 'title' => ts('Allowed to login?'), 'description' => 'Whether or not this user is allowed to login', 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_openid', 'entity' => 'OpenID', 'bao' => 'CRM_Core_BAO_OpenID', @@ -167,6 +168,7 @@ class CRM_Core_DAO_OpenID extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is OpenID Primary?'), 'description' => 'Is this the primary email for this contact and location.', + 'default' => '0', 'table_name' => 'civicrm_openid', 'entity' => 'OpenID', 'bao' => 'CRM_Core_BAO_OpenID', diff --git a/civicrm/CRM/Core/DAO/OptionGroup.php b/civicrm/CRM/Core/DAO/OptionGroup.php index aed6b23167534ad79eac467bc43f4df40c0ee90e..3f470ce1a5e3d55f61d1fc925942ccccf298b743 100644 --- a/civicrm/CRM/Core/DAO/OptionGroup.php +++ b/civicrm/CRM/Core/DAO/OptionGroup.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/OptionGroup.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:4f26b702ecd914e653257f0676896d87) + * (GenCodeChecksum:2fd99e11712c8619f29a79b062cf7612) */ /** @@ -168,6 +168,7 @@ class CRM_Core_DAO_OptionGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Option Group Is Reserved?'), 'description' => 'Is this a predefined system option group (i.e. it can not be deleted)?', + 'required' => TRUE, 'default' => '1', 'table_name' => 'civicrm_option_group', 'entity' => 'OptionGroup', @@ -179,6 +180,8 @@ class CRM_Core_DAO_OptionGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Option Group Is Active?'), 'description' => 'Is this option group active?', + 'required' => TRUE, + 'default' => '1', 'table_name' => 'civicrm_option_group', 'entity' => 'OptionGroup', 'bao' => 'CRM_Core_BAO_OptionGroup', @@ -189,6 +192,8 @@ class CRM_Core_DAO_OptionGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Option Group Is Locked'), 'description' => 'A lock to remove the ability to add new options via the UI.', + 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_option_group', 'entity' => 'OptionGroup', 'bao' => 'CRM_Core_BAO_OptionGroup', diff --git a/civicrm/CRM/Core/DAO/OptionValue.php b/civicrm/CRM/Core/DAO/OptionValue.php index 1875c7521312e24b5942404f12628c997a3cbc9c..dbf7059bb18280c8f0e52c33975fbf350fc376fc 100644 --- a/civicrm/CRM/Core/DAO/OptionValue.php +++ b/civicrm/CRM/Core/DAO/OptionValue.php @@ -286,6 +286,7 @@ class CRM_Core_DAO_OptionValue extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Option is Default?'), 'description' => 'Is this the default option for the group?', + 'default' => '0', 'table_name' => 'civicrm_option_value', 'entity' => 'OptionValue', 'bao' => 'CRM_Core_BAO_OptionValue', @@ -322,6 +323,7 @@ class CRM_Core_DAO_OptionValue extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Option is Header?'), 'description' => 'Is this row simply a display header? Expected usage is to render these as OPTGROUP tags within a SELECT field list of options?', + 'default' => '0', 'table_name' => 'civicrm_option_value', 'entity' => 'OptionValue', 'bao' => 'CRM_Core_BAO_OptionValue', @@ -332,6 +334,7 @@ class CRM_Core_DAO_OptionValue extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Option Is Reserved?'), 'description' => 'Is this a predefined system object?', + 'default' => '0', 'table_name' => 'civicrm_option_value', 'entity' => 'OptionValue', 'bao' => 'CRM_Core_BAO_OptionValue', diff --git a/civicrm/CRM/Core/DAO/Persistent.php b/civicrm/CRM/Core/DAO/Persistent.php index b6cdf47d6d46edada2895688dd04b8305ed4fa33..43954d583fa32521607331005cd80e70badca213 100644 --- a/civicrm/CRM/Core/DAO/Persistent.php +++ b/civicrm/CRM/Core/DAO/Persistent.php @@ -132,6 +132,7 @@ class CRM_Core_DAO_Persistent extends CRM_Core_DAO { 'title' => ts('Is Configuration?'), 'description' => 'Config Settings', 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_persistent', 'entity' => 'Persistent', 'bao' => 'CRM_Core_BAO_Persistent', diff --git a/civicrm/CRM/Core/DAO/Phone.php b/civicrm/CRM/Core/DAO/Phone.php index 013b416c940596d29224a4a594dd486785291805..660ca3f05276703975d18f3b733d91e917217c4d 100644 --- a/civicrm/CRM/Core/DAO/Phone.php +++ b/civicrm/CRM/Core/DAO/Phone.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Phone.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:661faad4886dd1a40784d465b906f447) + * (GenCodeChecksum:22802e5d7d8dfce93626004aaf6cd2e2) */ /** @@ -174,6 +174,7 @@ class CRM_Core_DAO_Phone extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Phone Primary?'), 'description' => 'Is this the primary phone for this contact and location.', + 'default' => '0', 'table_name' => 'civicrm_phone', 'entity' => 'Phone', 'bao' => 'CRM_Core_BAO_Phone', @@ -184,6 +185,7 @@ class CRM_Core_DAO_Phone extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Billing Phone'), 'description' => 'Is this the billing?', + 'default' => '0', 'table_name' => 'civicrm_phone', 'entity' => 'Phone', 'bao' => 'CRM_Core_BAO_Phone', @@ -256,6 +258,10 @@ class CRM_Core_DAO_Phone extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Phone Type'), 'description' => 'Which type of phone does this number belongs.', + 'export' => TRUE, + 'where' => 'civicrm_phone.phone_type_id', + 'headerPattern' => '', + 'dataPattern' => '', 'table_name' => 'civicrm_phone', 'entity' => 'Phone', 'bao' => 'CRM_Core_BAO_Phone', diff --git a/civicrm/CRM/Core/DAO/PrevNextCache.php b/civicrm/CRM/Core/DAO/PrevNextCache.php index 26a8d9196069417d0150eefa5860b143dc29f433..bc01e75e1c94aa855dd6001fdc924ce627906786 100644 --- a/civicrm/CRM/Core/DAO/PrevNextCache.php +++ b/civicrm/CRM/Core/DAO/PrevNextCache.php @@ -160,6 +160,7 @@ class CRM_Core_DAO_PrevNextCache extends CRM_Core_DAO { 'name' => 'is_selected', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Selected'), + 'default' => '0', 'table_name' => 'civicrm_prevnext_cache', 'entity' => 'PrevNextCache', 'bao' => 'CRM_Core_BAO_PrevNextCache', diff --git a/civicrm/CRM/Core/DAO/Tag.php b/civicrm/CRM/Core/DAO/Tag.php index df103628dad0611ecbc682594389cd188d960440..14160e2496ff18a8d748c03192dd33ab5411ea9f 100644 --- a/civicrm/CRM/Core/DAO/Tag.php +++ b/civicrm/CRM/Core/DAO/Tag.php @@ -194,6 +194,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'name' => 'is_reserved', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Reserved'), + 'default' => '0', 'table_name' => 'civicrm_tag', 'entity' => 'Tag', 'bao' => 'CRM_Core_BAO_Tag', @@ -203,6 +204,7 @@ class CRM_Core_DAO_Tag extends CRM_Core_DAO { 'name' => 'is_tagset', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Tagset'), + 'default' => '0', 'table_name' => 'civicrm_tag', 'entity' => 'Tag', 'bao' => 'CRM_Core_BAO_Tag', diff --git a/civicrm/CRM/Core/DAO/UFField.php b/civicrm/CRM/Core/DAO/UFField.php index bd5a61dab55b74c64325cd439f7650c9ba4b81cc..b560e442ed366c1f5a8e9d53b71d1d9a25a44130 100644 --- a/civicrm/CRM/Core/DAO/UFField.php +++ b/civicrm/CRM/Core/DAO/UFField.php @@ -253,6 +253,7 @@ class CRM_Core_DAO_UFField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Profile Is View Only'), 'description' => 'the field is view only and not editable in user forms.', + 'default' => '0', 'table_name' => 'civicrm_uf_field', 'entity' => 'UFField', 'bao' => 'CRM_Core_BAO_UFField', @@ -263,6 +264,7 @@ class CRM_Core_DAO_UFField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Profile Field Is Required'), 'description' => 'Is this field required when included in a user or registration form?', + 'default' => '0', 'table_name' => 'civicrm_uf_field', 'entity' => 'UFField', 'bao' => 'CRM_Core_BAO_UFField', @@ -324,6 +326,7 @@ class CRM_Core_DAO_UFField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Profile Field Is a Filter'), 'description' => 'Is this field included as a column in the selector table?', + 'default' => '0', 'table_name' => 'civicrm_uf_field', 'entity' => 'UFField', 'bao' => 'CRM_Core_BAO_UFField', @@ -334,6 +337,7 @@ class CRM_Core_DAO_UFField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Profile Field Is Searchable'), 'description' => 'Is this field included search form of profile?', + 'default' => '0', 'table_name' => 'civicrm_uf_field', 'entity' => 'UFField', 'bao' => 'CRM_Core_BAO_UFField', @@ -410,6 +414,7 @@ class CRM_Core_DAO_UFField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Profile Field Supports Multiple'), 'description' => 'Include in multi-record listing?', + 'default' => '0', 'table_name' => 'civicrm_uf_field', 'entity' => 'UFField', 'bao' => 'CRM_Core_BAO_UFField', diff --git a/civicrm/CRM/Core/DAO/UFGroup.php b/civicrm/CRM/Core/DAO/UFGroup.php index 53e1c18927dff6a9e826239e64fa5bfcb2a3056f..6605de613caac1533bdcb758dc10a628ed2bd542 100644 --- a/civicrm/CRM/Core/DAO/UFGroup.php +++ b/civicrm/CRM/Core/DAO/UFGroup.php @@ -397,6 +397,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Show Captcha On Profile'), 'description' => 'Should a CAPTCHA widget be included this Profile form.', + 'default' => '0', 'table_name' => 'civicrm_uf_group', 'entity' => 'UFGroup', 'bao' => 'CRM_Core_BAO_UFGroup', @@ -407,6 +408,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Map Profile'), 'description' => 'Do we want to map results from this profile.', + 'default' => '0', 'table_name' => 'civicrm_uf_group', 'entity' => 'UFGroup', 'bao' => 'CRM_Core_BAO_UFGroup', @@ -417,6 +419,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Show Edit Link?'), 'description' => 'Should edit link display in profile selector', + 'default' => '0', 'table_name' => 'civicrm_uf_group', 'entity' => 'UFGroup', 'bao' => 'CRM_Core_BAO_UFGroup', @@ -427,6 +430,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Show Link to CMS User'), 'description' => 'Should we display a link to the website profile in profile selector', + 'default' => '0', 'table_name' => 'civicrm_uf_group', 'entity' => 'UFGroup', 'bao' => 'CRM_Core_BAO_UFGroup', @@ -437,6 +441,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Update on Duplicate'), 'description' => 'Should we update the contact record if we find a duplicate', + 'default' => '0', 'table_name' => 'civicrm_uf_group', 'entity' => 'UFGroup', 'bao' => 'CRM_Core_BAO_UFGroup', @@ -459,6 +464,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Create CMS User?'), 'description' => 'Should we create a cms user for this profile ', + 'default' => '0', 'table_name' => 'civicrm_uf_group', 'entity' => 'UFGroup', 'bao' => 'CRM_Core_BAO_UFGroup', @@ -521,6 +527,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Include Proximity Search?'), 'description' => 'Should we include proximity search feature in this profile search form?', + 'default' => '0', 'table_name' => 'civicrm_uf_group', 'entity' => 'UFGroup', 'bao' => 'CRM_Core_BAO_UFGroup', diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php index abfbcdfcd44236ebd000ba53e94106db9beea29a..70e560494a7a23b1cf1d056d20073c3c42f9c2d5 100644 --- a/civicrm/CRM/Core/Form.php +++ b/civicrm/CRM/Core/Form.php @@ -1589,6 +1589,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { return $this->addEntityRef($name, $label, $props, $required); case 'Password': + $props['size'] = isset($props['size']) ? $props['size'] : 60; return $this->add('password', $name, $label, $props, $required); // Check datatypes of fields diff --git a/civicrm/CRM/Core/Form/EntityFormTrait.php b/civicrm/CRM/Core/Form/EntityFormTrait.php index 564edf6754e5b740a11149d9ccc30c0f6b75ae06..f0031490f3ed674c330a1fe953cae2f594b6775e 100644 --- a/civicrm/CRM/Core/Form/EntityFormTrait.php +++ b/civicrm/CRM/Core/Form/EntityFormTrait.php @@ -131,6 +131,47 @@ trait CRM_Core_Form_EntityFormTrait { } } + /** + * Get the defaults for the entity. + */ + protected function getEntityDefaults() { + $defaults = []; + if ($this->_action != CRM_Core_Action::DELETE && + $this->getEntityId() + ) { + $params = ['id' => $this->getEntityId()]; + $baoName = $this->_BAOName; + $baoName::retrieve($params, $defaults); + } + foreach ($this->entityFields as $fieldSpec) { + $value = CRM_Utils_Request::retrieveValue($fieldSpec['name'], $this->getValidationTypeForField($fieldSpec['name'])); + if ($value !== FALSE) { + $defaults[$fieldSpec['name']] = $value; + } + } + return $defaults; + } + + /** + * Get the validation rule to apply to a function. + * + * Alphanumeric is designed to always be safe & for now we just return + * that but in future we can use tighter rules for types like int, bool etc. + * + * @param string $fieldName + * + * @return string|int|bool + */ + protected function getValidationTypeForField($fieldName) { + switch ($this->metadata[$fieldName]['type']) { + case CRM_Utils_Type::T_BOOLEAN: + return 'Boolean'; + + default: + return 'Alphanumeric'; + } + } + /** * Set translated fields. * diff --git a/civicrm/CRM/Core/I18n/Schema.php b/civicrm/CRM/Core/I18n/Schema.php index 9d72908401ea76c739ae6a16bcad9dbc0ca11aac..71627d76d4b039d71cbf821889ec4b00944363b5 100644 --- a/civicrm/CRM/Core/I18n/Schema.php +++ b/civicrm/CRM/Core/I18n/Schema.php @@ -265,7 +265,7 @@ class CRM_Core_I18n_Schema { // add new columns foreach ($hash as $column => $type) { // CRM-7854: skip existing columns - if (CRM_Core_DAO::checkFieldExists($table, "{$column}_{$locale}", FALSE)) { + if (CRM_Core_BAO_SchemaHandler::checkIfFieldExists($table, "{$column}_{$locale}", FALSE)) { continue; } $queries[] = "ALTER TABLE {$table} ADD {$column}_{$locale} {$type}"; diff --git a/civicrm/CRM/Core/Menu.php b/civicrm/CRM/Core/Menu.php index c7c0904355069c8ce6dcc3d801dd0fb692196622..58c9904d061f38ced85e153df7c0604f2da16671 100644 --- a/civicrm/CRM/Core/Menu.php +++ b/civicrm/CRM/Core/Menu.php @@ -317,7 +317,7 @@ class CRM_Core_Menu { $menu->find(TRUE); if (!CRM_Core_Config::isUpgradeMode() || - CRM_Core_DAO::checkFieldExists('civicrm_menu', 'module_data', FALSE) + CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_menu', 'module_data', FALSE) ) { // Move unrecognized fields to $module_data. $module_data = array(); diff --git a/civicrm/CRM/Core/OptionValue.php b/civicrm/CRM/Core/OptionValue.php index 27a1a756f07ecc39e6806aafc53bdd793a6592bb..4b1e5105ba2b2dda714ed8aaacb07e107009e356 100644 --- a/civicrm/CRM/Core/OptionValue.php +++ b/civicrm/CRM/Core/OptionValue.php @@ -187,7 +187,7 @@ class CRM_Core_OptionValue { * * @param array $params * Array containing exported values from the invoking form. - * @param array $groupParams + * @param string $optionGroupName * Array containing group fields whose option-values is to retrieved/saved. * @param $action * @param int $optionValueID Has the id of the optionValue being edited, disabled ..etc. @@ -196,22 +196,17 @@ class CRM_Core_OptionValue { * @return CRM_Core_DAO_OptionValue * */ - public static function addOptionValue(&$params, &$groupParams, $action, $optionValueID) { + public static function addOptionValue(&$params, $optionGroupName, $action, $optionValueID) { $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); // checking if the group name with the given id or name (in $groupParams) exists - if (!empty($groupParams)) { - $config = CRM_Core_Config::singleton(); - $groupParams['is_active'] = 1; - $optionGroup = CRM_Core_BAO_OptionGroup::retrieve($groupParams, $defaults); - } + $groupParams = ['name' => $optionGroupName, 'is_active' => 1]; + $optionGroup = CRM_Core_BAO_OptionGroup::retrieve($groupParams, $defaults); - // if the corresponding group doesn't exist, create one, provided $groupParams has 'name' in it. + // if the corresponding group doesn't exist, create one. if (!$optionGroup->id) { - if ($groupParams['name']) { - $newOptionGroup = CRM_Core_BAO_OptionGroup::add($groupParams, $defaults); - $params['weight'] = 1; - $optionGroupID = $newOptionGroup->id; - } + $newOptionGroup = CRM_Core_BAO_OptionGroup::add($groupParams); + $params['weight'] = 1; + $optionGroupID = $newOptionGroup->id; } else { $optionGroupID = $optionGroup->id; diff --git a/civicrm/CRM/Core/Payment/PayPalIPN.php b/civicrm/CRM/Core/Payment/PayPalIPN.php index b058eb63f6c7e21aa6ce95bc1dac364904119d65..fa4f164a420f5b8798b214d847d3d4a59dbcb79d 100644 --- a/civicrm/CRM/Core/Payment/PayPalIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalIPN.php @@ -223,17 +223,14 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { throw new CRM_Core_Exception("Ignore all IPN payments that are not completed"); } - $contribution->contact_id = $ids['contact']; - $contribution->financial_type_id = $objects['contributionType']->id; - $contribution->contribution_page_id = $ids['contributionPage']; - $contribution->contribution_recur_id = $ids['contributionRecur']; - $contribution->receive_date = $now; - $contribution->currency = $objects['contribution']->currency; - $contribution->payment_instrument_id = $objects['contribution']->payment_instrument_id; - $contribution->amount_level = $objects['contribution']->amount_level; - $contribution->campaign_id = $objects['contribution']->campaign_id; - - $objects['contribution'] = &$contribution; + // In future moving to create pending & then complete, but this OK for now. + // Also consider accepting 'Failed' like other processors. + $input['contribution_status_id'] = $contributionStatuses['Completed']; + $input['original_contribution_id'] = $ids['contribution']; + $input['contribution_recur_id'] = $ids['contributionRecur']; + + civicrm_api3('Contribution', 'repeattransaction', $input); + return; } $this->single($input, $ids, $objects, @@ -333,23 +330,12 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $ids['onbehalf_dupe_alert'] = $this->retrieve('onBehalfDupeAlert', 'Integer', FALSE); } - $paymentProcessorID = $this->retrieve('processor_id', 'Integer', FALSE); - if (empty($paymentProcessorID)) { - $processorParams = array( - 'user_name' => $this->retrieve('business', 'String', FALSE), - 'payment_processor_type_id' => CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessorType', 'PayPal_Standard', 'id', 'name'), - 'is_test' => empty($input['is_test']) ? 0 : 1, - ); + $paymentProcessorID = self::getPayPalPaymentProcessorID($input, $ids); - $processorInfo = array(); - if (!CRM_Financial_BAO_PaymentProcessor::retrieve($processorParams, $processorInfo)) { - return FALSE; - } - $paymentProcessorID = $processorInfo['id']; - } + Civi::log()->debug('PayPalIPN: Received (ContactID: ' . $ids['contact'] . '; trxn_id: ' . $input['trxn_id'] . ').'); if (!$this->validateData($input, $ids, $objects, TRUE, $paymentProcessorID)) { - return FALSE; + return; } self::$_paymentProcessor = &$objects['paymentProcessor']; @@ -404,6 +390,64 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $input['fee_amount'] = $this->retrieve('mc_fee', 'Money', FALSE); $input['net_amount'] = $this->retrieve('settle_amount', 'Money', FALSE); $input['trxn_id'] = $this->retrieve('txn_id', 'String', FALSE); + + $paymentDate = $this->retrieve('payment_date', 'String', FALSE); + if (!empty($paymentDate)) { + $receiveDateTime = new DateTime($paymentDate); + $input['receive_date'] = $receiveDateTime->format('YmdHis'); + } + } + + + /** + * Gets PaymentProcessorID for PayPal + * + * @param array $input + * @param array $ids + * + * @return int + * @throws \CRM_Core_Exception + * @throws \CiviCRM_API3_Exception + */ + public function getPayPalPaymentProcessorID($input, $ids) { + // First we try and retrieve from POST params + $paymentProcessorID = $this->retrieve('processor_id', 'Integer', FALSE); + if (!empty($paymentProcessorID)) { + return $paymentProcessorID; + } + + // Then we try and get it from recurring contribution ID + if (!empty($ids['contributionRecur'])) { + $contributionRecur = civicrm_api3('ContributionRecur', 'getsingle', array( + 'id' => $ids['contributionRecur'], + 'return' => ['payment_processor_id'], + )); + if (!empty($contributionRecur['payment_processor_id'])) { + return $contributionRecur['payment_processor_id']; + } + } + + // This is an unreliable method as there could be more than one instance. + // Recommended approach is to use the civicrm/payment/ipn/xx url where xx is the payment + // processor id & the handleNotification function (which should call the completetransaction api & by-pass this + // entirely). The only thing the IPN class should really do is extract data from the request, validate it + // & call completetransaction or call fail? (which may not exist yet). + + Civi::log()->warning('Unreliable method used to get payment_processor_id for PayPal IPN - this will cause problems if you have more than one instance'); + // Then we try and retrieve based on business email ID + $paymentProcessorTypeID = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessorType', 'PayPal_Standard', 'id', 'name'); + $processorParams = [ + 'user_name' => $this->retrieve('business', 'String', FALSE), + 'payment_processor_type_id' => $paymentProcessorTypeID, + 'is_test' => empty($input['is_test']) ? 0 : 1, + 'options' => ['limit' => 1], + 'return' => ['id'], + ]; + $paymentProcessorID = civicrm_api3('PaymentProcessor', 'getvalue', $processorParams); + if (empty($paymentProcessorID)) { + Throw new CRM_Core_Exception('PayPalIPN: Could not get Payment Processor ID'); + } + return $paymentProcessorID; } } diff --git a/civicrm/CRM/Core/Payment/PayPalProIPN.php b/civicrm/CRM/Core/Payment/PayPalProIPN.php index f16c7ceae824b85d82c6b251f885847474edccf8..abbaece19707b06098c53a10d0d08af4fdd668b5 100644 --- a/civicrm/CRM/Core/Payment/PayPalProIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalProIPN.php @@ -236,16 +236,16 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { $recur->start_date = $now; } else { - $input['invoice_id'] = md5(uniqid(rand(), TRUE)); - $input['original_contribution_id'] = $ids['contribution']; - $input['contribution_recur_id'] = $ids['contributionRecur']; - if ($input['paymentStatus'] != 'Completed') { throw new CRM_Core_Exception("Ignore all IPN payments that are not completed"); } + // In future moving to create pending & then complete, but this OK for now. // Also consider accepting 'Failed' like other processors. - $input['contribution_status_id'] = 1; + $input['contribution_status_id'] = $contributionStatuses['Completed']; + $input['invoice_id'] = md5(uniqid(rand(), TRUE)); + $input['original_contribution_id'] = $ids['contribution']; + $input['contribution_recur_id'] = $ids['contributionRecur']; civicrm_api3('Contribution', 'repeattransaction', $input); return; diff --git a/civicrm/CRM/Core/Permission.php b/civicrm/CRM/Core/Permission.php index ff732084aa3efa97d215f9bb4be9c19b35065a81..a532a4a2c4d2a679c89a55be794bbbe5e55462e6 100644 --- a/civicrm/CRM/Core/Permission.php +++ b/civicrm/CRM/Core/Permission.php @@ -761,6 +761,14 @@ class CRM_Core_Permission { 'delete activities' => array( $prefix . ts('Delete activities'), ), + 'edit inbound email basic information' => array( + $prefix . ts('edit inbound email basic information'), + ts('Edit all inbound email activities (for visible contacts) basic information. Content editing not allowed.'), + ), + 'edit inbound email basic information and content' => array( + $prefix . ts('edit inbound email basic information and content'), + ts('Edit all inbound email activities (for visible contacts) basic information and content.'), + ), 'access CiviCRM' => array( $prefix . ts('access CiviCRM backend and API'), ts('Master control for access to the main CiviCRM backend and API. Give to trusted roles only.'), @@ -1465,6 +1473,10 @@ class CRM_Core_Permission { $permissions['option_value'] = $permissions['uf_group']; $permissions['option_group'] = $permissions['option_value']; + $permissions['custom_value'] = array( + 'gettree' => array('access CiviCRM'), + ); + $permissions['message_template'] = array( 'get' => array('access CiviCRM'), 'create' => array('edit message templates', 'edit user-driven message templates', 'edit system workflow message templates'), diff --git a/civicrm/CRM/Core/PrevNextCache/Interface.php b/civicrm/CRM/Core/PrevNextCache/Interface.php new file mode 100644 index 0000000000000000000000000000000000000000..c71b57ed24f05c0afb07f9adc9c1993205cde1a3 --- /dev/null +++ b/civicrm/CRM/Core/PrevNextCache/Interface.php @@ -0,0 +1,115 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2018 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * Interface CRM_Core_PrevNextCache_Interface + * + * The previous/next cache is a service for tracking query results. Results + * are stored in a cache, and they may be individually toggled. + */ +interface CRM_Core_PrevNextCache_Interface { + + /** + * Store the results of a SQL query in the cache. + * + * @param string $cacheKey + * @param string $sql + * A SQL query. The query *MUST* be a SELECT statement which yields + * the following columns (in order): entity_table, entity_id1, entity_id2, cacheKey, data + * @return bool + */ + public function fillWithSql($cacheKey, $sql); + + /** + * Store the contents of an array in the cache. + * + * @param string $cacheKey + * @param array $rows + * A list of cache records. Each record should have keys: + * - entity_table + * - entity_id1 + * - entity_id2 + * - data + * @return bool + */ + public function fillWithArray($cacheKey, $rows); + + /** + * Save checkbox selections. + * + * @param string $cacheKey + * @param string $action + * Ex: 'select', 'unselect'. + * @param array|int|NULL $ids + * A list of contact IDs to (un)select. + * To unselect all contact IDs, use NULL. + */ + public function markSelection($cacheKey, $action, $ids = NULL); + + /** + * Get the selections. + * + * @param string $cacheKey + * Cache key. + * @param string $action + * One of the following: + * - 'get' - get only selection records + * - 'getall' - get all the records of the specified cache key + * + * @return array|NULL + */ + public function getSelection($cacheKey, $action = 'get'); + + /** + * Get the previous and next keys. + * + * @param string $cacheKey + * @param int $id1 + * @param int $id2 + * + * @return array + */ + public function getPositions($cacheKey, $id1, $id2); + + /** + * Delete an item from the prevnext cache table based on the entity. + * + * @param int $id + * @param string $cacheKey + * @param string $entityTable + */ + public function deleteItem($id = NULL, $cacheKey = NULL, $entityTable = 'civicrm_contact'); + + /** + * Get count of matching rows. + * + * @param string $cacheKey + * @return int + */ + public function getCount($cacheKey); + +} diff --git a/civicrm/CRM/Core/PrevNextCache/Sql.php b/civicrm/CRM/Core/PrevNextCache/Sql.php new file mode 100644 index 0000000000000000000000000000000000000000..2f20a63ba96721e126d86dd3a44091f9436de45e --- /dev/null +++ b/civicrm/CRM/Core/PrevNextCache/Sql.php @@ -0,0 +1,215 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2018 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * Class CRM_Core_PrevNextCache_Sql + * + * Store the previous/next cache in a special-purpose SQL table. + */ +class CRM_Core_PrevNextCache_Sql implements CRM_Core_PrevNextCache_Interface { + + /** + * Store the results of a SQL query in the cache. + * + * @param string $sql + * A SQL query. The query *MUST* be a SELECT statement which yields + * the following columns (in order): entity_table, entity_id1, entity_id2, cacheKey, data + * @return bool + * @throws CRM_Core_Exception + */ + public function fillWithSql($cacheKey, $sql) { + $insertSQL = " +INSERT INTO civicrm_prevnext_cache ( entity_table, entity_id1, entity_id2, cacheKey, data ) +"; + $result = CRM_Core_DAO::executeQuery($insertSQL . $sql, [], FALSE, NULL, FALSE, TRUE, TRUE); + if (is_a($result, 'DB_Error')) { + throw new CRM_Core_Exception($result->message); + } + return TRUE; + } + + public function fillWithArray($cacheKey, $rows) { + if (empty($rows)) { + return; + } + + $insert = CRM_Utils_SQL_Insert::into('civicrm_prevnext_cache') + ->columns([ + 'entity_table', + 'entity_id1', + 'entity_id2', + 'cacheKey', + 'data' + ]); + + foreach ($rows as &$row) { + $insert->row($row + ['cacheKey' => $cacheKey]); + } + + CRM_Core_DAO::executeQuery($insert->toSQL()); + return TRUE; + } + + /** + * Save checkbox selections. + * + * @param string $cacheKey + * @param string $action + * Ex: 'select', 'unselect'. + * @param array|int|NULL $cIds + * A list of contact IDs to (un)select. + * To unselect all contact IDs, use NULL. + */ + public function markSelection($cacheKey, $action, $cIds = NULL) { + $entity_table = 'civicrm_contact'; + + if (!$cacheKey) { + return; + } + $params = array(); + + $entity_whereClause = " AND entity_table = '{$entity_table}'"; + if ($cIds && $cacheKey && $action) { + if (is_array($cIds)) { + $cIdFilter = "(" . implode(',', $cIds) . ")"; + $whereClause = " +WHERE cacheKey LIKE %1 +AND (entity_id1 IN {$cIdFilter} OR entity_id2 IN {$cIdFilter}) +"; + } + else { + $whereClause = " +WHERE cacheKey LIKE %1 +AND (entity_id1 = %2 OR entity_id2 = %2) +"; + $params[2] = array("{$cIds}", 'Integer'); + } + if ($action == 'select') { + $whereClause .= "AND is_selected = 0"; + $sql = "UPDATE civicrm_prevnext_cache SET is_selected = 1 {$whereClause} {$entity_whereClause}"; + $params[1] = array("{$cacheKey}%", 'String'); + } + elseif ($action == 'unselect') { + $whereClause .= "AND is_selected = 1"; + $sql = "UPDATE civicrm_prevnext_cache SET is_selected = 0 {$whereClause} {$entity_whereClause}"; + $params[1] = array("%{$cacheKey}%", 'String'); + } + // default action is reseting + } + elseif (!$cIds && $cacheKey && $action == 'unselect') { + $sql = " +UPDATE civicrm_prevnext_cache +SET is_selected = 0 +WHERE cacheKey LIKE %1 AND is_selected = 1 + {$entity_whereClause} +"; + $params[1] = array("{$cacheKey}%", 'String'); + } + CRM_Core_DAO::executeQuery($sql, $params); + } + + /** + * Get the selections. + * + * @param string $cacheKey + * Cache key. + * @param string $action + * One of the following: + * - 'get' - get only selection records + * - 'getall' - get all the records of the specified cache key + * + * @return array|NULL + */ + public function getSelection($cacheKey, $action = 'get') { + $entity_table = 'civicrm_contact'; + + if (!$cacheKey) { + return NULL; + } + $params = array(); + + $entity_whereClause = " AND entity_table = '{$entity_table}'"; + if ($cacheKey && ($action == 'get' || $action == 'getall')) { + $actionGet = ($action == "get") ? " AND is_selected = 1 " : ""; + $sql = " +SELECT entity_id1, entity_id2 FROM civicrm_prevnext_cache +WHERE cacheKey LIKE %1 + $actionGet + $entity_whereClause +ORDER BY id +"; + $params[1] = array("{$cacheKey}%", 'String'); + + $contactIds = array($cacheKey => array()); + $cIdDao = CRM_Core_DAO::executeQuery($sql, $params); + while ($cIdDao->fetch()) { + if ($cIdDao->entity_id1 == $cIdDao->entity_id2) { + $contactIds[$cacheKey][$cIdDao->entity_id1] = 1; + } + } + return $contactIds; + } + } + + /** + * Get the previous and next keys. + * + * @param string $cacheKey + * @param int $id1 + * @param int $id2 + * + * NOTE: I don't really get why there are two ID columns, but we'll + * keep passing them through as a matter of safe-refactoring. + * + * @return array + */ + public function getPositions($cacheKey, $id1, $id2) { + return CRM_Core_BAO_PrevNextCache::getPositions($cacheKey, $id1, $id2); + } + + /** + * Delete an item from the prevnext cache table based on the entity. + * + * @param int $id + * @param string $cacheKey + * @param string $entityTable + */ + public function deleteItem($id = NULL, $cacheKey = NULL, $entityTable = 'civicrm_contact') { + CRM_Core_BAO_PrevNextCache::deleteItem($id, $cacheKey, $entityTable); + } + + /** + * Get count of matching rows. + * + * @param string $cacheKey + * @return int + */ + public function getCount($cacheKey) { + return CRM_Core_BAO_PrevNextCache::getCount($cacheKey, NULL, "entity_table = 'civicrm_contact'"); + } + +} diff --git a/civicrm/CRM/Core/PseudoConstant.php b/civicrm/CRM/Core/PseudoConstant.php index 3392a8e371e968977ab504b40d5cdb80130430fd..5cef5e081eb4aa7da36d8443963f24754d69c2de 100644 --- a/civicrm/CRM/Core/PseudoConstant.php +++ b/civicrm/CRM/Core/PseudoConstant.php @@ -170,7 +170,7 @@ class CRM_Core_PseudoConstant { /** * Low-level option getter, rarely accessed directly. * NOTE: Rather than calling this function directly use CRM_*_BAO_*::buildOptions() - * @see http://wiki.civicrm.org/confluence/display/CRMDOC/Pseudoconstant+%28option+list%29+Reference + * @see https://docs.civicrm.org/dev/en/latest/framework/pseudoconstant/ * * NOTE: If someone undertakes a refactoring of this, please consider the use-case of * the Setting.getoptions API. There is no DAO/field, but it would be nice to use the diff --git a/civicrm/CRM/Core/SelectValues.php b/civicrm/CRM/Core/SelectValues.php index 6f4ed3c8b41a7fa85f5fd79128d9a0ad6d09dbfd..3d429fa36e6ca6e89fe0daa3c3208a3a51c4c24f 100644 --- a/civicrm/CRM/Core/SelectValues.php +++ b/civicrm/CRM/Core/SelectValues.php @@ -1096,4 +1096,17 @@ class CRM_Core_SelectValues { ); } + /** + * Relationship permissions + * + * @return array + */ + public static function getPermissionedRelationshipOptions() { + return array( + CRM_Contact_BAO_Relationship::NONE => ts('None'), + CRM_Contact_BAO_Relationship::VIEW => ts('View only'), + CRM_Contact_BAO_Relationship::EDIT => ts('View and update'), + ); + } + } diff --git a/civicrm/CRM/Core/Smarty/plugins/function.help.php b/civicrm/CRM/Core/Smarty/plugins/function.help.php index c4e4836c9816152538e29f561ce1ca8ad7c11fc3..f768965f61ae68fef831c360bef6c85b27fc7190 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.help.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.help.php @@ -92,5 +92,5 @@ function smarty_function_help($params, &$smarty) { foreach ($params as &$param) { $param = is_bool($param) || is_numeric($param) ? (int) $param : (string) $param; } - return '<a class="' . $class . '" title="' . $title . '" href="#" onclick=\'CRM.help(' . $name . ', ' . json_encode($params) . '); return false;\'> </a>'; + return '<a class="' . $class . '" title="' . $title . '" aria-label="' . $title . '" href="#" onclick=\'CRM.help(' . $name . ', ' . json_encode($params) . '); return false;\'> </a>'; } diff --git a/civicrm/CRM/Custom/Form/Field.php b/civicrm/CRM/Custom/Form/Field.php index 5326a2ff108e7a8a207d8a47f4a220652d00e7ae..518bd0d7b4e3c411962dc5c8312fd4bc2a098095 100644 --- a/civicrm/CRM/Custom/Form/Field.php +++ b/civicrm/CRM/Custom/Form/Field.php @@ -315,24 +315,33 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { $this->add('checkbox', 'in_selector', ts('Display in Table?')); } + $optionGroupParams = [ + 'is_reserved' => 0, + 'is_active' => 1, + 'options' => ['limit' => 0, 'sort' => "title ASC"], + 'return' => ['title'], + ]; + if ($this->_action == CRM_Core_Action::UPDATE) { $this->freeze('data_type'); + if (!empty($this->_values['option_group_id'])) { + // Before dev/core#155 we didn't set the is_reserved flag properly, which should be handled by the upgrade script... + // but it is still possible that existing installs may have optiongroups linked to custom fields that are marked reserved. + $optionGroupParams['id'] = $this->_values['option_group_id']; + $optionGroupParams['options']['or'] = [["is_reserved", "id"]]; + } } - $includeFieldIds = NULL; - if ($this->_action == CRM_Core_Action::UPDATE) { - $includeFieldIds = $this->_values['id']; - } - $optionGroups = CRM_Core_BAO_CustomField::customOptionGroup($includeFieldIds); - $emptyOptGroup = FALSE; - if (empty($optionGroups)) { - $emptyOptGroup = TRUE; - $optionTypes = array('1' => ts('Create a new set of options')); - } - else { - $optionTypes = array( - '1' => ts('Create a new set of options'), - '2' => ts('Reuse an existing set'), - ); + + // Retrieve optiongroups for selection list + $optionGroupMetadata = civicrm_api3('OptionGroup', 'get', $optionGroupParams); + + // OptionGroup selection + $optionTypes = array('1' => ts('Create a new set of options')); + + if (!empty($optionGroupMetadata['values'])) { + $emptyOptGroup = FALSE; + $optionGroups = CRM_Utils_Array::collect('title', $optionGroupMetadata['values']); + $optionTypes['2'] = ts('Reuse an existing set'); $this->add('select', 'option_group_id', @@ -342,6 +351,10 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { ) + $optionGroups ); } + else { + // No custom (non-reserved) option groups + $emptyOptGroup = TRUE; + } $element = &$this->addRadio('option_type', ts('Option Type'), @@ -350,6 +363,10 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { 'onclick' => "showOptionSelect();", ), '<br/>' ); + // if empty option group freeze the option type. + if ($emptyOptGroup) { + $element->freeze(); + } $contactGroups = CRM_Core_PseudoConstant::group(); asort($contactGroups); @@ -370,11 +387,6 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { $this->add('hidden', 'filter_selected', 'Group', array('id' => 'filter_selected')); - //if empty option group freeze the option type. - if ($emptyOptGroup) { - $element->freeze(); - } - // form fields of Custom Option rows $defaultOption = array(); $_showHide = new CRM_Core_ShowHideBlocks('', ''); diff --git a/civicrm/CRM/Custom/Form/Group.php b/civicrm/CRM/Custom/Form/Group.php index 90b6947adb6859a742b9a978d7be0b0f1e7a50da..6139759f17e013a5adec309df7b192679ffea912 100644 --- a/civicrm/CRM/Custom/Form/Group.php +++ b/civicrm/CRM/Custom/Form/Group.php @@ -115,11 +115,10 @@ class CRM_Custom_Form_Group extends CRM_Core_Form { //validate group title as well as name. $title = $fields['title']; $name = CRM_Utils_String::munge($title, '_', 64); - $query = 'select count(*) from civicrm_custom_group where ( name like %1 OR title like %2 ) and id != %3'; + $query = 'select count(*) from civicrm_custom_group where ( name like %1) and id != %2'; $grpCnt = CRM_Core_DAO::singleValueQuery($query, array( 1 => array($name, 'String'), - 2 => array($title, 'String'), - 3 => array((int) $self->_id, 'Integer'), + 2 => array((int) $self->_id, 'Integer'), )); if ($grpCnt) { $errors['title'] = ts('Custom group \'%1\' already exists in Database.', array(1 => $title)); diff --git a/civicrm/CRM/Custom/Form/Preview.php b/civicrm/CRM/Custom/Form/Preview.php index b068f147c1891df3af06b422c1e289eb61d71472..5264207a1036689615119c247de6090b0ce51846 100644 --- a/civicrm/CRM/Custom/Form/Preview.php +++ b/civicrm/CRM/Custom/Form/Preview.php @@ -109,7 +109,7 @@ class CRM_Custom_Form_Preview extends CRM_Core_Form { * @return void */ public function buildQuickForm() { - if (is_array($this->_groupTree[$this->_groupId])) { + if (is_array($this->_groupTree) && !empty($this->_groupTree[$this->_groupId])) { foreach ($this->_groupTree[$this->_groupId]['fields'] as & $field) { //add the form elements CRM_Core_BAO_CustomField::addQuickFormElement($this, $field['element_name'], $field['id'], CRM_Utils_Array::value('is_required', $field)); diff --git a/civicrm/CRM/Dashlet/Page/Blog.php b/civicrm/CRM/Dashlet/Page/Blog.php index 23cac0abf75e22fa22ed34297bc6a2e852830511..3416d186601f4d61ca4d5d4279611e0e96e22d3f 100644 --- a/civicrm/CRM/Dashlet/Page/Blog.php +++ b/civicrm/CRM/Dashlet/Page/Blog.php @@ -73,27 +73,21 @@ class CRM_Dashlet_Page_Blog extends CRM_Core_Page { * @return array */ protected function getData() { - // Fetch data from cache - $cache = CRM_Core_DAO::executeQuery("SELECT data, created_date FROM civicrm_cache - WHERE group_name = 'dashboard' AND path = 'newsfeed'"); - if ($cache->fetch()) { - $expire = time() - (60 * 60 * 24 * self::CACHE_DAYS); - // Refresh data after CACHE_DAYS - if (strtotime($cache->created_date) < $expire) { - $new_data = $this->getFeeds(); - // If fetching the new rss feed was successful, return it - // Otherwise use the old cached data - it's better than nothing - if ($new_data) { - return $new_data; - } + $value = Civi::cache('community_messages')->get('dashboard_newsfeed'); + + if (!$value) { + $value = $this->getFeeds(); + + if ($value) { + Civi::cache('community_messages')->set('dashboard_newsfeed', $value, (60 * 60 * 24 * self::CACHE_DAYS)); } - return unserialize($cache->data); } - return $this->getFeeds(); + + return $value; } /** - * Fetch all feeds & cache results. + * Fetch all feeds. * * @return array */ @@ -104,7 +98,6 @@ class CRM_Dashlet_Page_Blog extends CRM_Core_Page { return array(); } $feeds = $this->formatItems($newsFeed); - CRM_Core_BAO_Cache::setItem($feeds, 'dashboard', 'newsfeed'); return $feeds; } diff --git a/civicrm/CRM/Dashlet/Page/GettingStarted.php b/civicrm/CRM/Dashlet/Page/GettingStarted.php index cb77b45cff34a5145574a19f26538404e58826d4..18e3e89d3c833e94f9114d27481d63f89d980666 100644 --- a/civicrm/CRM/Dashlet/Page/GettingStarted.php +++ b/civicrm/CRM/Dashlet/Page/GettingStarted.php @@ -87,27 +87,21 @@ class CRM_Dashlet_Page_GettingStarted extends CRM_Core_Page { * @return array */ private function _gettingStarted() { - // Fetch data from cache - $cache = CRM_Core_DAO::executeQuery("SELECT data, created_date FROM civicrm_cache - WHERE group_name = 'dashboard' AND path = 'gettingStarted'"); - if ($cache->fetch()) { - $expire = time() - (60 * 60 * 24 * self::CACHE_DAYS); - // Refresh data after CACHE_DAYS - if (strtotime($cache->created_date) < $expire) { - $new_data = $this->_getHtml($this->gettingStartedUrl()); - // If fetching the new html was successful, return it - // Otherwise use the old cached data - it's better than nothing - if ($new_data) { - return $new_data; - } + $value = Civi::cache('community_messages')->get('dashboard_gettingStarted'); + + if (!$value) { + $value = $this->_getHtml($this->gettingStartedUrl()); + + if ($value) { + Civi::cache('community_messages')->set('dashboard_gettingStarted', $value, (60 * 60 * 24 * self::CACHE_DAYS)); } - return unserialize($cache->data); } - return $this->_getHtml($this->gettingStartedUrl()); + + return $value; } /** - * Get html and cache results. + * Get html. * * @param $url * @@ -115,18 +109,15 @@ class CRM_Dashlet_Page_GettingStarted extends CRM_Core_Page { * array of gettingStarted items; or NULL if not available */ public function _getHtml($url) { - $httpClient = new CRM_Utils_HttpClient(self::CHECK_TIMEOUT); list ($status, $html) = $httpClient->get($url); + if ($status !== CRM_Utils_HttpClient::STATUS_OK) { return NULL; } $tokensList = CRM_Utils_Token::getTokens($html); $this->replaceLinkToken($tokensList, $html); - if ($html) { - CRM_Core_BAO_Cache::setItem($html, 'dashboard', 'gettingStarted'); - } return $html; } diff --git a/civicrm/CRM/Event/Cart/DAO/Cart.php b/civicrm/CRM/Event/Cart/DAO/Cart.php index a5c2202e5200fe1faa7180471d3e02e5dbf859d1..6bb14e6c2e9a8cad769f996bdc35f8faa18ad9ae 100644 --- a/civicrm/CRM/Event/Cart/DAO/Cart.php +++ b/civicrm/CRM/Event/Cart/DAO/Cart.php @@ -104,6 +104,7 @@ class CRM_Event_Cart_DAO_Cart extends CRM_Core_DAO { 'name' => 'completed', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Complete?'), + 'default' => '0', 'table_name' => 'civicrm_event_carts', 'entity' => 'Cart', 'bao' => 'CRM_Event_Cart_BAO_Cart', diff --git a/civicrm/CRM/Event/DAO/Event.php b/civicrm/CRM/Event/DAO/Event.php index caa4b866f95feed0959945b451176cbdde7cd330..1f13607d0cf2fa5216343761f27206f07456b90b 100644 --- a/civicrm/CRM/Event/DAO/Event.php +++ b/civicrm/CRM/Event/DAO/Event.php @@ -609,6 +609,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Event Type'), 'description' => 'Event Type ID.Implicit FK to civicrm_option_value where option_group = event_type.', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -626,6 +627,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Participant Listing'), 'description' => 'Should we expose the participant list? Implicit FK to civicrm_option_value where option_group = participant_listing.', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -693,6 +695,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Online Registration'), 'description' => 'If true, include registration link on Event Info page.', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -776,6 +779,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is this a PAID event?'), 'description' => 'If true, one or more fee amounts must be set and a Payment Processor must be configured for Online Event Registration.', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -828,6 +832,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Map Enabled'), 'description' => 'Include a map block on the Event Information page when geocode info is available and a mapping provider has been specified?', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -841,6 +846,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Active'), 'description' => 'Is this Event enabled or disabled/cancelled?', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -997,6 +1003,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is confirm email'), 'description' => 'If true, confirmation is automatically emailed to contact on successful registration.', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -1151,6 +1158,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Pay Later Allowed'), 'description' => 'if true - allows the user to send payment directly to the org later', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -1190,6 +1198,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Partial Payments Enabled'), 'description' => 'is partial payment enabled for this event', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -1248,6 +1257,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Allow Multiple Registrations'), 'description' => 'if true - allows the user to register multiple participants for event', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -1261,6 +1271,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Maximum number of additional participants per registration'), 'description' => 'Maximum number of additional participants that can be registered on a single booking', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -1271,6 +1282,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Does Event allow multiple registrations from same email address?'), 'description' => 'if true - allows the user to register multiple registrations from same email address.', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -1323,6 +1335,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Allow Self-service Cancellation or Transfer'), 'description' => 'Allow self service cancellation or transfer for event?', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -1336,6 +1349,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Self-service Cancellation or Transfer Time'), 'description' => 'Number of hours prior to event start date to allow self-service cancellation or transfer.', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -1380,6 +1394,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'title' => ts('Is an Event Template'), 'description' => 'whether the event has template', 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', @@ -1556,6 +1571,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is billing block required'), 'description' => 'if true than billing block is required this event', + 'default' => '0', 'table_name' => 'civicrm_event', 'entity' => 'Event', 'bao' => 'CRM_Event_BAO_Event', diff --git a/civicrm/CRM/Event/DAO/Participant.php b/civicrm/CRM/Event/DAO/Participant.php index a25c71bb8259d9b70a5378d3e5002c11eed989fe..941d0eff23dce5966efe42a6aaabab9008346d3e 100644 --- a/civicrm/CRM/Event/DAO/Participant.php +++ b/civicrm/CRM/Event/DAO/Participant.php @@ -364,6 +364,7 @@ class CRM_Event_DAO_Participant extends CRM_Core_DAO { 'headerPattern' => '', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_participant', 'entity' => 'Participant', 'bao' => 'CRM_Event_BAO_Participant', @@ -378,6 +379,7 @@ class CRM_Event_DAO_Participant extends CRM_Core_DAO { 'headerPattern' => '/(is.)?(pay(.)?later)$/i', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_participant', 'entity' => 'Participant', 'bao' => 'CRM_Event_BAO_Participant', diff --git a/civicrm/CRM/Event/Form/ManageEvent/Fee.php b/civicrm/CRM/Event/Form/ManageEvent/Fee.php index aea1485120084e3a4a889242448bcc23a8c3e4f2..cbd038756d79dcd9f5bccdc443421785985abf7d 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Fee.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Fee.php @@ -522,6 +522,11 @@ class CRM_Event_Form_ManageEvent_Fee extends CRM_Event_Form_ManageEvent { $errors['pay_later_receipt'] = ts('Please enter the Pay Later instructions to be displayed to your users.'); } } + else { + if (empty($values['payment_processor'])) { + $errors['payment_processor'] = ts('You have indicated that this is a paid event, but no payment option has been selected. If this is not a paid event, please select the "No" option at the top of the page. If this is a paid event, please select at least one payment processor and/or enable the pay later option.'); + } + } } return empty($errors) ? TRUE : $errors; } diff --git a/civicrm/CRM/Event/Form/ManageEvent/Location.php b/civicrm/CRM/Event/Form/ManageEvent/Location.php index f7c11764dcd815ea9e4a19cc1ca33665ad0ca870..d28b2187fd00effb2db1cc47675f4dfdb1efd210 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Location.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Location.php @@ -225,10 +225,9 @@ class CRM_Event_Form_ManageEvent_Location extends CRM_Event_Form_ManageEvent { CRM_Core_DAO::setFieldValue('CRM_Event_DAO_Event', $this->_id, 'loc_block_id', 'null' ); - - $this->_values['address'] = array(); } + $this->_values['address'] = array(); // if 'create new loc' optioin is selected OR selected new loc is different // from old one, go ahead and delete the old loc provided thats not being // used by any other event diff --git a/civicrm/CRM/Event/Page/EventInfo.php b/civicrm/CRM/Event/Page/EventInfo.php index 7b088ea3b87f3a381bb2b9407271d0dd1b591c62..9f58bddb3009705349107430a82ccfe8fc8d2204 100644 --- a/civicrm/CRM/Event/Page/EventInfo.php +++ b/civicrm/CRM/Event/Page/EventInfo.php @@ -270,8 +270,9 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page { ); $allowRegistration = FALSE; + $isEventOpenForRegistration = CRM_Event_BAO_Event::validRegistrationRequest($values['event'], $this->_id); if (!empty($values['event']['is_online_registration'])) { - if (CRM_Event_BAO_Event::validRegistrationRequest($values['event'], $this->_id)) { + if ($isEventOpenForRegistration == 1) { // we always generate urls for the front end in joomla $action_query = $action === CRM_Core_Action::PREVIEW ? "&action=$action" : ''; $url = CRM_Utils_System::url('civicrm/event/register', @@ -337,8 +338,9 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page { $statusMessage = ts('Event is currently full, but you can register and be a part of waiting list.'); } } - - CRM_Core_Session::setStatus($statusMessage); + if ($isEventOpenForRegistration == 1) { + CRM_Core_Session::setStatus($statusMessage); + } } // we do not want to display recently viewed items, so turn off $this->assign('displayRecent', FALSE); diff --git a/civicrm/CRM/Export/BAO/Export.php b/civicrm/CRM/Export/BAO/Export.php index dd6fb35db9bdaefe135beb530c1612d5e2f5048b..f248f51a77b028b53d664a9050e81cd24721a6ca 100644 --- a/civicrm/CRM/Export/BAO/Export.php +++ b/civicrm/CRM/Export/BAO/Export.php @@ -41,111 +41,32 @@ class CRM_Export_BAO_Export { // CRM-7675 const EXPORT_ROW_COUNT = 100000; - protected static $relationshipReturnProperties = []; - /** - * @param $value - * @param $locationTypeFields - * @param $relationshipTypes + * Key representing the head of household in the relationship array. * - * @return array + * e.g. 8_a_b. + * + * @var string */ - protected static function setRelationshipReturnProperties($value, $locationTypeFields, $relationshipTypes) { - $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id'); - $relPhoneTypeId = $relIMProviderId = NULL; - if (!empty($value[2])) { - $relationField = CRM_Utils_Array::value(2, $value); - if (trim(CRM_Utils_Array::value(3, $value))) { - $relLocTypeId = CRM_Utils_Array::value(3, $value); - } - else { - $relLocTypeId = 'Primary'; - } - - if ($relationField == 'phone') { - $relPhoneTypeId = CRM_Utils_Array::value(4, $value); - } - elseif ($relationField == 'im') { - $relIMProviderId = CRM_Utils_Array::value(4, $value); - } - } - elseif (!empty($value[4])) { - $relationField = CRM_Utils_Array::value(4, $value); - $relLocTypeId = CRM_Utils_Array::value(5, $value); - if ($relationField == 'phone') { - $relPhoneTypeId = CRM_Utils_Array::value(6, $value); - } - elseif ($relationField == 'im') { - $relIMProviderId = CRM_Utils_Array::value(6, $value); - } - } - if (in_array($relationField, $locationTypeFields) && is_numeric($relLocTypeId)) { - if ($relPhoneTypeId) { - self::$relationshipReturnProperties[$relationshipTypes]['location'][$locationTypes[$relLocTypeId]]['phone-' . $relPhoneTypeId] = 1; - } - elseif ($relIMProviderId) { - self::$relationshipReturnProperties[$relationshipTypes]['location'][$locationTypes[$relLocTypeId]]['im-' . $relIMProviderId] = 1; - } - else { - self::$relationshipReturnProperties[$relationshipTypes]['location'][$locationTypes[$relLocTypeId]][$relationField] = 1; - } - } - else { - self::$relationshipReturnProperties[$relationshipTypes][$relationField] = 1; - } - return array($relationField); - } + protected static $headOfHouseholdRelationshipKey; /** - * @return array + * Key representing the head of household in the relationship array. + * + * e.g. 8_a_b. + * + * @var string */ - public static function getRelationshipReturnProperties() { - return self::relationshipReturnProperties; - } + protected static $memberOfHouseholdRelationshipKey; /** - * Get Querymode based on ExportMode + * Key representing the head of household in the relationship array. * - * @param int $exportMode - * Export mode. + * e.g. ['8_b_a' => 'Household Member Is', '8_a_b = 'Household Member Of'.....] * - * @return string $Querymode - * Query Mode + * @var */ - public static function getQueryMode($exportMode) { - $queryMode = CRM_Contact_BAO_Query::MODE_CONTACTS; - - switch ($exportMode) { - case CRM_Export_Form_Select::CONTRIBUTE_EXPORT: - $queryMode = CRM_Contact_BAO_Query::MODE_CONTRIBUTE; - break; - - case CRM_Export_Form_Select::EVENT_EXPORT: - $queryMode = CRM_Contact_BAO_Query::MODE_EVENT; - break; - - case CRM_Export_Form_Select::MEMBER_EXPORT: - $queryMode = CRM_Contact_BAO_Query::MODE_MEMBER; - break; - - case CRM_Export_Form_Select::PLEDGE_EXPORT: - $queryMode = CRM_Contact_BAO_Query::MODE_PLEDGE; - break; - - case CRM_Export_Form_Select::CASE_EXPORT: - $queryMode = CRM_Contact_BAO_Query::MODE_CASE; - break; - - case CRM_Export_Form_Select::GRANT_EXPORT: - $queryMode = CRM_Contact_BAO_Query::MODE_GRANT; - break; - - case CRM_Export_Form_Select::ACTIVITY_EXPORT: - $queryMode = CRM_Contact_BAO_Query::MODE_ACTIVITY; - break; - } - return $queryMode; - } + protected static $relationshipTypes = []; /** * Get default return property for export based on mode @@ -273,53 +194,6 @@ class CRM_Export_BAO_Export { return $groupBy; } - /** - * Define extra properties for the export based on query mode - * - * @param string $queryMode - * Query Mode - * @return array $extraProperties - * Extra Properties - */ - public static function defineExtraProperties($queryMode) { - switch ($queryMode) { - case CRM_Contact_BAO_Query::MODE_EVENT: - $paymentFields = TRUE; - $paymentTableId = 'participant_id'; - $extraReturnProperties = array(); - break; - - case CRM_Contact_BAO_Query::MODE_MEMBER: - $paymentFields = TRUE; - $paymentTableId = 'membership_id'; - $extraReturnProperties = array(); - break; - - case CRM_Contact_BAO_Query::MODE_PLEDGE: - $extraReturnProperties = CRM_Pledge_BAO_Query::extraReturnProperties($queryMode); - $paymentFields = TRUE; - $paymentTableId = 'pledge_payment_id'; - break; - - case CRM_Contact_BAO_Query::MODE_CASE: - $extraReturnProperties = CRM_Case_BAO_Query::extraReturnProperties($queryMode); - $paymentFields = FALSE; - $paymentTableId = ''; - break; - - default: - $paymentFields = FALSE; - $paymentTableId = ''; - $extraReturnProperties = array(); - } - $extraProperties = array( - 'paymentFields' => $paymentFields, - 'paymentTableId' => $paymentTableId, - 'extraReturnProperties' => $extraReturnProperties, - ); - return $extraProperties; - } - /** * Get the list the export fields. * @@ -370,66 +244,40 @@ class CRM_Export_BAO_Export { $queryOperator = 'AND' ) { + $processor = new CRM_Export_BAO_ExportProcessor($exportMode, $fields, $queryOperator); $returnProperties = array(); - $paymentFields = $selectedPaymentFields = FALSE; $phoneTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Phone', 'phone_type_id'); // Warning - this imProviders var is used in a somewhat fragile way - don't rename it // without manually testing the export of IM provider still works. $imProviders = CRM_Core_PseudoConstant::get('CRM_Core_DAO_IM', 'provider_id'); - $contactRelationshipTypes = CRM_Contact_BAO_Relationship::getContactRelationshipType( - NULL, - NULL, - NULL, - NULL, - TRUE, - 'name', - FALSE - ); + self::$relationshipTypes = $processor->getRelationshipTypes(); + //also merge Head of Household + self::$memberOfHouseholdRelationshipKey = CRM_Utils_Array::key('Household Member of', self::$relationshipTypes); + self::$headOfHouseholdRelationshipKey = CRM_Utils_Array::key('Head of Household for', self::$relationshipTypes); - $queryMode = self::getQueryMode($exportMode); + $queryMode = $processor->getQueryMode(); if ($fields) { - //construct return properties - $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id'); - $locationTypeFields = array( - 'street_address', - 'supplemental_address_1', - 'supplemental_address_2', - 'supplemental_address_3', - 'city', - 'postal_code', - 'postal_code_suffix', - 'geo_code_1', - 'geo_code_2', - 'state_province', - 'country', - 'phone', - 'email', - 'im', - ); - foreach ($fields as $key => $value) { $fieldName = CRM_Utils_Array::value(1, $value); if (!$fieldName) { continue; } - if (array_key_exists($fieldName, $contactRelationshipTypes) && (!empty($value[2]) || !empty($value[4]))) { - self::setRelationshipReturnProperties($value, $locationTypeFields, $fieldName); - // @todo we can later not add this to this array but maintain a separate array. - $returnProperties = array_merge($returnProperties, self::$relationshipReturnProperties); + if ($processor->isRelationshipTypeKey($fieldName) && (!empty($value[2]) || !empty($value[4]))) { + $returnProperties[$fieldName] = $processor->setRelationshipReturnProperties($value, $fieldName); } elseif (is_numeric(CRM_Utils_Array::value(2, $value))) { - $locTypeId = $value[2]; + $locationName = CRM_Core_PseudoConstant::getName('CRM_Core_BAO_Address', 'location_type_id', $value[2]); if ($fieldName == 'phone') { - $returnProperties['location'][$locationTypes[$locTypeId]]['phone-' . CRM_Utils_Array::value(3, $value)] = 1; + $returnProperties['location'][$locationName]['phone-' . CRM_Utils_Array::value(3, $value)] = 1; } elseif ($fieldName == 'im') { - $returnProperties['location'][$locationTypes[$locTypeId]]['im-' . CRM_Utils_Array::value(3, $value)] = 1; + $returnProperties['location'][$locationName]['im-' . CRM_Utils_Array::value(3, $value)] = 1; } else { - $returnProperties['location'][$locationTypes[$locTypeId]][$fieldName] = 1; + $returnProperties['location'][$locationName][$fieldName] = 1; } } else { @@ -438,14 +286,6 @@ class CRM_Export_BAO_Export { if ($fieldName == 'event_id') { $returnProperties['event_id'] = 1; } - elseif ( - $exportMode == CRM_Export_Form_Select::EVENT_EXPORT && - array_key_exists($fieldName, self::componentPaymentFields()) - ) { - $selectedPaymentFields = TRUE; - $paymentTableId = 'participant_id'; - $returnProperties[$fieldName] = 1; - } else { $returnProperties[$fieldName] = 1; } @@ -457,56 +297,11 @@ class CRM_Export_BAO_Export { } } else { - $primary = TRUE; - $fields = CRM_Contact_BAO_Contact::exportableFields('All', TRUE, TRUE); - foreach ($fields as $key => $var) { - if ($key && (substr($key, 0, 6) != 'custom')) { - //for CRM=952 - $returnProperties[$key] = 1; - } - } - - if ($primary) { - $returnProperties['location_type'] = 1; - $returnProperties['im_provider'] = 1; - $returnProperties['phone_type_id'] = 1; - $returnProperties['provider_id'] = 1; - $returnProperties['current_employer'] = 1; - } - - $extraProperties = self::defineExtraProperties($queryMode); - $paymentFields = $extraProperties['paymentFields']; - $extraReturnProperties = $extraProperties['extraReturnProperties']; - $paymentTableId = $extraProperties['paymentTableId']; - - if ($queryMode != CRM_Contact_BAO_Query::MODE_CONTACTS) { - $componentReturnProperties = CRM_Contact_BAO_Query::defaultReturnProperties($queryMode); - if ($queryMode == CRM_Contact_BAO_Query::MODE_CONTRIBUTE) { - // soft credit columns are not automatically populated, because contribution search doesn't require them by default - $componentReturnProperties = array_merge( - $componentReturnProperties, - CRM_Contribute_BAO_Query::softCreditReturnProperties(TRUE)); - } - $returnProperties = array_merge($returnProperties, $componentReturnProperties); - - if (!empty($extraReturnProperties)) { - $returnProperties = array_merge($returnProperties, $extraReturnProperties); - } - - // unset non exportable fields for components - $nonExpoFields = array( - 'groups', - 'tags', - 'notes', - 'contribution_status_id', - 'pledge_status_id', - 'pledge_payment_status_id', - ); - foreach ($nonExpoFields as $value) { - unset($returnProperties[$value]); - } - } + $returnProperties = $processor->getDefaultReturnProperties(); } + // @todo - we are working towards this being entirely a property of the processor + $processor->setReturnProperties($returnProperties); + $paymentTableId = $processor->getPaymentTableID(); if ($mergeSameAddress) { //make sure the addressee fields are selected @@ -569,39 +364,27 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c CRM_Contact_BAO_ProximityQuery::fixInputParams($params); } - $query = new CRM_Contact_BAO_Query($params, $returnProperties, NULL, - FALSE, FALSE, $queryMode, - FALSE, TRUE, TRUE, NULL, $queryOperator - ); - - //sort by state - //CRM-15301 - $query->_sort = $order; - list($select, $from, $where, $having) = $query->query(); + list($query, $select, $from, $where, $having) = $processor->runQuery($params, $order, $returnProperties); if ($mergeSameHousehold == 1) { if (empty($returnProperties['id'])) { $returnProperties['id'] = 1; } - //also merge Head of Household - $relationKeyMOH = CRM_Utils_Array::key('Household Member of', $contactRelationshipTypes); - $relationKeyHOH = CRM_Utils_Array::key('Head of Household for', $contactRelationshipTypes); - foreach ($returnProperties as $key => $value) { - if (!array_key_exists($key, $contactRelationshipTypes)) { - $returnProperties[$relationKeyMOH][$key] = $value; - $returnProperties[$relationKeyHOH][$key] = $value; + if (!$processor->isRelationshipTypeKey($key)) { + $returnProperties[self::$memberOfHouseholdRelationshipKey][$key] = $value; + $returnProperties[self::$headOfHouseholdRelationshipKey][$key] = $value; } } - unset($returnProperties[$relationKeyMOH]['location_type']); - unset($returnProperties[$relationKeyMOH]['im_provider']); - unset($returnProperties[$relationKeyHOH]['location_type']); - unset($returnProperties[$relationKeyHOH]['im_provider']); + unset($returnProperties[self::$memberOfHouseholdRelationshipKey]['location_type']); + unset($returnProperties[self::$memberOfHouseholdRelationshipKey]['im_provider']); + unset($returnProperties[self::$headOfHouseholdRelationshipKey]['location_type']); + unset($returnProperties[self::$headOfHouseholdRelationshipKey]['im_provider']); } - list($relationQuery, $allRelContactArray) = self::buildRelatedContactArray($selectAll, $ids, $exportMode, $componentTable, $contactRelationshipTypes, $returnProperties, $queryMode); + list($relationQuery, $allRelContactArray) = self::buildRelatedContactArray($selectAll, $ids, $exportMode, $componentTable, $returnProperties, $queryMode); // make sure the groups stuff is included only if specifically specified // by the fields param (CRM-1969), else we limit the contacts outputted to only @@ -669,14 +452,14 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c $addPaymentHeader = FALSE; $paymentDetails = array(); - if ($paymentFields || $selectedPaymentFields) { + if ($processor->isExportPaymentFields()) { // get payment related in for event and members $paymentDetails = CRM_Contribute_BAO_Contribution::getContributionDetails($exportMode, $ids); //get all payment headers. // If we haven't selected specific payment fields, load in all the // payment headers. - if (!$selectedPaymentFields) { + if (!$processor->isExportSpecifiedPaymentFields()) { $paymentHeaders = self::componentPaymentFields(); if (!empty($paymentDetails)) { $addPaymentHeader = TRUE; @@ -704,7 +487,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c // for CRM-3157 purposes $i18n = CRM_Core_I18n::singleton(); - list($outputColumns, $headerRows, $sqlColumns, $metadata) = self::getExportStructureArrays($returnProperties, $query, $contactRelationshipTypes, $relationQuery, $selectedPaymentFields); + list($outputColumns, $headerRows, $sqlColumns, $metadata) = self::getExportStructureArrays($returnProperties, $processor); $limitReached = FALSE; while (!$limitReached) { @@ -749,112 +532,23 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c } } - if ($field == 'id') { - $row[$field] = $iterationDAO->contact_id; - // special case for calculated field - } - elseif ($field == 'source_contact_id') { - $row[$field] = $iterationDAO->contact_id; - } - elseif ($field == 'pledge_balance_amount') { - $row[$field] = $iterationDAO->pledge_amount - $iterationDAO->pledge_total_paid; - // special case for calculated field - } - elseif ($field == 'pledge_next_pay_amount') { - $row[$field] = $iterationDAO->pledge_next_pay_amount + $iterationDAO->pledge_outstanding_amount; - } - elseif (array_key_exists($field, $contactRelationshipTypes)) { + if ($processor->isRelationshipTypeKey($field)) { $relDAO = CRM_Utils_Array::value($iterationDAO->contact_id, $allRelContactArray[$field]); $relationQuery[$field]->convertToPseudoNames($relDAO); self::fetchRelationshipDetails($relDAO, $value, $field, $row); } - elseif (isset($fieldValue) && - $fieldValue != '' - ) { - //check for custom data - if ($cfID = CRM_Core_BAO_CustomField::getKeyID($field)) { - $row[$field] = CRM_Core_BAO_CustomField::displayValue($fieldValue, $cfID); - } - - elseif (in_array($field, array( - 'email_greeting', - 'postal_greeting', - 'addressee', - ))) { - //special case for greeting replacement - $fldValue = "{$field}_display"; - $row[$field] = $iterationDAO->$fldValue; - } - else { - //normal fields with a touch of CRM-3157 - switch ($field) { - case 'country': - case 'world_region': - $row[$field] = $i18n->crm_translate($fieldValue, array('context' => 'country')); - break; - - case 'state_province': - $row[$field] = $i18n->crm_translate($fieldValue, array('context' => 'province')); - break; - - case 'gender': - case 'preferred_communication_method': - case 'preferred_mail_format': - case 'communication_style': - $row[$field] = $i18n->crm_translate($fieldValue); - break; - - default: - if (isset($metadata[$field])) { - // No I don't know why we do it this way & whether we could - // make better use of pseudoConstants. - if (!empty($metadata[$field]['context'])) { - $row[$field] = $i18n->crm_translate($fieldValue, $metadata[$field]); - break; - } - if (!empty($metadata[$field]['pseudoconstant'])) { - // This is not our normal syntax for pseudoconstants but I am a bit loath to - // call an external function until sure it is not increasing php processing given this - // may be iterated 100,000 times & we already have the $imProvider var loaded. - // That can be next refactor... - // Yes - definitely feeling hatred for this bit of code - I know you will beat me up over it's awfulness - // but I have to reach a stable point.... - $varName = $metadata[$field]['pseudoconstant']['var']; - $labels = $$varName; - $row[$field] = $labels[$fieldValue]; - break; - } - - } - $row[$field] = $fieldValue; - break; - } - } - } - elseif ($selectedPaymentFields && array_key_exists($field, self::componentPaymentFields())) { - $paymentData = CRM_Utils_Array::value($iterationDAO->$paymentTableId, $paymentDetails); - $payFieldMapper = array( - 'componentPaymentField_total_amount' => 'total_amount', - 'componentPaymentField_contribution_status' => 'contribution_status', - 'componentPaymentField_payment_instrument' => 'pay_instru', - 'componentPaymentField_transaction_id' => 'trxn_id', - 'componentPaymentField_received_date' => 'receive_date', - ); - $row[$field] = CRM_Utils_Array::value($payFieldMapper[$field], $paymentData, ''); - } else { - // if field is empty or null - $row[$field] = ''; + $row[$field] = self::getTransformedFieldValue($field, $iterationDAO, $fieldValue, $i18n, $metadata, $paymentDetails, $processor); } } // add payment headers if required - if ($addPaymentHeader && $paymentFields) { + if ($addPaymentHeader && $processor->isExportPaymentFields()) { // @todo rather than do this for every single row do it before the loop starts. // where other header definitions take place. $headerRows = array_merge($headerRows, $paymentHeaders); foreach (array_keys($paymentHeaders) as $paymentHdr) { - self::sqlColumnDefn($query, $sqlColumns, $paymentHdr); + self::sqlColumnDefn($processor, $sqlColumns, $paymentHdr); } } @@ -869,8 +563,8 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c // data will already be in $row. Otherwise, add payment related // information, if appropriate. if ($addPaymentHeader) { - if (!$selectedPaymentFields) { - if ($paymentFields) { + if (!$processor->isExportSpecifiedPaymentFields()) { + if ($processor->isExportPaymentFields()) { $paymentData = CRM_Utils_Array::value($row[$paymentTableId], $paymentDetails); if (!is_array($paymentData) || empty($paymentData)) { $paymentData = $nullContributionDetails; @@ -923,8 +617,8 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c // merge the records if they have corresponding households if ($mergeSameHousehold) { - self::mergeSameHousehold($exportTempTable, $headerRows, $sqlColumns, $relationKeyMOH); - self::mergeSameHousehold($exportTempTable, $headerRows, $sqlColumns, $relationKeyHOH); + self::mergeSameHousehold($exportTempTable, $headerRows, $sqlColumns, self::$memberOfHouseholdRelationshipKey); + self::mergeSameHousehold($exportTempTable, $headerRows, $sqlColumns, self::$headOfHouseholdRelationshipKey); } // call export hook @@ -937,7 +631,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c } else { // return tableName and sqlColumns in test context - return array($exportTempTable, $sqlColumns); + return array($exportTempTable, $sqlColumns, $headerRows); } // delete the export temp table and component table @@ -1082,127 +776,16 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c } /** - * @param $query + * @param \CRM_Export_BAO_ExportProcessor $processor * @param $sqlColumns * @param $field */ - public static function sqlColumnDefn($query, &$sqlColumns, $field) { + public static function sqlColumnDefn($processor, &$sqlColumns, $field) { if (substr($field, -4) == '_a_b' || substr($field, -4) == '_b_a') { return; } - $fieldName = CRM_Utils_String::munge(strtolower($field), '_', 64); - if ($fieldName == 'id') { - $fieldName = 'civicrm_primary_id'; - } - - // early exit for master_id, CRM-12100 - // in the DB it is an ID, but in the export, we retrive the display_name of the master record - // also for current_employer, CRM-16939 - if ($fieldName == 'master_id' || $fieldName == 'current_employer') { - $sqlColumns[$fieldName] = "$fieldName varchar(128)"; - return; - } - - if (substr($fieldName, -11) == 'campaign_id') { - // CRM-14398 - $sqlColumns[$fieldName] = "$fieldName varchar(128)"; - return; - } - - $lookUp = array('prefix_id', 'suffix_id'); - // set the sql columns - if (isset($query->_fields[$field]['type'])) { - switch ($query->_fields[$field]['type']) { - case CRM_Utils_Type::T_INT: - case CRM_Utils_Type::T_BOOLEAN: - if (in_array($field, $lookUp)) { - $sqlColumns[$fieldName] = "$fieldName varchar(255)"; - } - else { - $sqlColumns[$fieldName] = "$fieldName varchar(16)"; - } - break; - - case CRM_Utils_Type::T_STRING: - if (isset($query->_fields[$field]['maxlength'])) { - $sqlColumns[$fieldName] = "$fieldName varchar({$query->_fields[$field]['maxlength']})"; - } - else { - $sqlColumns[$fieldName] = "$fieldName varchar(255)"; - } - break; - - case CRM_Utils_Type::T_TEXT: - case CRM_Utils_Type::T_LONGTEXT: - case CRM_Utils_Type::T_BLOB: - case CRM_Utils_Type::T_MEDIUMBLOB: - $sqlColumns[$fieldName] = "$fieldName longtext"; - break; - - case CRM_Utils_Type::T_FLOAT: - case CRM_Utils_Type::T_ENUM: - case CRM_Utils_Type::T_DATE: - case CRM_Utils_Type::T_TIME: - case CRM_Utils_Type::T_TIMESTAMP: - case CRM_Utils_Type::T_MONEY: - case CRM_Utils_Type::T_EMAIL: - case CRM_Utils_Type::T_URL: - case CRM_Utils_Type::T_CCNUM: - default: - $sqlColumns[$fieldName] = "$fieldName varchar(32)"; - break; - } - } - else { - if (substr($fieldName, -3, 3) == '_id') { - $sqlColumns[$fieldName] = "$fieldName varchar(255)"; - } - elseif (substr($fieldName, -5, 5) == '_note') { - $sqlColumns[$fieldName] = "$fieldName text"; - } - else { - $changeFields = array( - 'groups', - 'tags', - 'notes', - ); - - if (in_array($fieldName, $changeFields)) { - $sqlColumns[$fieldName] = "$fieldName text"; - } - else { - // set the sql columns for custom data - if (isset($query->_fields[$field]['data_type'])) { - - switch ($query->_fields[$field]['data_type']) { - case 'String': - // May be option labels, which could be up to 512 characters - $length = max(512, CRM_Utils_Array::value('text_length', $query->_fields[$field])); - $sqlColumns[$fieldName] = "$fieldName varchar($length)"; - break; - - case 'Country': - case 'StateProvince': - case 'Link': - $sqlColumns[$fieldName] = "$fieldName varchar(255)"; - break; - - case 'Memo': - $sqlColumns[$fieldName] = "$fieldName text"; - break; - - default: - $sqlColumns[$fieldName] = "$fieldName varchar(255)"; - break; - } - } - else { - $sqlColumns[$fieldName] = "$fieldName text"; - } - } - } - } + $sqlColumns[$processor->getMungedFieldName($field)] = $processor->getSqlColumnDefinition($field); } /** @@ -1210,7 +793,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c * @param $details * @param $sqlColumns */ - public static function writeDetailsToTable($tableName, &$details, &$sqlColumns) { + public static function writeDetailsToTable($tableName, $details, $sqlColumns) { if (empty($details)) { return; } @@ -1227,10 +810,10 @@ FROM $tableName $sqlClause = array(); - foreach ($details as $dontCare => $row) { + foreach ($details as $row) { $id++; $valueString = array($id); - foreach ($row as $dontCare => $value) { + foreach ($row as $value) { if (empty($value)) { $valueString[] = "''"; } @@ -1257,7 +840,7 @@ VALUES $sqlValueString * * @return string */ - public static function createTempTable(&$sqlColumns) { + public static function createTempTable($sqlColumns) { //creating a temporary table for the search result that need be exported $exportTempTable = CRM_Utils_SQL_TempTable::build()->setDurable()->setCategory('export')->getName(); @@ -1725,12 +1308,11 @@ LIMIT $offset, $limit * Manipulate header rows for relationship fields. * * @param $headerRows - * @param $contactRelationshipTypes */ - public static function manipulateHeaderRows(&$headerRows, $contactRelationshipTypes) { + public static function manipulateHeaderRows(&$headerRows) { foreach ($headerRows as & $header) { $split = explode('-', $header); - if ($relationTypeName = CRM_Utils_Array::value($split[0], $contactRelationshipTypes)) { + if ($relationTypeName = CRM_Utils_Array::value($split[0], self::$relationshipTypes)) { $split[0] = $relationTypeName; $header = implode('-', $split); } @@ -1818,41 +1400,32 @@ WHERE {$whereClause}"; * @param array $headerRows * @param array $sqlColumns * Columns to go in the temp table. - * @param CRM_Contact_BAO_Query $query + * @param \CRM_Export_BAO_ExportProcessor $processor * @param array|string $value * @param array $phoneTypes * @param array $imProviders - * @param array $contactRelationshipTypes - * @param string $relationQuery - * @param array $selectedPaymentFields + * * @return array */ - public static function setHeaderRows($field, $headerRows, $sqlColumns, $query, $value, $phoneTypes, $imProviders, $contactRelationshipTypes, $relationQuery, $selectedPaymentFields) { + public static function setHeaderRows($field, $headerRows, $sqlColumns, $processor, $value, $phoneTypes, $imProviders) { - // Split campaign into 2 fields for id and title - if (substr($field, -14) == 'campaign_title') { - $headerRows[] = ts('Campaign Title'); - } - elseif (substr($field, -11) == 'campaign_id') { + $queryFields = $processor->getQueryFields(); + if (substr($field, -11) == 'campaign_id') { + // @todo - set this correctly in the xml rather than here. $headerRows[] = ts('Campaign ID'); } - elseif (isset($query->_fields[$field]['title'])) { - $headerRows[] = $query->_fields[$field]['title']; - } - elseif ($field == 'phone_type_id') { - $headerRows[] = ts('Phone Type'); + elseif (isset($queryFields[$field]['title'])) { + $headerRows[] = $queryFields[$field]['title']; } elseif ($field == 'provider_id') { + // @todo - set this correctly in the xml rather than here. $headerRows[] = ts('IM Service Provider'); } - elseif (substr($field, 0, 5) == 'case_' && $query->_fields['case'][$field]['title']) { - $headerRows[] = $query->_fields['case'][$field]['title']; - } - elseif (array_key_exists($field, $contactRelationshipTypes)) { + elseif ($processor->isRelationshipTypeKey($field)) { foreach ($value as $relationField => $relationValue) { // below block is same as primary block (duplicate) - if (isset($relationQuery[$field]->_fields[$relationField]['title'])) { - if ($relationQuery[$field]->_fields[$relationField]['name'] == 'name') { + if (isset($queryFields[$relationField]['title'])) { + if ($queryFields[$relationField]['name'] == 'name') { $headerName = $field . '-' . $relationField; } else { @@ -1860,28 +1433,28 @@ WHERE {$whereClause}"; $headerName = $field . '-' . 'current_employer'; } else { - $headerName = $field . '-' . $relationQuery[$field]->_fields[$relationField]['name']; + $headerName = $field . '-' . $queryFields[$relationField]['name']; } } $headerRows[] = $headerName; - self::sqlColumnDefn($query, $sqlColumns, $headerName); + self::sqlColumnDefn($processor, $sqlColumns, $headerName); } elseif ($relationField == 'phone_type_id') { $headerName = $field . '-' . 'Phone Type'; $headerRows[] = $headerName; - self::sqlColumnDefn($query, $sqlColumns, $headerName); + self::sqlColumnDefn($processor, $sqlColumns, $headerName); } elseif ($relationField == 'provider_id') { $headerName = $field . '-' . 'Im Service Provider'; $headerRows[] = $headerName; - self::sqlColumnDefn($query, $sqlColumns, $headerName); + self::sqlColumnDefn($processor, $sqlColumns, $headerName); } elseif ($relationField == 'state_province_id') { $headerName = $field . '-' . 'state_province_id'; $headerRows[] = $headerName; - self::sqlColumnDefn($query, $sqlColumns, $headerName); + self::sqlColumnDefn($processor, $sqlColumns, $headerName); } elseif (is_array($relationValue) && $relationField == 'location') { // fix header for location type case @@ -1889,7 +1462,7 @@ WHERE {$whereClause}"; foreach (array_keys($val) as $fld) { $type = explode('-', $fld); - $hdr = "{$ltype}-" . $relationQuery[$field]->_fields[$type[0]]['title']; + $hdr = "{$ltype}-" . $queryFields[$type[0]]['title']; if (!empty($type[1])) { if (CRM_Utils_Array::value(0, $type) == 'phone') { @@ -1901,21 +1474,21 @@ WHERE {$whereClause}"; } $headerName = $field . '-' . $hdr; $headerRows[] = $headerName; - self::sqlColumnDefn($query, $sqlColumns, $headerName); + self::sqlColumnDefn($processor, $sqlColumns, $headerName); } } } } - self::manipulateHeaderRows($headerRows, $contactRelationshipTypes); + self::manipulateHeaderRows($headerRows); } - elseif ($selectedPaymentFields && array_key_exists($field, self::componentPaymentFields())) { + elseif ($processor->isExportPaymentFields() && array_key_exists($field, self::componentPaymentFields())) { $headerRows[] = CRM_Utils_Array::value($field, self::componentPaymentFields()); } else { $headerRows[] = $field; } - self::sqlColumnDefn($query, $sqlColumns, $field); + self::sqlColumnDefn($processor, $sqlColumns, $field); return array($headerRows, $sqlColumns); } @@ -1930,10 +1503,8 @@ WHERE {$whereClause}"; * as a step on the refactoring path rather than how it should be. * * @param array $returnProperties - * @param CRM_Contact_BAO_Contact $query - * @param array $contactRelationshipTypes - * @param string $relationQuery - * @param array $selectedPaymentFields + * @param \CRM_Export_BAO_ExportProcessor $processor + * * @return array * - outputColumns Array of columns to be exported. The values don't matter but the key must match the * alias for the field generated by BAO_Query object. @@ -1950,15 +1521,16 @@ WHERE {$whereClause}"; * - b) this code is old & outdated. Submit your answers to circular bin or better * yet find a way to comment them for posterity. */ - public static function getExportStructureArrays($returnProperties, $query, $contactRelationshipTypes, $relationQuery, $selectedPaymentFields) { + public static function getExportStructureArrays($returnProperties, $processor) { $metadata = $headerRows = $outputColumns = $sqlColumns = array(); $phoneTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Phone', 'phone_type_id'); $imProviders = CRM_Core_PseudoConstant::get('CRM_Core_DAO_IM', 'provider_id'); + $queryFields = $processor->getQueryFields(); foreach ($returnProperties as $key => $value) { if ($key != 'location' || !is_array($value)) { $outputColumns[$key] = $value; - list($headerRows, $sqlColumns) = self::setHeaderRows($key, $headerRows, $sqlColumns, $query, $value, $phoneTypes, $imProviders, $contactRelationshipTypes, $relationQuery, $selectedPaymentFields); + list($headerRows, $sqlColumns) = self::setHeaderRows($key, $headerRows, $sqlColumns, $processor, $value, $phoneTypes, $imProviders); } else { foreach ($value as $locationType => $locationFields) { @@ -1966,7 +1538,7 @@ WHERE {$whereClause}"; $type = explode('-', $locationFieldName); $actualDBFieldName = $type[0]; - $outputFieldName = $locationType . '-' . $query->_fields[$actualDBFieldName]['title']; + $outputFieldName = $locationType . '-' . $queryFields[$actualDBFieldName]['title']; $daoFieldName = CRM_Utils_String::munge($locationType) . '-' . $actualDBFieldName; if (!empty($type[1])) { @@ -1982,8 +1554,8 @@ WHERE {$whereClause}"; // Warning: shame inducing hack. $metadata[$daoFieldName]['pseudoconstant']['var'] = 'imProviders'; } - self::sqlColumnDefn($query, $sqlColumns, $outputFieldName); - list($headerRows, $sqlColumns) = self::setHeaderRows($outputFieldName, $headerRows, $sqlColumns, $query, $value, $phoneTypes, $imProviders, $contactRelationshipTypes, $relationQuery, $selectedPaymentFields); + self::sqlColumnDefn($processor, $sqlColumns, $outputFieldName); + list($headerRows, $sqlColumns) = self::setHeaderRows($outputFieldName, $headerRows, $sqlColumns, $processor, $value, $phoneTypes, $imProviders); if ($actualDBFieldName == 'country' || $actualDBFieldName == 'world_region') { $metadata[$daoFieldName] = array('context' => 'country'); } @@ -2048,6 +1620,10 @@ WHERE {$whereClause}"; } elseif (is_array($relationValue) && $relationField == 'location') { foreach ($relationValue as $ltype => $val) { + // If the location name has a space in it the we need to handle that. This + // is kinda hacky but specifically covered in the ExportTest so later efforts to + // improve it should be secure in the knowled it will be caught. + $ltype = str_replace(' ', '_', $ltype); foreach (array_keys($val) as $fld) { $type = explode('-', $fld); $fldValue = "{$ltype}-" . $type[0]; @@ -2153,15 +1729,14 @@ WHERE {$whereClause}"; * @param $ids * @param $exportMode * @param $componentTable - * @param $contactRelationshipTypes * @param $returnProperties * @param $queryMode * @return array */ - protected static function buildRelatedContactArray($selectAll, $ids, $exportMode, $componentTable, $contactRelationshipTypes, $returnProperties, $queryMode) { + protected static function buildRelatedContactArray($selectAll, $ids, $exportMode, $componentTable, $returnProperties, $queryMode) { $allRelContactArray = $relationQuery = array(); - foreach ($contactRelationshipTypes as $rel => $dnt) { + foreach (self::$relationshipTypes as $rel => $dnt) { if ($relationReturnProperties = CRM_Utils_Array::value($rel, $returnProperties)) { $allRelContactArray[$rel] = array(); // build Query for each relationship @@ -2213,4 +1788,111 @@ WHERE {$whereClause}"; return array($relationQuery, $allRelContactArray); } + /** + * @param $field + * @param $iterationDAO + * @param $fieldValue + * @param $i18n + * @param $metadata + * @param $paymentDetails + * + * @param \CRM_Export_BAO_ExportProcessor $processor + * + * @return string + */ + protected static function getTransformedFieldValue($field, $iterationDAO, $fieldValue, $i18n, $metadata, $paymentDetails, $processor) { + + if ($field == 'id') { + return $iterationDAO->contact_id; + // special case for calculated field + } + elseif ($field == 'source_contact_id') { + return $iterationDAO->contact_id; + } + elseif ($field == 'pledge_balance_amount') { + return $iterationDAO->pledge_amount - $iterationDAO->pledge_total_paid; + // special case for calculated field + } + elseif ($field == 'pledge_next_pay_amount') { + return $iterationDAO->pledge_next_pay_amount + $iterationDAO->pledge_outstanding_amount; + } + elseif (isset($fieldValue) && + $fieldValue != '' + ) { + //check for custom data + if ($cfID = CRM_Core_BAO_CustomField::getKeyID($field)) { + return CRM_Core_BAO_CustomField::displayValue($fieldValue, $cfID); + } + + elseif (in_array($field, array( + 'email_greeting', + 'postal_greeting', + 'addressee', + ))) { + //special case for greeting replacement + $fldValue = "{$field}_display"; + return $iterationDAO->$fldValue; + } + else { + //normal fields with a touch of CRM-3157 + switch ($field) { + case 'country': + case 'world_region': + return $i18n->crm_translate($fieldValue, array('context' => 'country')); + + case 'state_province': + return $i18n->crm_translate($fieldValue, array('context' => 'province')); + + case 'gender': + case 'preferred_communication_method': + case 'preferred_mail_format': + case 'communication_style': + return $i18n->crm_translate($fieldValue); + + default: + if (isset($metadata[$field])) { + // No I don't know why we do it this way & whether we could + // make better use of pseudoConstants. + if (!empty($metadata[$field]['context'])) { + return $i18n->crm_translate($fieldValue, $metadata[$field]); + } + if (!empty($metadata[$field]['pseudoconstant'])) { + // This is not our normal syntax for pseudoconstants but I am a bit loath to + // call an external function until sure it is not increasing php processing given this + // may be iterated 100,000 times & we already have the $imProvider var loaded. + // That can be next refactor... + // Yes - definitely feeling hatred for this bit of code - I know you will beat me up over it's awfulness + // but I have to reach a stable point.... + $varName = $metadata[$field]['pseudoconstant']['var']; + if ($varName === 'imProviders') { + return CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_IM', 'provider_id', $fieldValue); + } + if ($varName === 'phoneTypes') { + return CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_Phone', 'phone_type_id', $fieldValue); + } + } + + } + return $fieldValue; + } + } + } + elseif ($processor->isExportSpecifiedPaymentFields() && array_key_exists($field, self::componentPaymentFields())) { + $paymentTableId = $processor->getPaymentTableID(); + $paymentData = CRM_Utils_Array::value($iterationDAO->$paymentTableId, $paymentDetails); + $payFieldMapper = array( + 'componentPaymentField_total_amount' => 'total_amount', + 'componentPaymentField_contribution_status' => 'contribution_status', + 'componentPaymentField_payment_instrument' => 'pay_instru', + 'componentPaymentField_transaction_id' => 'trxn_id', + 'componentPaymentField_received_date' => 'receive_date', + ); + return CRM_Utils_Array::value($payFieldMapper[$field], $paymentData, ''); + } + else { + // if field is empty or null + return ''; + } + } + } diff --git a/civicrm/CRM/Export/BAO/ExportProcessor.php b/civicrm/CRM/Export/BAO/ExportProcessor.php new file mode 100644 index 0000000000000000000000000000000000000000..574941470439751ce8c763c613e1c6c0cf23a44e --- /dev/null +++ b/civicrm/CRM/Export/BAO/ExportProcessor.php @@ -0,0 +1,633 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2018 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC (c) 2004-2018 + */ + +/** + * Class CRM_Export_BAO_ExportProcessor + * + * Class to handle logic of export. + */ +class CRM_Export_BAO_ExportProcessor { + + /** + * @var int + */ + protected $queryMode; + + /** + * @var int + */ + protected $exportMode; + + /** + * Array of fields in the main query. + * + * @var array + */ + protected $queryFields = []; + + /** + * Either AND or OR. + * + * @var string + */ + protected $queryOperator; + + /** + * Requested output fields. + * + * If set to NULL then it is 'primary fields only' + * which actually means pretty close to all fields! + * + * @var array|null + */ + protected $requestedFields; + + /** + * Key representing the head of household in the relationship array. + * + * e.g. ['8_b_a' => 'Household Member Is', '8_a_b = 'Household Member Of'.....] + * + * @var + */ + protected $relationshipTypes = []; + + /** + * Array of properties to retrieve for relationships. + * + * @var array + */ + protected $relationshipReturnProperties = []; + + /** + * @var array + */ + protected $returnProperties = []; + + /** + * CRM_Export_BAO_ExportProcessor constructor. + * + * @param int $exportMode + * @param array|NULL $requestedFields + * @param string $queryOperator + */ + public function __construct($exportMode, $requestedFields, $queryOperator) { + $this->setExportMode($exportMode); + $this->setQueryMode(); + $this->setQueryOperator($queryOperator); + $this->setRequestedFields($requestedFields); + $this->setRelationshipTypes(); + } + + /** + * @return array|null + */ + public function getRequestedFields() { + return $this->requestedFields; + } + + /** + * @param array|null $requestedFields + */ + public function setRequestedFields($requestedFields) { + $this->requestedFields = $requestedFields; + } + + + /** + * @return array + */ + public function getReturnProperties() { + return $this->returnProperties; + } + + /** + * @param array $returnProperties + */ + public function setReturnProperties($returnProperties) { + $this->returnProperties = $returnProperties; + } + + /** + * @return array + */ + public function getRelationshipTypes() { + return $this->relationshipTypes; + } + + /** + */ + public function setRelationshipTypes() { + $this->relationshipTypes = CRM_Contact_BAO_Relationship::getContactRelationshipType( + NULL, + NULL, + NULL, + NULL, + TRUE, + 'name', + FALSE + ); + } + + + /** + * @param $fieldName + * @return bool + */ + public function isRelationshipTypeKey($fieldName) { + return array_key_exists($fieldName, $this->relationshipTypes); + } + + /** + * @return string + */ + public function getQueryOperator() { + return $this->queryOperator; + } + + /** + * @param string $queryOperator + */ + public function setQueryOperator($queryOperator) { + $this->queryOperator = $queryOperator; + } + + /** + * @return array + */ + public function getQueryFields() { + return $this->queryFields; + } + + /** + * @param array $queryFields + */ + public function setQueryFields($queryFields) { + $this->queryFields = $queryFields; + } + + /** + * @return int + */ + public function getQueryMode() { + return $this->queryMode; + } + + /** + * Set the query mode based on the export mode. + */ + public function setQueryMode() { + + switch ($this->getExportMode()) { + case CRM_Export_Form_Select::CONTRIBUTE_EXPORT: + $this->queryMode = CRM_Contact_BAO_Query::MODE_CONTRIBUTE; + break; + + case CRM_Export_Form_Select::EVENT_EXPORT: + $this->queryMode = CRM_Contact_BAO_Query::MODE_EVENT; + break; + + case CRM_Export_Form_Select::MEMBER_EXPORT: + $this->queryMode = CRM_Contact_BAO_Query::MODE_MEMBER; + break; + + case CRM_Export_Form_Select::PLEDGE_EXPORT: + $this->queryMode = CRM_Contact_BAO_Query::MODE_PLEDGE; + break; + + case CRM_Export_Form_Select::CASE_EXPORT: + $this->queryMode = CRM_Contact_BAO_Query::MODE_CASE; + break; + + case CRM_Export_Form_Select::GRANT_EXPORT: + $this->queryMode = CRM_Contact_BAO_Query::MODE_GRANT; + break; + + case CRM_Export_Form_Select::ACTIVITY_EXPORT: + $this->queryMode = CRM_Contact_BAO_Query::MODE_ACTIVITY; + break; + + default: + $this->queryMode = CRM_Contact_BAO_Query::MODE_CONTACTS; + } + } + + /** + * @return int + */ + public function getExportMode() { + return $this->exportMode; + } + + /** + * @param int $exportMode + */ + public function setExportMode($exportMode) { + $this->exportMode = $exportMode; + } + + /** + * @param $params + * @param $order + * @param $returnProperties + * @return array + */ + public function runQuery($params, $order, $returnProperties) { + $query = new CRM_Contact_BAO_Query($params, $returnProperties, NULL, + FALSE, FALSE, $this->getQueryMode(), + FALSE, TRUE, TRUE, NULL, $this->getQueryOperator() + ); + + //sort by state + //CRM-15301 + $query->_sort = $order; + list($select, $from, $where, $having) = $query->query(); + $this->setQueryFields($query->_fields); + return array($query, $select, $from, $where, $having); + } + + /** + * Get array of fields to return, over & above those defined in the main contact exportable fields. + * + * These include export mode specific fields & some fields apparently required as 'exportableFields' + * but not returned by the function of the same name. + * + * @return array + * Array of fields to return in the format ['field_name' => 1,...] + */ + public function getAdditionalReturnProperties() { + + $missing = [ + 'location_type', + 'im_provider', + 'phone_type_id', + 'provider_id', + 'current_employer', + ]; + if ($this->getQueryMode() === CRM_Contact_BAO_Query::MODE_CONTACTS) { + $componentSpecificFields = []; + } + else { + $componentSpecificFields = CRM_Contact_BAO_Query::defaultReturnProperties($this->getQueryMode()); + } + if ($this->getQueryMode() === CRM_Contact_BAO_Query::MODE_PLEDGE) { + $componentSpecificFields = array_merge($componentSpecificFields, CRM_Pledge_BAO_Query::extraReturnProperties($this->getQueryMode())); + unset($componentSpecificFields['contribution_status_id']); + unset($componentSpecificFields['pledge_status_id']); + unset($componentSpecificFields['pledge_payment_status_id']); + } + if ($this->getQueryMode() === CRM_Contact_BAO_Query::MODE_CASE) { + $componentSpecificFields = array_merge($componentSpecificFields, CRM_Case_BAO_Query::extraReturnProperties($this->getQueryMode())); + } + if ($this->getQueryMode() === CRM_Contact_BAO_Query::MODE_CONTRIBUTE) { + $componentSpecificFields = array_merge($componentSpecificFields, CRM_Contribute_BAO_Query::softCreditReturnProperties(TRUE)); + unset($componentSpecificFields['contribution_status_id']); + } + return array_merge(array_fill_keys($missing, 1), $componentSpecificFields); + } + + /** + * Should payment fields be appended to the export. + * + * (This is pretty hacky so hopefully this function won't last long - notice + * how obviously it should be part of the above function!). + */ + public function isExportPaymentFields() { + if ($this->getRequestedFields() === NULL + && in_array($this->getQueryMode(), [ + CRM_Contact_BAO_Query::MODE_EVENT, + CRM_Contact_BAO_Query::MODE_MEMBER, + CRM_Contact_BAO_Query::MODE_PLEDGE, + ])) { + return TRUE; + } + elseif ($this->isExportSpecifiedPaymentFields()) { + return TRUE; + } + return FALSE; + } + + /** + * Has specific payment fields been requested (as opposed to via all fields). + * + * If specific fields have been requested then they get added at various points. + * + * @return bool + */ + public function isExportSpecifiedPaymentFields() { + if ($this->getRequestedFields() !== NULL && $this->hasRequestedComponentPaymentFields()) { + return TRUE; + } + } + + /** + * Get the name of the id field in the table that connects contributions to the export entity. + */ + public function getPaymentTableID() { + if ($this->getRequestedFields() === NULL) { + $mapping = [ + CRM_Contact_BAO_Query::MODE_EVENT => 'participant_id', + CRM_Contact_BAO_Query::MODE_MEMBER => 'membership_id', + CRM_Contact_BAO_Query::MODE_PLEDGE => 'pledge_payment_id', + ]; + return isset($mapping[$this->getQueryMode()]) ? $mapping[$this->getQueryMode()] : ''; + } + elseif ($this->hasRequestedComponentPaymentFields()) { + return 'participant_id'; + } + return FALSE; + } + + /** + * Have component payment fields been requested. + * + * @return bool + */ + protected function hasRequestedComponentPaymentFields() { + if ($this->getQueryMode() === CRM_Contact_BAO_Query::MODE_EVENT) { + $participantPaymentFields = array_intersect_key($this->getComponentPaymentFields(), $this->getReturnProperties()); + if (!empty($participantPaymentFields)) { + return TRUE; + } + } + return FALSE; + } + + /** + * Get fields that indicate payment fields have been requested for a component. + * + * @return array + */ + protected function getComponentPaymentFields() { + return [ + 'componentPaymentField_total_amount' => ts('Total Amount'), + 'componentPaymentField_contribution_status' => ts('Contribution Status'), + 'componentPaymentField_received_date' => ts('Date Received'), + 'componentPaymentField_payment_instrument' => ts('Payment Method'), + 'componentPaymentField_transaction_id' => ts('Transaction ID'), + ]; + } + + /** + * Get the default properties when not specified. + * + * In the UI this appears as 'Primary fields only' but in practice it's + * most of the kitchen sink and the hallway closet thrown in. + * + * Since CRM-952 custom fields are excluded, but no other form of mercy is shown. + * + * @return array + */ + public function getDefaultReturnProperties() { + $returnProperties = []; + $fields = CRM_Contact_BAO_Contact::exportableFields('All', TRUE, TRUE); + $skippedFields = ($this->getQueryMode() === CRM_Contact_BAO_Query::MODE_CONTACTS) ? [] : [ + 'groups', + 'tags', + 'notes' + ]; + + foreach ($fields as $key => $var) { + if ($key && (substr($key, 0, 6) != 'custom') && !in_array($key, $skippedFields)) { + $returnProperties[$key] = 1; + } + } + $returnProperties = array_merge($returnProperties, $this->getAdditionalReturnProperties()); + return $returnProperties; + } + + /** + * Add the field to relationship return properties & return it. + * + * This function is doing both setting & getting which is yuck but it is an interim + * refactor. + * + * @param array $value + * @param string $relationshipKey + * + * @return array + */ + public function setRelationshipReturnProperties($value, $relationshipKey) { + $relPhoneTypeId = $relIMProviderId = NULL; + if (!empty($value[2])) { + $relationField = CRM_Utils_Array::value(2, $value); + if (trim(CRM_Utils_Array::value(3, $value))) { + $relLocTypeId = CRM_Utils_Array::value(3, $value); + } + else { + $relLocTypeId = 'Primary'; + } + + if ($relationField == 'phone') { + $relPhoneTypeId = CRM_Utils_Array::value(4, $value); + } + elseif ($relationField == 'im') { + $relIMProviderId = CRM_Utils_Array::value(4, $value); + } + } + elseif (!empty($value[4])) { + $relationField = CRM_Utils_Array::value(4, $value); + $relLocTypeId = CRM_Utils_Array::value(5, $value); + if ($relationField == 'phone') { + $relPhoneTypeId = CRM_Utils_Array::value(6, $value); + } + elseif ($relationField == 'im') { + $relIMProviderId = CRM_Utils_Array::value(6, $value); + } + } + if (in_array($relationField, $this->getValidLocationFields()) && is_numeric($relLocTypeId)) { + $locationName = CRM_Core_PseudoConstant::getName('CRM_Core_BAO_Address', 'location_type_id', $relLocTypeId); + if ($relPhoneTypeId) { + $this->relationshipReturnProperties[$relationshipKey]['location'][$locationName]['phone-' . $relPhoneTypeId] = 1; + } + elseif ($relIMProviderId) { + $this->relationshipReturnProperties[$relationshipKey]['location'][$locationName]['im-' . $relIMProviderId] = 1; + } + else { + $this->relationshipReturnProperties[$relationshipKey]['location'][$locationName][$relationField] = 1; + } + } + else { + $this->relationshipReturnProperties[$relationshipKey][$relationField] = 1; + } + return $this->relationshipReturnProperties[$relationshipKey]; + } + + /** + * Get the default location fields to request. + * + * @return array + */ + public function getValidLocationFields() { + return [ + 'street_address', + 'supplemental_address_1', + 'supplemental_address_2', + 'supplemental_address_3', + 'city', + 'postal_code', + 'postal_code_suffix', + 'geo_code_1', + 'geo_code_2', + 'state_province', + 'country', + 'phone', + 'email', + 'im', + ]; + } + + /** + * Get the sql column definition for the given field. + * + * @param $field + * + * @return mixed + */ + public function getSqlColumnDefinition($field) { + $fieldName = $this->getMungedFieldName($field); + + // early exit for master_id, CRM-12100 + // in the DB it is an ID, but in the export, we retrive the display_name of the master record + // also for current_employer, CRM-16939 + if ($fieldName == 'master_id' || $fieldName == 'current_employer') { + return "$fieldName varchar(128)"; + } + + if (substr($fieldName, -11) == 'campaign_id') { + // CRM-14398 + return "$fieldName varchar(128)"; + } + + $queryFields = $this->getQueryFields(); + $lookUp = ['prefix_id', 'suffix_id']; + // set the sql columns + if (isset($queryFields[$field]['type'])) { + switch ($queryFields[$field]['type']) { + case CRM_Utils_Type::T_INT: + case CRM_Utils_Type::T_BOOLEAN: + if (in_array($field, $lookUp)) { + return "$fieldName varchar(255)"; + } + else { + return "$fieldName varchar(16)"; + } + + case CRM_Utils_Type::T_STRING: + if (isset($queryFields[$field]['maxlength'])) { + return "$fieldName varchar({$queryFields[$field]['maxlength']})"; + } + else { + return "$fieldName varchar(255)"; + } + + case CRM_Utils_Type::T_TEXT: + case CRM_Utils_Type::T_LONGTEXT: + case CRM_Utils_Type::T_BLOB: + case CRM_Utils_Type::T_MEDIUMBLOB: + return "$fieldName longtext"; + + case CRM_Utils_Type::T_FLOAT: + case CRM_Utils_Type::T_ENUM: + case CRM_Utils_Type::T_DATE: + case CRM_Utils_Type::T_TIME: + case CRM_Utils_Type::T_TIMESTAMP: + case CRM_Utils_Type::T_MONEY: + case CRM_Utils_Type::T_EMAIL: + case CRM_Utils_Type::T_URL: + case CRM_Utils_Type::T_CCNUM: + default: + return "$fieldName varchar(32)"; + } + } + else { + if (substr($fieldName, -3, 3) == '_id') { + return "$fieldName varchar(255)"; + } + elseif (substr($fieldName, -5, 5) == '_note') { + return "$fieldName text"; + } + else { + $changeFields = [ + 'groups', + 'tags', + 'notes', + ]; + + if (in_array($fieldName, $changeFields)) { + return "$fieldName text"; + } + else { + // set the sql columns for custom data + if (isset($queryFields[$field]['data_type'])) { + + switch ($queryFields[$field]['data_type']) { + case 'String': + // May be option labels, which could be up to 512 characters + $length = max(512, CRM_Utils_Array::value('text_length', $queryFields[$field])); + return "$fieldName varchar($length)"; + + case 'Country': + case 'StateProvince': + case 'Link': + return "$fieldName varchar(255)"; + + case 'Memo': + return "$fieldName text"; + + default: + return "$fieldName varchar(255)"; + } + } + else { + return "$fieldName text"; + } + } + } + } + } + + /** + * Get the munged field name. + * + * @param string $field + * @return string + */ + public function getMungedFieldName($field) { + $fieldName = CRM_Utils_String::munge(strtolower($field), '_', 64); + if ($fieldName == 'id') { + $fieldName = 'civicrm_primary_id'; + } + return $fieldName; + } + +} diff --git a/civicrm/CRM/Financial/BAO/FinancialAccount.php b/civicrm/CRM/Financial/BAO/FinancialAccount.php index 062eef27e1ee908e353d537c6d3e90d95d0b7660..e171ee9a48bd943685a795e1d81eeffde2a5599a 100644 --- a/civicrm/CRM/Financial/BAO/FinancialAccount.php +++ b/civicrm/CRM/Financial/BAO/FinancialAccount.php @@ -32,11 +32,6 @@ */ class CRM_Financial_BAO_FinancialAccount extends CRM_Financial_DAO_FinancialAccount { - /** - * Static holder for the default LT. - */ - static $_defaultContributionType = NULL; - /** * Class constructor. */ diff --git a/civicrm/CRM/Financial/BAO/FinancialItem.php b/civicrm/CRM/Financial/BAO/FinancialItem.php index 63eee63f636f5452b9114e8f0a661f06a6ca27ff..35e6b448d98434958b6aae19dedf7d314fe7fa89 100644 --- a/civicrm/CRM/Financial/BAO/FinancialItem.php +++ b/civicrm/CRM/Financial/BAO/FinancialItem.php @@ -47,7 +47,7 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem { * @param array $defaults * (reference ) an assoc array to hold the flattened values. * - * @return CRM_Financial_BAO_FinancialItem + * @return CRM_Financial_DAO_FinancialItem */ public static function retrieve(&$params, &$defaults) { $financialItem = new CRM_Financial_DAO_FinancialItem(); @@ -189,9 +189,9 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem { * Takes an associative array and creates a entity financial transaction object. * * @param array $params - * (reference ) an assoc array of name/value pairs. + * an assoc array of name/value pairs. * - * @return CRM_Core_BAO_FinancialTrxn + * @return CRM_Financial_DAO_EntityFinancialTrxn */ public static function createEntityTrxn($params) { $entity_trxn = new CRM_Financial_DAO_EntityFinancialTrxn(); @@ -204,9 +204,9 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem { * Retrive entity financial trxn details. * * @param array $params - * (reference ) an assoc array of name/value pairs. + * an assoc array of name/value pairs. * @param bool $maxId - * To retrive max id. + * To retrieve max id. * * @return array */ @@ -247,7 +247,7 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem { * @param array $error * Error to display. * - * @return array + * @return array|bool */ public static function checkContactPresent($contactIds, &$error) { if (empty($contactIds)) { diff --git a/civicrm/CRM/Financial/BAO/FinancialType.php b/civicrm/CRM/Financial/BAO/FinancialType.php index 3f5f5efe8d7b138edbbd025f9d05a01c925ac24d..901e7888ee45c116ff31e9e72386d0070d898a34 100644 --- a/civicrm/CRM/Financial/BAO/FinancialType.php +++ b/civicrm/CRM/Financial/BAO/FinancialType.php @@ -32,10 +32,6 @@ */ class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType { - /** - * Static holder for the default LT. - */ - static $_defaultContributionType = NULL; /** * Static cache holder of available financial types for this session */ @@ -60,7 +56,7 @@ class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType { * @param array $defaults * (reference ) an assoc array to hold the flattened values. * - * @return CRM_Contribute_BAO_ContributionType + * @return CRM_Financial_DAO_FinancialType */ public static function retrieve(&$params, &$defaults) { $financialType = new CRM_Financial_DAO_FinancialType(); @@ -80,8 +76,7 @@ class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Financial_DAO_FinancialType', $id, 'is_active', $is_active); @@ -139,7 +134,7 @@ class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType { $financialType = new CRM_Financial_DAO_FinancialType(); $financialType->id = $financialTypeId; $financialType->find(TRUE); - // tables to ingore checks for financial_type_id + // tables to ignore checks for financial_type_id $ignoreTables = array('CRM_Financial_DAO_EntityFinancialAccount'); // TODO: if (!$financialType->find(true)) { diff --git a/civicrm/CRM/Financial/DAO/FinancialAccount.php b/civicrm/CRM/Financial/DAO/FinancialAccount.php index 4d7f073092b74d2bddc06cb5b560022ccbccb4f5..f2ab3fff119d5993cb20834b6dab7b750cffbdcb 100644 --- a/civicrm/CRM/Financial/DAO/FinancialAccount.php +++ b/civicrm/CRM/Financial/DAO/FinancialAccount.php @@ -279,6 +279,7 @@ class CRM_Financial_DAO_FinancialAccount extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Header Financial Account?'), 'description' => 'Is this a header account which does not allow transactions to be posted against it directly, but only to its sub-accounts?', + 'default' => '0', 'table_name' => 'civicrm_financial_account', 'entity' => 'FinancialAccount', 'bao' => 'CRM_Financial_BAO_FinancialAccount', @@ -300,6 +301,7 @@ class CRM_Financial_DAO_FinancialAccount extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Tax Financial Account?'), 'description' => 'Is this account for taxes?', + 'default' => '0', 'table_name' => 'civicrm_financial_account', 'entity' => 'FinancialAccount', 'bao' => 'CRM_Financial_BAO_FinancialAccount', diff --git a/civicrm/CRM/Financial/DAO/FinancialItem.php b/civicrm/CRM/Financial/DAO/FinancialItem.php index 480b78afdcafe462c2012be27cbb88cb255248d2..7cfd9b651eb19c0cc69fa43a6b539bacf86602e7 100644 --- a/civicrm/CRM/Financial/DAO/FinancialItem.php +++ b/civicrm/CRM/Financial/DAO/FinancialItem.php @@ -207,6 +207,7 @@ class CRM_Financial_DAO_FinancialItem extends CRM_Core_DAO { 20, 2 ], + 'default' => '0', 'table_name' => 'civicrm_financial_item', 'entity' => 'FinancialItem', 'bao' => 'CRM_Financial_BAO_FinancialItem', diff --git a/civicrm/CRM/Financial/DAO/FinancialTrxn.php b/civicrm/CRM/Financial/DAO/FinancialTrxn.php index 6ac9060720c923806ed7dce7a15ccec4012f0f55..bf194318976b9a2dfbd79772b599c0038a5c0e23 100644 --- a/civicrm/CRM/Financial/DAO/FinancialTrxn.php +++ b/civicrm/CRM/Financial/DAO/FinancialTrxn.php @@ -321,6 +321,7 @@ class CRM_Financial_DAO_FinancialTrxn extends CRM_Core_DAO { 'headerPattern' => '', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_financial_trxn', 'entity' => 'FinancialTrxn', 'bao' => 'CRM_Financial_DAO_FinancialTrxn', diff --git a/civicrm/CRM/Financial/DAO/FinancialType.php b/civicrm/CRM/Financial/DAO/FinancialType.php index 7ee17ac490c300af78f7ad786b04a69222e5a4d9..8f805cb8c3d62db4ddff77c3215e1a7d3b8d56ee 100644 --- a/civicrm/CRM/Financial/DAO/FinancialType.php +++ b/civicrm/CRM/Financial/DAO/FinancialType.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Financial/FinancialType.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:9d787931917508983d68631821eea721) + * (GenCodeChecksum:6d85bc0675253407de19ac9226ba4478) */ /** @@ -114,6 +114,15 @@ class CRM_Financial_DAO_FinancialType extends CRM_Core_DAO { 'entity' => 'FinancialType', 'bao' => 'CRM_Financial_BAO_FinancialType', 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + 'label' => ts("Name"), + ], + 'pseudoconstant' => [ + 'table' => 'civicrm_financial_type', + 'keyColumn' => 'id', + 'labelColumn' => 'name', + ] ], 'description' => [ 'name' => 'description', @@ -126,6 +135,10 @@ class CRM_Financial_DAO_FinancialType extends CRM_Core_DAO { 'entity' => 'FinancialType', 'bao' => 'CRM_Financial_BAO_FinancialType', 'localizable' => 0, + 'html' => [ + 'type' => 'TextArea', + 'label' => ts("Description"), + ], ], 'is_deductible' => [ 'name' => 'is_deductible', @@ -137,6 +150,10 @@ class CRM_Financial_DAO_FinancialType extends CRM_Core_DAO { 'entity' => 'FinancialType', 'bao' => 'CRM_Financial_BAO_FinancialType', 'localizable' => 0, + 'html' => [ + 'type' => 'CheckBox', + 'label' => ts("Tax-Deductible?"), + ], ], 'is_reserved' => [ 'name' => 'is_reserved', @@ -147,6 +164,10 @@ class CRM_Financial_DAO_FinancialType extends CRM_Core_DAO { 'entity' => 'FinancialType', 'bao' => 'CRM_Financial_BAO_FinancialType', 'localizable' => 0, + 'html' => [ + 'type' => 'CheckBox', + 'label' => ts("Reserved?"), + ], ], 'is_active' => [ 'name' => 'is_active', @@ -157,6 +178,10 @@ class CRM_Financial_DAO_FinancialType extends CRM_Core_DAO { 'entity' => 'FinancialType', 'bao' => 'CRM_Financial_BAO_FinancialType', 'localizable' => 0, + 'html' => [ + 'type' => 'CheckBox', + 'label' => ts("Enabled?"), + ], ], ]; CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); diff --git a/civicrm/CRM/Financial/Form/FinancialAccount.php b/civicrm/CRM/Financial/Form/FinancialAccount.php index 5b9b8f49c310fa0d3065ededd9f8272081fccf01..1b1eb9e3acf55ec3743d77a1b5bb08284f49f972 100644 --- a/civicrm/CRM/Financial/Form/FinancialAccount.php +++ b/civicrm/CRM/Financial/Form/FinancialAccount.php @@ -200,7 +200,14 @@ class CRM_Financial_Form_FinancialAccount extends CRM_Contribute_Form { if ($this->_action & CRM_Core_Action::UPDATE) { $params['id'] = $this->_id; } - + foreach ([ + 'is_active', + 'is_deductible', + 'is_tax', + 'is_default', + ] as $field) { + $params[$field] = CRM_Utils_Array::value($field, $params, FALSE); + } $financialAccount = CRM_Financial_BAO_FinancialAccount::add($params); CRM_Core_Session::setStatus(ts('The Financial Account \'%1\' has been saved.', array(1 => $financialAccount->name)), ts('Saved'), 'success'); } diff --git a/civicrm/CRM/Financial/Form/FinancialType.php b/civicrm/CRM/Financial/Form/FinancialType.php index 10a30c7f2480a13f185b2298f1de9d0e06e43627..3600ef65473562eb458f52dfcb0444ea6e4770fd 100644 --- a/civicrm/CRM/Financial/Form/FinancialType.php +++ b/civicrm/CRM/Financial/Form/FinancialType.php @@ -36,6 +36,22 @@ */ class CRM_Financial_Form_FinancialType extends CRM_Contribute_Form { + use CRM_Core_Form_EntityFormTrait; + + /** + * Fields for the entity to be assigned to the template. + * + * @var array + */ + protected $entityFields = []; + + /** + * Deletion message to be assigned to the form. + * + * @var string + */ + protected $deleteMessage; + /** * Set variables up before form is built. */ @@ -46,40 +62,67 @@ class CRM_Financial_Form_FinancialType extends CRM_Contribute_Form { ) { CRM_Core_Error::fatal(ts('You do not have permission to access this page.')); } + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); parent::preProcess(); + $this->setPageTitle(ts('Financial Type')); + if ($this->_id) { + $this->_title = CRM_Core_PseudoConstant::getLabel( + 'CRM_Financial_BAO_FinancialType', + 'financial_type', + $this->_id + ); + $this->assign('aid', $this->_id); + } + } + + /** + * Set entity fields to be assigned to the form. + */ + protected function setEntityFields() { + $this->entityFields = [ + 'name' => [ + 'name' => 'name', + 'required' => TRUE, + ], + 'description' => ['name' => 'description'], + 'is_deductible' => [ + 'name' => 'is_deductible', + 'description' => ts('Are contributions of this type tax-deductible?'), + ], + 'is_reserved' => ['name' => 'is_reserved'], + 'is_active' => ['name' => 'is_active'], + ]; + } + + /** + * Explicitly declare the entity api name. + */ + public function getDefaultEntity() { + return 'FinancialType'; + } + + /** + * Set the delete message. + * + * We do this from the constructor in order to do a translation. + */ + public function setDeleteMessage() { + $this->deleteMessage = ts('WARNING: You cannot delete a financial type if it is currently used by any Contributions, Contribution Pages or Membership Types. Consider disabling this option instead.') . ts('Deleting a financial type cannot be undone.') . ts('Do you want to continue?'); } /** * Build the form object. */ public function buildQuickForm() { - parent::buildQuickForm(); - $this->setPageTitle(ts('Financial Type')); - - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); - if ($this->_id) { - $this->_title = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $this->_id, 'name'); - } + self::buildQuickEntityForm(); if ($this->_action & CRM_Core_Action::DELETE) { return; } - $this->applyFilter('__ALL__', 'trim'); - $this->add('text', 'name', ts('Name'), CRM_Core_DAO::getAttribute('CRM_Financial_DAO_FinancialType', 'name'), TRUE); - - $this->add('text', 'description', ts('Description'), CRM_Core_DAO::getAttribute('CRM_Financial_DAO_FinancialType', 'description')); - - $this->add('checkbox', 'is_deductible', ts('Tax-Deductible?'), CRM_Core_DAO::getAttribute('CRM_Financial_DAO_FinancialType', 'is_deductible')); - $this->add('checkbox', 'is_active', ts('Enabled?'), CRM_Core_DAO::getAttribute('CRM_Financial_DAO_FinancialType', 'is_active')); - $this->add('checkbox', 'is_reserved', ts('Reserved?'), CRM_Core_DAO::getAttribute('CRM_Financial_DAO_FinancialType', 'is_reserved')); - if ($this->_action == CRM_Core_Action::UPDATE) { - $this->assign('aid', $this->_id); - } - if ($this->_action == CRM_Core_Action::UPDATE && CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $this->_id, 'is_reserved', 'vid')) { - $this->freeze(array('is_active')); + if ($this->_action == CRM_Core_Action::UPDATE && CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $this->_id, 'is_reserved')) { + $this->freeze(['is_active']); } - $this->addRule('name', ts('A financial type with this name already exists. Please select another name.'), 'objectExists', - array('CRM_Financial_DAO_FinancialType', $this->_id) + ['CRM_Financial_DAO_FinancialType', $this->_id] ); } @@ -95,35 +138,46 @@ class CRM_Financial_Form_FinancialType extends CRM_Contribute_Form { CRM_Core_Session::setStatus(ts('Selected financial type has been deleted.'), ts('Record Deleted'), 'success'); } else { - $params = $ids = array(); // store the submitted values in an array $params = $this->exportValues(); - - if ($this->_action & CRM_Core_Action::UPDATE) { - $ids['financialType'] = $this->_id; + if ($this->_id) { + $params['id'] = $this->_id; } - - $financialType = CRM_Financial_BAO_FinancialType::add($params, $ids); + foreach ([ + 'is_active', + 'is_reserved', + 'is_deductible', + ] as $field) { + $params[$field] = CRM_Utils_Array::value($field, $params, FALSE); + } + $financialType = civicrm_api3('FinancialType', 'create', $params); if ($this->_action & CRM_Core_Action::UPDATE) { $url = CRM_Utils_System::url('civicrm/admin/financial/financialType', 'reset=1&action=browse'); - CRM_Core_Session::setStatus(ts('The financial type "%1" has been updated.', array(1 => $financialType->name)), ts('Saved'), 'success'); + CRM_Core_Session::setStatus(ts('The financial type "%1" has been updated.', [1 => $params['name']]), ts('Saved'), 'success'); } else { - $url = CRM_Utils_System::url('civicrm/admin/financial/financialType/accounts', 'reset=1&action=browse&aid=' . $financialType->id); - $statusArray = array( - 1 => $financialType->name, - 2 => $financialType->name, - 3 => CRM_Utils_Array::value(0, $financialType->titles), - 4 => CRM_Utils_Array::value(1, $financialType->titles), - 5 => CRM_Utils_Array::value(2, $financialType->titles), - ); - if (empty($financialType->titles)) { - $text = ts('Your Financial "%1" Type has been created and assigned to an existing financial account with the same title. You should review the assigned account and determine whether additional account relationships are needed.', $statusArray); + $url = CRM_Utils_System::url('civicrm/admin/financial/financialType/accounts', 'reset=1&action=browse&aid=' . $financialType['id']); + + $statusArray = [ + 1 => $params['name'], + ]; + $financialAccounts = civicrm_api3('EntityFinancialAccount', 'get', [ + 'return' => ["financial_account_id.name"], + 'entity_table' => "civicrm_financial_type", + 'entity_id' => $financialType['id'], + 'options' => ['sort' => "id"], + 'account_relationship' => ['!=' => "Income Account is"], + ]); + if (!empty($financialAccounts['values'])) { + foreach ($financialAccounts['values'] as $financialAccount) { + $statusArray[] = $financialAccount['financial_account_id.name']; + } + $text = ts('Your Financial "%1" Type has been created, along with a corresponding income account "%1". That income account, along with standard financial accounts "%2", "%3" and "%4" have been linked to the financial type. You may edit or replace those relationships here.', $statusArray); } else { - $text = ts('Your Financial "%1" Type has been created, along with a corresponding income account "%2". That income account, along with standard financial accounts "%3", "%4" and "%5" have been linked to the financial type. You may edit or replace those relationships here.', $statusArray); + $text = ts('Your Financial "%1" Type has been created and assigned to an existing financial account with the same title. You should review the assigned account and determine whether additional account relationships are needed.', $statusArray); } - CRM_Core_Session::setStatus($text, ts('Saved'), 'success', array('expires' => 0)); + CRM_Core_Session::setStatus($text, ts('Saved'), 'success', ['expires' => 0]); } $session = CRM_Core_Session::singleton(); diff --git a/civicrm/CRM/Friend/BAO/Friend.php b/civicrm/CRM/Friend/BAO/Friend.php index 75e65ba21652abe4a277dabeba5a83319ba7dfc0..38455411ff905c5fa408fc75367cf0fda5a919c4 100644 --- a/civicrm/CRM/Friend/BAO/Friend.php +++ b/civicrm/CRM/Friend/BAO/Friend.php @@ -178,7 +178,6 @@ class CRM_Friend_BAO_Friend extends CRM_Friend_DAO_Friend { $mailParams['message'] = CRM_Utils_Array::value('suggested_message', $params); // Default "from email address" is default domain address. - // This is normally overridden by one of the if statements below list($_, $mailParams['email_from']) = CRM_Core_BAO_Domain::getNameAndEmail(); list($username, $mailParams['domain']) = explode('@', $mailParams['email_from']); @@ -218,9 +217,11 @@ class CRM_Friend_BAO_Friend extends CRM_Friend_DAO_Friend { $mailParams['module'] = 'event'; } elseif ($params['entity_table'] == 'civicrm_pcp') { - $mailParams['email_from'] = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Email', $params['source_contact_id'], - 'email', 'contact_id' - ); + if (Civi::settings()->get('allow_mail_from_logged_in_contact')) { + $mailParams['email_from'] = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Email', $params['source_contact_id'], + 'email', 'contact_id' + ); + } $urlPath = 'civicrm/pcp/info'; $mailParams['module'] = 'contribute'; } @@ -298,9 +299,18 @@ class CRM_Friend_BAO_Friend extends CRM_Friend_DAO_Friend { $fromName = $email; } - // use contact email, CRM-4963 + if (Civi::settings()->get('allow_mail_from_logged_in_contact')) { + // use contact email, CRM-4963 + if (empty($values['email_from'])) { + $values['email_from'] = $email; + } + } + + // If we have no "email_from" when we get to here, explicitly set it to the default domain email. if (empty($values['email_from'])) { - $values['email_from'] = $email; + list($domainFromName, $domainEmail) = CRM_Core_BAO_Domain::getNameAndEmail(); + $values['email_from'] = $domainEmail; + $values['domain'] = $domainFromName; } $templateParams = array( diff --git a/civicrm/CRM/Mailing/BAO/Mailing.php b/civicrm/CRM/Mailing/BAO/Mailing.php index 27a46fd693200a7f6b863f5000402840db9351f6..212284f00ee82f09cc36837396c9a07b98d16c7b 100644 --- a/civicrm/CRM/Mailing/BAO/Mailing.php +++ b/civicrm/CRM/Mailing/BAO/Mailing.php @@ -228,35 +228,39 @@ class CRM_Mailing_BAO_Mailing extends CRM_Mailing_DAO_Mailing { ); if ($isSMSmode) { - $includeFilters = array( - "mg.group_type = 'Include'", - 'mg.search_id IS NULL', - "$contact.is_opt_out = 0", - "$contact.is_deceased <> 1", - "$entityTable.phone_type_id = " . CRM_Core_PseudoConstant::getKey('CRM_Core_DAO_Phone', 'phone_type_id', 'Mobile'), - "$entityTable.phone IS NOT NULL", - "$entityTable.phone != ''", - "$entityTable.is_primary = 1", - "mg.mailing_id = #mailingID", - 'temp.contact_id IS null', + $criteria = array( + 'is_opt_out' => CRM_Utils_SQL_Select::fragment()->where("$contact.is_opt_out = 0"), + 'is_deceased' => CRM_Utils_SQL_Select::fragment()->where("$contact.is_deceased <> 1"), + 'do_not_sms' => CRM_Utils_SQL_Select::fragment()->where("$contact.do_not_sms = 0"), + 'location_filter' => CRM_Utils_SQL_Select::fragment()->where("$entityTable.phone_type_id = " . CRM_Core_PseudoConstant::getKey('CRM_Core_DAO_Phone', 'phone_type_id', 'Mobile')), + 'phone_not_null' => CRM_Utils_SQL_Select::fragment()->where("$entityTable.phone IS NOT NULL"), + 'phone_not_empty' => CRM_Utils_SQL_Select::fragment()->where("$entityTable.phone != ''"), + 'is_primary' => CRM_Utils_SQL_Select::fragment()->where("$entityTable.is_primary = 1"), + 'mailing_id' => CRM_Utils_SQL_Select::fragment()->where("mg.mailing_id = #mailingID"), + 'temp_contact_null' => CRM_Utils_SQL_Select::fragment()->where('temp.contact_id IS null'), + 'order_by' => CRM_Utils_SQL_Select::fragment()->orderBy("$entityTable.is_primary = 1"), ); - $order_by = array("$entityTable.is_primary = 1"); } else { // Criterias to filter recipients that need to be included - $includeFilters = array( - "$contact.do_not_email = 0", - "$contact.is_opt_out = 0", - "$contact.is_deceased <> 1", - $location_filter, - "$entityTable.email IS NOT NULL", - "$entityTable.email != ''", - "$entityTable.on_hold = 0", - "mg.mailing_id = #mailingID", - 'temp.contact_id IS NULL', + $criteria = array( + 'do_not_email' => CRM_Utils_SQL_Select::fragment()->where("$contact.do_not_email = 0"), + 'is_opt_out' => CRM_Utils_SQL_Select::fragment()->where("$contact.is_opt_out = 0"), + 'is_deceased' => CRM_Utils_SQL_Select::fragment()->where("$contact.is_deceased <> 1"), + 'location_filter' => CRM_Utils_SQL_Select::fragment()->where($location_filter), + 'email_not_null' => CRM_Utils_SQL_Select::fragment()->where("$entityTable.email IS NOT NULL"), + 'email_not_empty' => CRM_Utils_SQL_Select::fragment()->where("$entityTable.email != ''"), + 'email_not_on_hold' => CRM_Utils_SQL_Select::fragment()->where("$entityTable.on_hold = 0"), + 'mailing_id' => CRM_Utils_SQL_Select::fragment()->where("mg.mailing_id = #mailingID"), + 'temp_contact_null' => CRM_Utils_SQL_Select::fragment()->where('temp.contact_id IS NULL'), + 'order_by' => CRM_Utils_SQL_Select::fragment()->orderBy($order_by), ); } + // Allow user to alter query responsible to fetch mailing recipients before build, + // by changing the mail filters identified $params + CRM_Utils_Hook::alterMailingRecipients($mailingObj, $criteria, 'pre'); + // Get the group contacts, but only those which are not in the // exclusion temp table. if (!empty($recipientsGroup['Include'])) { @@ -267,7 +271,7 @@ class CRM_Mailing_BAO_Mailing extends CRM_Mailing_DAO_Mailing { ->join('mg', " INNER JOIN civicrm_mailing_group mg ON gc.group_id = mg.entity_id AND mg.search_id IS NULL ") ->join('temp', " LEFT JOIN $excludeTempTablename temp ON $contact.id = temp.contact_id ") ->where('gc.group_id IN (#groups) AND gc.status = "Added"') - ->where($includeFilters) + ->merge($criteria) ->groupBy(array("$contact.id", "$entityTable.id")) ->replaceInto($includedTempTablename, array('contact_id', $entityColumn)) ->param('#groups', $recipientsGroup['Include']) @@ -293,8 +297,7 @@ class CRM_Mailing_BAO_Mailing extends CRM_Mailing_DAO_Mailing { ->join('mg', " INNER JOIN civicrm_mailing_group mg ON gc.group_id = mg.entity_id AND mg.search_id IS NULL ") ->join('temp', " LEFT JOIN $excludeTempTablename temp ON $contact.id = temp.contact_id ") ->where('gc.group_id IN (#groups)') - ->where($includeFilters) - ->orderBy($order_by) + ->merge($criteria) ->replaceInto($includedTempTablename, array('contact_id', $entityColumn)) ->param('#groups', $includeSmartGroupIDs) ->param('#mailingID', $mailingID) @@ -370,6 +373,8 @@ class CRM_Mailing_BAO_Mailing extends CRM_Mailing_DAO_Mailing { $mailingGroup->reset(); $mailingGroup->query(" DROP TEMPORARY TABLE $excludeTempTablename "); $mailingGroup->query(" DROP TEMPORARY TABLE $includedTempTablename "); + + CRM_Utils_Hook::alterMailingRecipients($mailingObj, $criteria, 'post'); } /** diff --git a/civicrm/CRM/Mailing/BAO/MailingJob.php b/civicrm/CRM/Mailing/BAO/MailingJob.php index 398afeeaa202fab05190c800bcd6d54a8d49eb91..12379bcc8e68013932818f93f838124eefe0254b 100644 --- a/civicrm/CRM/Mailing/BAO/MailingJob.php +++ b/civicrm/CRM/Mailing/BAO/MailingJob.php @@ -676,10 +676,7 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) if (is_a($result, 'PEAR_Error') && !$mailing->sms_provider_id) { // CRM-9191 $message = $result->getMessage(); - if ( - strpos($message, 'Failed to write to socket') !== FALSE || - strpos($message, 'Failed to set sender') !== FALSE - ) { + if ($this->isTemporaryError($message)) { // lets log this message and code $code = $result->getCode(); CRM_Core_Error::debug_log_message("SMTP Socket Error or failed to set sender error. Message: $message, Code: $code"); @@ -786,6 +783,43 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) return $result; } + /** + * Determine if an SMTP error is temporary or permanent. + * + * @param string $message + * PEAR error message. + * @return bool + * TRUE - Temporary/retriable error + * FALSE - Permanent/non-retriable error + */ + protected function isTemporaryError($message) { + // SMTP response code is buried in the message. + $code = preg_match('/ \(code: (.+), response: /', $message, $matches) ? $matches[1] : ''; + + if (strpos($message, 'Failed to write to socket') !== FALSE) { + return TRUE; + } + + // Register 5xx SMTP response code (permanent failure) as bounce. + if (isset($code{0}) && $code{0} === '5') { + return FALSE; + } + + if (strpos($message, 'Failed to set sender') !== FALSE) { + return TRUE; + } + + if (strpos($message, 'Failed to add recipient') !== FALSE) { + return TRUE; + } + + if (strpos($message, 'Failed to send data') !== FALSE) { + return TRUE; + } + + return FALSE; + } + /** * Cancel a mailing. * diff --git a/civicrm/CRM/Mailing/BAO/Recipients.php b/civicrm/CRM/Mailing/BAO/Recipients.php index 4ca5be9cde451b83618b56ba2a3b7de5dfdbaba8..5dfeb1e58af4f21eed237888d06b1123290d7bce 100644 --- a/civicrm/CRM/Mailing/BAO/Recipients.php +++ b/civicrm/CRM/Mailing/BAO/Recipients.php @@ -102,7 +102,7 @@ WHERE mailing_id = %1 CRM_Core_DAO::executeQuery("DROP TEMPORARY TABLE IF EXISTS srcMailing_$sourceMailingId"); $sql = " CREATE TEMPORARY TABLE srcMailing_$sourceMailingId - (mailing_recipient_id int, id int PRIMARY KEY AUTO_INCREMENT, INDEX(mailing_recipient_id)) + (mailing_recipient_id int unsigned, id int PRIMARY KEY AUTO_INCREMENT, INDEX(mailing_recipient_id)) ENGINE=HEAP"; CRM_Core_DAO::executeQuery($sql); $sql = " diff --git a/civicrm/CRM/Mailing/BAO/TrackableURL.php b/civicrm/CRM/Mailing/BAO/TrackableURL.php index 6d563f3ee2469915eeb1b654fb439a992529154b..b1e40d7009a0105bf54e8774456ed06f65e3a550 100644 --- a/civicrm/CRM/Mailing/BAO/TrackableURL.php +++ b/civicrm/CRM/Mailing/BAO/TrackableURL.php @@ -97,7 +97,7 @@ class CRM_Mailing_BAO_TrackableURL extends CRM_Mailing_DAO_TrackableURL { $returnUrl = "{$urlCache[$mailing_id . $url]}&qid={$queue_id}"; if ($hrefExists) { - $returnUrl = "href='{$returnUrl}'"; + $returnUrl = "href='{$returnUrl}' rel='nofollow'"; } return $returnUrl; diff --git a/civicrm/CRM/Mailing/DAO/Component.php b/civicrm/CRM/Mailing/DAO/Component.php index d0c861594b640c4389bc51431c12aae9e6165a56..38aef9f12aea3ffd2120344fe59b57e9307d8738 100644 --- a/civicrm/CRM/Mailing/DAO/Component.php +++ b/civicrm/CRM/Mailing/DAO/Component.php @@ -182,6 +182,7 @@ class CRM_Mailing_DAO_Component extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Mailing Component is Default?'), 'description' => 'Is this the default component for this component_type?', + 'default' => '0', 'table_name' => 'civicrm_mailing_component', 'entity' => 'Component', 'bao' => 'CRM_Mailing_BAO_Component', diff --git a/civicrm/CRM/Mailing/DAO/Mailing.php b/civicrm/CRM/Mailing/DAO/Mailing.php index aafeb0090d3618317f75eb2f655ea5c18c9e4cde..286256a503b2f5a217e43827ce30b7c502693d9b 100644 --- a/civicrm/CRM/Mailing/DAO/Mailing.php +++ b/civicrm/CRM/Mailing/DAO/Mailing.php @@ -674,6 +674,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Override Verp'), 'description' => 'Should we overrite VERP address in Reply-To', + 'default' => '0', 'table_name' => 'civicrm_mailing', 'entity' => 'Mailing', 'bao' => 'CRM_Mailing_BAO_Mailing', @@ -814,6 +815,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Mailing Archived?'), 'description' => 'Is this mailing archived?', + 'default' => '0', 'table_name' => 'civicrm_mailing', 'entity' => 'Mailing', 'bao' => 'CRM_Mailing_BAO_Mailing', @@ -865,6 +867,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('No Duplicate emails?'), 'description' => 'Remove duplicate emails?', + 'default' => '0', 'table_name' => 'civicrm_mailing', 'entity' => 'Mailing', 'bao' => 'CRM_Mailing_BAO_Mailing', diff --git a/civicrm/CRM/Mailing/DAO/MailingJob.php b/civicrm/CRM/Mailing/DAO/MailingJob.php index 93cd68194865f737a7a13bb507b1196a42ee5ee4..931685895fdc0c6b901021df8319a958804eb3e4 100644 --- a/civicrm/CRM/Mailing/DAO/MailingJob.php +++ b/civicrm/CRM/Mailing/DAO/MailingJob.php @@ -216,6 +216,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Mailing Job Is Test?'), 'description' => 'Is this job for a test mail?', + 'default' => '0', 'table_name' => 'civicrm_mailing_job', 'entity' => 'MailingJob', 'bao' => 'CRM_Mailing_BAO_MailingJob', @@ -250,6 +251,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Mailing Job Offset'), 'description' => 'Offset of the child job', + 'default' => '0', 'table_name' => 'civicrm_mailing_job', 'entity' => 'MailingJob', 'bao' => 'CRM_Mailing_BAO_MailingJob', @@ -260,6 +262,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Mailing Job Limit'), 'description' => 'Queue size limit for each child job', + 'default' => '0', 'table_name' => 'civicrm_mailing_job', 'entity' => 'MailingJob', 'bao' => 'CRM_Mailing_BAO_MailingJob', diff --git a/civicrm/CRM/Member/DAO/Membership.php b/civicrm/CRM/Member/DAO/Membership.php index 969b243937fab433a6a62c3bf96285b8d204908b..136cc97aca08b5a74e5dd805640ae07f0443ea9c 100644 --- a/civicrm/CRM/Member/DAO/Membership.php +++ b/civicrm/CRM/Member/DAO/Membership.php @@ -406,6 +406,7 @@ class CRM_Member_DAO_Membership extends CRM_Core_DAO { 'headerPattern' => '/(is.)?test(.member(ship)?)?/i', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_membership', 'entity' => 'Membership', 'bao' => 'CRM_Member_BAO_Membership', @@ -423,6 +424,7 @@ class CRM_Member_DAO_Membership extends CRM_Core_DAO { 'headerPattern' => '/(is.)?(pay(.)?later)$/i', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_membership', 'entity' => 'Membership', 'bao' => 'CRM_Member_BAO_Membership', diff --git a/civicrm/CRM/Member/DAO/MembershipBlock.php b/civicrm/CRM/Member/DAO/MembershipBlock.php index cba09a6af55a9f7ac2c720c74993a3fcde20f7b4..118a8ff425145bbe233a1bc3b27a5a5f7c06caeb 100644 --- a/civicrm/CRM/Member/DAO/MembershipBlock.php +++ b/civicrm/CRM/Member/DAO/MembershipBlock.php @@ -281,6 +281,7 @@ class CRM_Member_DAO_MembershipBlock extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Required'), 'description' => 'Is membership sign up optional', + 'default' => '0', 'table_name' => 'civicrm_membership_block', 'entity' => 'MembershipBlock', 'bao' => 'CRM_Member_BAO_MembershipBlock', diff --git a/civicrm/CRM/Member/DAO/MembershipStatus.php b/civicrm/CRM/Member/DAO/MembershipStatus.php index e38b1559339c5d47050f169c7a6355e7785ffe28..4df669ce82c9453e57f21b69feefec3315e05d31 100644 --- a/civicrm/CRM/Member/DAO/MembershipStatus.php +++ b/civicrm/CRM/Member/DAO/MembershipStatus.php @@ -346,6 +346,7 @@ class CRM_Member_DAO_MembershipStatus extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Reserved'), 'description' => 'Is this membership_status reserved.', + 'default' => '0', 'table_name' => 'civicrm_membership_status', 'entity' => 'MembershipStatus', 'bao' => 'CRM_Member_BAO_MembershipStatus', diff --git a/civicrm/CRM/Member/DAO/MembershipType.php b/civicrm/CRM/Member/DAO/MembershipType.php index a5469039bf7129187dd7da5da6c7dac4b4fa8e75..275933dc11e694ec934074ab98b06b0da101cebc 100644 --- a/civicrm/CRM/Member/DAO/MembershipType.php +++ b/civicrm/CRM/Member/DAO/MembershipType.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Member/MembershipType.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:51b478b01b1ef20a54b1039ccc29d0ab) + * (GenCodeChecksum:b36330fa029a5c1467441e89b7c45c63) */ /** @@ -305,6 +305,7 @@ class CRM_Member_DAO_MembershipType extends CRM_Core_DAO { 18, 9 ], + 'default' => '0', 'table_name' => 'civicrm_membership_type', 'entity' => 'MembershipType', 'bao' => 'CRM_Member_BAO_MembershipType', @@ -484,10 +485,14 @@ class CRM_Member_DAO_MembershipType extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Auto Renew'), 'description' => '0 = No auto-renew option; 1 = Give option, but not required; 2 = Auto-renew required;', + 'default' => '0', 'table_name' => 'civicrm_membership_type', 'entity' => 'MembershipType', 'bao' => 'CRM_Member_BAO_MembershipType', 'localizable' => 0, + 'html' => [ + 'type' => 'Radio', + ], 'pseudoconstant' => [ 'callback' => 'CRM_Core_SelectValues::memberAutoRenew', ] diff --git a/civicrm/CRM/Member/Form/MembershipStatus.php b/civicrm/CRM/Member/Form/MembershipStatus.php index 10b468febd9c5530001950861151f9d24065bb32..e51f08918ef63049c999ef4221faae0aaf0a8838 100644 --- a/civicrm/CRM/Member/Form/MembershipStatus.php +++ b/civicrm/CRM/Member/Form/MembershipStatus.php @@ -106,13 +106,7 @@ class CRM_Member_Form_MembershipStatus extends CRM_Core_Form { * @return array */ public function setDefaultValues() { - $defaults = array(); - - if ($this->getEntityId()) { - $params = array('id' => $this->getEntityId()); - $baoName = $this->_BAOName; - $baoName::retrieve($params, $defaults); - } + $defaults = $this->getEntityDefaults(); if ($this->_action & CRM_Core_Action::ADD) { $defaults['is_active'] = 1; diff --git a/civicrm/CRM/Member/Form/MembershipType.php b/civicrm/CRM/Member/Form/MembershipType.php index ba2ab9c19aed853ae7c7a0dceb2da6f27fb614f8..3a5d4926bc9361288e8174521b7388bba370e464 100644 --- a/civicrm/CRM/Member/Form/MembershipType.php +++ b/civicrm/CRM/Member/Form/MembershipType.php @@ -38,6 +38,109 @@ */ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig { + use CRM_Core_Form_EntityFormTrait; + + /** + * Fields for the entity to be assigned to the template. + * + * Fields may have keys + * - name (required to show in tpl from the array) + * - description (optional, will appear below the field) + * - not-auto-addable - this class will not attempt to add the field using addField. + * (this will be automatically set if the field does not have html in it's metadata + * or is not a core field on the form's entity). + * - help (option) add help to the field - e.g ['id' => 'id-source', 'file' => 'CRM/Contact/Form/Contact']] + * - template - use a field specific template to render this field + * - required + * - is_freeze (field should be frozen). + * + * @var array + */ + protected $entityFields = []; + + /** + * Set entity fields to be assigned to the form. + */ + protected function setEntityFields() { + $this->entityFields = [ + 'name' => [ + 'required' => 'TRUE', + 'name' => 'name', + 'description' => ts("e.g. 'Student', 'Senior', 'Honor Society'..."), + ], + 'description' => [ + 'name' => 'description', + 'description' => ts("Description of this membership type for internal use. May include eligibility, benefits, terms, etc."), + ], + 'member_of_contact_id' => [ + 'name' => 'member_of_contact_id', + 'description' => ts("Members assigned this membership type belong to which organization (e.g. this is for membership in 'Save the Whales - Northwest Chapter'). NOTE: This organization/group/chapter must exist as a CiviCRM Organization type contact."), + ], + 'minimum_fee' => [ + 'name' => 'minimum_fee', + 'description' => ts('Minimum fee required for this membership type. For free/complimentary memberships - set minimum fee to zero (0). NOTE: When using CiviCRM to process sales taxes this should be the tax exclusive amount.'), + 'formatter' => 'crmMoney', + ], + 'financial_type_id' => [ + 'name' => 'financial_type_id', + 'description' => ts('Select the financial type assigned to fees for this membership type (for example \'Membership Fees\'). This is required for all membership types - including free or complimentary memberships.'), + ], + 'auto_renew' => [ + 'name' => 'auto_renew', + 'options' => CRM_Core_SelectValues::memberAutoRenew(), + 'place_holder' => ts('You will need to select and configure a supported payment processor (currently Authorize.Net, PayPal Pro, or PayPal Website Standard) in order to offer automatically renewing memberships.'), + ], + 'duration_interval' => [ + 'name' => 'duration_interval', + ], + 'duration_unit' => [ + 'name' => 'duration_unit', + 'description' => ts('Duration of this membership (e.g. 30 days, 2 months, 5 years, 1 lifetime)'), + ], + 'period_type' => [ + 'name' => 'period_type', + 'description' => ts("Select 'rolling' if membership periods begin at date of signup. Select 'fixed' if membership periods begin on a set calendar date."), + 'help' => ['id' => 'period-type', 'file' => "CRM/Member/Page/MembershipType.hlp"], + ], + 'fixed_period_start_day' => [ + 'name' => 'fixed_period_start_day', + 'description' => ts("Month and day on which a <strong>fixed</strong> period membership or subscription begins. Example: A fixed period membership with Start Day set to Jan 01 means that membership periods would be 1/1/06 - 12/31/06 for anyone signing up during 2006."), + ], + 'fixed_period_rollover_day' => [ + 'name' => 'fixed_period_rollover_day', + 'description' => ts('Membership signups on or after this date cover the following calendar year as well. Example: If the rollover day is November 30, membership period for signups during December will cover the following year.'), + ], + 'relationship_type_id' => [ + 'name' => 'relationship_type_id', + ], + 'max_related' => [ + 'name' => 'max_related', + 'description' => ts('Maximum number of related memberships (leave blank for unlimited).'), + ], + 'visibility' => [ + 'name' => 'visibility', + 'description' => ts("Can this membership type be used for self-service signups ('Public'), or is it only for CiviCRM users with 'Edit Contributions' permission ('Admin')."), + ], + 'weight' => [ + 'name' => 'weight', + ], + 'is_active' => [ + 'name' => 'is_active', + ], + ]; + + if (!CRM_Financial_BAO_PaymentProcessor::hasPaymentProcessorSupporting(array('Recurring'))) { + $this->entityFields['auto_renew']['not-auto-addable'] = TRUE; + $this->entityFields['auto_renew']['documentation_link'] = ['page' => 'user/contributions/payment-processors']; + } + } + + /** + * Deletion message to be assigned to the form. + * + * @var string + */ + protected $deleteMessage; /** * Explicitly declare the entity api name. @@ -46,6 +149,15 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig { return 'MembershipType'; } + /** + * Set the delete message. + * + * We do this from the constructor in order to do a translation. + */ + public function setDeleteMessage() { + $this->deleteMessage = ts('WARNING: Deleting this option will result in the loss of all membership records of this type.') . ts('This may mean the loss of a substantial amount of data, and the action cannot be undone.') . ts('Do you want to continue?'); + } + /** * Explicitly declare the form context. */ @@ -127,31 +239,22 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig { * @throws \CiviCRM_API3_Exception */ public function buildQuickForm() { - parent::buildQuickForm(); + self::buildQuickEntityForm(); if ($this->_action & CRM_Core_Action::DELETE) { return; } - - $this->applyFilter('__ALL__', 'trim'); - $this->addField('name', [], TRUE); - $this->addField('description'); - $this->addField('minimum_fee'); - $this->addField('duration_unit', [], TRUE); - $this->addField('period_type', [], TRUE); - $this->addField('is_active'); - $this->addField('weight'); - $this->addField('max_related'); + // This is a temporary variable as we work towards moving over towards using the EntityField.tpl. + // Fields in this array have been tested & in the tpl have been switched over to metadata. + // Note this kinda 'works from the top' - ie. once we hit a field that needs some thought we need + // to stop & make that one work. + $this->assign('tpl_standardised_fields', ['name', 'description', 'member_of_contact_id', 'minimum_fee']); $this->addRule('name', ts('A membership type with this name already exists. Please select another name.'), 'objectExists', array('CRM_Member_DAO_MembershipType', $this->_id) ); $this->addRule('minimum_fee', ts('Please enter a monetary value for the Minimum Fee.'), 'money'); - $this->add('text', 'duration_interval', ts('Duration Interval'), - CRM_Core_DAO::getAttribute('CRM_Member_DAO_MembershipType', 'duration_interval') - ); - $props = array('api' => array('params' => array('contact_type' => 'Organization'))); $this->addEntityRef('member_of_contact_id', ts('Membership Organization'), $props, TRUE); @@ -307,41 +410,16 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig { CRM_Core_Session::setStatus(ts('Selected membership type has been deleted.'), ts('Record Deleted'), 'success'); } else { - $buttonName = $this->controller->getButtonName(); - $submitted = $this->controller->exportValues($this->_name); - - $fields = array( - 'name', - 'weight', - 'is_active', - 'member_of_contact_id', - 'visibility', - 'period_type', - 'minimum_fee', - 'description', - 'auto_renew', - 'duration_unit', - 'duration_interval', - 'financial_type_id', - 'fixed_period_start_day', - 'fixed_period_rollover_day', - 'month_fixed_period_rollover_day', - 'max_related', - ); - - $params = array(); - foreach ($fields as $fld) { - $params[$fld] = CRM_Utils_Array::value($fld, $submitted, 'null'); - } + $params = $this->exportValues(); if ($params['minimum_fee']) { $params['minimum_fee'] = CRM_Utils_Rule::cleanMoney($params['minimum_fee']); } $hasRelTypeVal = FALSE; - if (!CRM_Utils_System::isNull($submitted['relationship_type_id'])) { + if (!CRM_Utils_System::isNull($params['relationship_type_id'])) { // To insert relation ids and directions with value separator - $relTypeDirs = $submitted['relationship_type_id']; + $relTypeDirs = $params['relationship_type_id']; $relIds = $relDirection = array(); foreach ($relTypeDirs as $key => $value) { $relationId = explode('_', $value); @@ -400,12 +478,14 @@ class CRM_Member_Form_MembershipType extends CRM_Member_Form_MembershipConfig { $params['id'] = $this->_id; } - $membershipType = CRM_Member_BAO_MembershipType::add($params); + $membershipTypeResult = civicrm_api3('MembershipType', 'create', $params); + $membershipTypeName = $membershipTypeResult['values'][$membershipTypeResult['id']]['name']; - CRM_Core_Session::setStatus(ts('The membership type \'%1\' has been saved.', - array(1 => $membershipType->name) + CRM_Core_Session::setStatus(ts("The membership type '%1' has been saved.", + array(1 => $membershipTypeName) ), ts('Saved'), 'success'); $session = CRM_Core_Session::singleton(); + $buttonName = $this->controller->getButtonName(); if ($buttonName == $this->getButtonName('upload', 'new')) { $session->replaceUserContext( CRM_Utils_System::url('civicrm/admin/member/membershipType/add', 'action=add&reset=1') diff --git a/civicrm/CRM/Member/Page/Tab.php b/civicrm/CRM/Member/Page/Tab.php index 58347f05dd64728b780fa2e4d1e572942379ff09..a461dab701c2ae5c740d49ddcec2704a0f202079 100644 --- a/civicrm/CRM/Member/Page/Tab.php +++ b/civicrm/CRM/Member/Page/Tab.php @@ -59,9 +59,7 @@ class CRM_Member_Page_Tab extends CRM_Core_Page { $membership = array(); $dao = new CRM_Member_DAO_Membership(); $dao->contact_id = $this->_contactId; - $dao->is_test = 0; $dao->whereAdd($addWhere); - //$dao->orderBy('name'); $dao->find(); //CRM--4418, check for view, edit, delete diff --git a/civicrm/CRM/PCP/DAO/PCP.php b/civicrm/CRM/PCP/DAO/PCP.php index 09371761b8bfb2cfe034c88164a7c45cc133bfe5..72a9d6eb0cb1eec35677e46a7de451a2192a2bb3 100644 --- a/civicrm/CRM/PCP/DAO/PCP.php +++ b/civicrm/CRM/PCP/DAO/PCP.php @@ -298,6 +298,7 @@ class CRM_PCP_DAO_PCP extends CRM_Core_DAO { 'name' => 'is_thermometer', 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Use Thermometer?'), + 'default' => '0', 'table_name' => 'civicrm_pcp', 'entity' => 'PCP', 'bao' => 'CRM_PCP_BAO_PCP', @@ -310,6 +311,7 @@ class CRM_PCP_DAO_PCP extends CRM_Core_DAO { 'name' => 'is_honor_roll', 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Show Honor Roll?'), + 'default' => '0', 'table_name' => 'civicrm_pcp', 'entity' => 'PCP', 'bao' => 'CRM_PCP_BAO_PCP', @@ -362,6 +364,7 @@ class CRM_PCP_DAO_PCP extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Enabled?'), 'description' => 'Is Personal Campaign Page enabled/active?', + 'default' => '0', 'table_name' => 'civicrm_pcp', 'entity' => 'PCP', 'bao' => 'CRM_PCP_BAO_PCP', @@ -375,6 +378,7 @@ class CRM_PCP_DAO_PCP extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Notify Owner?'), 'description' => 'Notify owner via email when someone donates to page?', + 'default' => '0', 'table_name' => 'civicrm_pcp', 'entity' => 'PCP', 'bao' => 'CRM_PCP_BAO_PCP', diff --git a/civicrm/CRM/PCP/DAO/PCPBlock.php b/civicrm/CRM/PCP/DAO/PCPBlock.php index c1f007d56403e3232fec8fcdcc426b9232823928..37fcaeb0d7653355cda690668fe412b64efcefb5 100644 --- a/civicrm/CRM/PCP/DAO/PCPBlock.php +++ b/civicrm/CRM/PCP/DAO/PCPBlock.php @@ -225,6 +225,7 @@ class CRM_PCP_DAO_PCPBlock extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Owner Notification'), 'description' => 'FK to civicrm_option_group with name = PCP owner notifications', + 'default' => '0', 'table_name' => 'civicrm_pcp_block', 'entity' => 'PCPBlock', 'bao' => 'CRM_PCP_BAO_PCPBlock', diff --git a/civicrm/CRM/Pledge/BAO/PledgeBlock.php b/civicrm/CRM/Pledge/BAO/PledgeBlock.php index 4762ce1839c7b30afcb4853f3b950b846a16271a..496ddf674dfff641ff01f64a49741df32ce12043 100644 --- a/civicrm/CRM/Pledge/BAO/PledgeBlock.php +++ b/civicrm/CRM/Pledge/BAO/PledgeBlock.php @@ -281,11 +281,11 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock { $form->addRadio('is_pledge', ts('Pledge Frequency Interval'), $pledgeOptions, NULL, array('<br/>') ); - $form->addElement('text', 'pledge_installments', ts('Installments'), array('size' => 3)); + $form->addElement('text', 'pledge_installments', ts('Installments'), ['size' => 3, 'aria-label' => ts('Installments')]); if (!empty($pledgeBlock['is_pledge_interval'])) { $form->assign('is_pledge_interval', CRM_Utils_Array::value('is_pledge_interval', $pledgeBlock)); - $form->addElement('text', 'pledge_frequency_interval', NULL, array('size' => 3)); + $form->addElement('text', 'pledge_frequency_interval', NULL, ['size' => 3, 'aria-label' => ts('Frequency Intervals')]); } else { $form->add('hidden', 'pledge_frequency_interval', 1); @@ -299,7 +299,7 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock { $freqUnits[$val] = !empty($pledgeBlock['is_pledge_interval']) ? "{$frequencyUnits[$val]}(s)" : $frequencyUnits[$val]; } } - $form->addElement('select', 'pledge_frequency_unit', NULL, $freqUnits); + $form->addElement('select', 'pledge_frequency_unit', NULL, $freqUnits, ['aria-label' => ts('Frequency Units')]); // CRM-18854 if (CRM_Utils_Array::value('is_pledge_start_date_visible', $pledgeBlock)) { if (CRM_Utils_Array::value('pledge_start_date', $pledgeBlock)) { diff --git a/civicrm/CRM/Pledge/DAO/Pledge.php b/civicrm/CRM/Pledge/DAO/Pledge.php index 21d857a3d9f9c5ecc487036ee20f4614a8f0bcdd..bfe1c096128259ad903eb0029eb79be3d470b280 100644 --- a/civicrm/CRM/Pledge/DAO/Pledge.php +++ b/civicrm/CRM/Pledge/DAO/Pledge.php @@ -575,6 +575,7 @@ class CRM_Pledge_DAO_Pledge extends CRM_Core_DAO { 'headerPattern' => '', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_pledge', 'entity' => 'Pledge', 'bao' => 'CRM_Pledge_BAO_Pledge', diff --git a/civicrm/CRM/Pledge/DAO/PledgeBlock.php b/civicrm/CRM/Pledge/DAO/PledgeBlock.php index 19ee593688d03517fc2f87a6a4f3a25959fa5391..1efdbf69aca98731a1b825ebd307e2b9e7eb5e3e 100644 --- a/civicrm/CRM/Pledge/DAO/PledgeBlock.php +++ b/civicrm/CRM/Pledge/DAO/PledgeBlock.php @@ -188,6 +188,7 @@ class CRM_Pledge_DAO_PledgeBlock extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Expose Frequency Interval?'), 'description' => 'Is frequency interval exposed on the contribution form.', + 'default' => '0', 'table_name' => 'civicrm_pledge_block', 'entity' => 'PledgeBlock', 'bao' => 'CRM_Pledge_BAO_PledgeBlock', @@ -244,6 +245,7 @@ class CRM_Pledge_DAO_PledgeBlock extends CRM_Core_DAO { 'title' => ts('Show Recurring Donation Start Date?'), 'description' => 'If true - recurring start date is shown.', 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_pledge_block', 'entity' => 'PledgeBlock', 'bao' => 'CRM_Pledge_BAO_PledgeBlock', @@ -255,6 +257,7 @@ class CRM_Pledge_DAO_PledgeBlock extends CRM_Core_DAO { 'title' => ts('Allow Edits to Recurring Donation Start Date?'), 'description' => 'If true - recurring start date is editable.', 'required' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_pledge_block', 'entity' => 'PledgeBlock', 'bao' => 'CRM_Pledge_BAO_PledgeBlock', diff --git a/civicrm/CRM/Pledge/DAO/PledgePayment.php b/civicrm/CRM/Pledge/DAO/PledgePayment.php index d3f05e4656b9844cdc5326e5d1df7af97f43b4fb..3a996ff0ed450903af7ff8a09c234142190fe25d 100644 --- a/civicrm/CRM/Pledge/DAO/PledgePayment.php +++ b/civicrm/CRM/Pledge/DAO/PledgePayment.php @@ -266,6 +266,7 @@ class CRM_Pledge_DAO_PledgePayment extends CRM_Core_DAO { 'headerPattern' => '', 'dataPattern' => '', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_pledge_payment', 'entity' => 'PledgePayment', 'bao' => 'CRM_Pledge_BAO_PledgePayment', diff --git a/civicrm/CRM/Price/BAO/PriceField.php b/civicrm/CRM/Price/BAO/PriceField.php index d7dc961434445faa5a5cb29d04f19ccc6f2d184c..0dd12fd66c55bc3038cda89a903e86ad903515fb 100644 --- a/civicrm/CRM/Price/BAO/PriceField.php +++ b/civicrm/CRM/Price/BAO/PriceField.php @@ -413,10 +413,10 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { if ($field->is_display_amounts) { $opt['label'] = !empty($opt['label']) ? $opt['label'] . '<span class="crm-price-amount-label-separator"> - </span>' : ''; $preHelpText = $postHelpText = ''; - if (isset($opt['help_pre'])) { + if (!empty($opt['help_pre'])) { $preHelpText = '<span class="crm-price-amount-help-pre description">' . $opt['help_pre'] . '</span>: '; } - if (isset($opt['help_post'])) { + if (!empty($opt['help_post'])) { $postHelpText = ': <span class="crm-price-amount-help-post description">' . $opt['help_post'] . '</span>'; } if (isset($taxAmount) && $invoicing) { diff --git a/civicrm/CRM/Price/DAO/PriceField.php b/civicrm/CRM/Price/DAO/PriceField.php index 9cfe9768066ece4fd7b0f413496214288e5c103b..aeaf386e72e73c2231c31a9bd2f91b1753aee6a4 100644 --- a/civicrm/CRM/Price/DAO/PriceField.php +++ b/civicrm/CRM/Price/DAO/PriceField.php @@ -254,6 +254,7 @@ class CRM_Price_DAO_PriceField extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Price Field Quantity Required?'), 'description' => 'Enter a quantity for this field?', + 'default' => '0', 'table_name' => 'civicrm_price_field', 'entity' => 'PriceField', 'bao' => 'CRM_Price_BAO_PriceField', diff --git a/civicrm/CRM/Price/DAO/PriceFieldValue.php b/civicrm/CRM/Price/DAO/PriceFieldValue.php index e656e0ed28e5ed0e691b60b3cdc9cd87067b001d..f07a16e344e48e27ff6305e604f0d24f9da405a6 100644 --- a/civicrm/CRM/Price/DAO/PriceFieldValue.php +++ b/civicrm/CRM/Price/DAO/PriceFieldValue.php @@ -382,6 +382,7 @@ class CRM_Price_DAO_PriceFieldValue extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Default Price Field Option?'), 'description' => 'Is this default price field option', + 'default' => '0', 'table_name' => 'civicrm_price_field_value', 'entity' => 'PriceFieldValue', 'bao' => 'CRM_Price_BAO_PriceFieldValue', diff --git a/civicrm/CRM/Price/DAO/PriceSet.php b/civicrm/CRM/Price/DAO/PriceSet.php index 3abf87d17f27c56f032b8a09c5c037fb262748d7..cd26b23f7773ee5ed6a3438129ba0140228317aa 100644 --- a/civicrm/CRM/Price/DAO/PriceSet.php +++ b/civicrm/CRM/Price/DAO/PriceSet.php @@ -318,6 +318,7 @@ class CRM_Price_DAO_PriceSet extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Is Price Set Quick Config?'), 'description' => 'Is set if edited on Contribution or Event Page rather than through Manage Price Sets', + 'default' => '0', 'table_name' => 'civicrm_price_set', 'entity' => 'PriceSet', 'bao' => 'CRM_Price_BAO_PriceSet', @@ -331,6 +332,7 @@ class CRM_Price_DAO_PriceSet extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Price Set Is Reserved'), 'description' => 'Is this a predefined system price set (i.e. it can not be deleted, edited)?', + 'default' => '0', 'table_name' => 'civicrm_price_set', 'entity' => 'PriceSet', 'bao' => 'CRM_Price_BAO_PriceSet', @@ -344,6 +346,7 @@ class CRM_Price_DAO_PriceSet extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Minimum Amount'), 'description' => 'Minimum Amount required for this set.', + 'default' => '0', 'table_name' => 'civicrm_price_set', 'entity' => 'PriceSet', 'bao' => 'CRM_Price_BAO_PriceSet', diff --git a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php index 9bff1a8a159a3b717756e4234a3960aa17d47557..e8ab497e07232e9a4643db0ddc7af3476786fe3f 100644 --- a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php +++ b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php @@ -341,7 +341,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { // TODO: Not all widget types and validation rules are supported by crmEditable so some fields will not be in-place editable $fieldAttributes = array('class' => "crmf-custom_{$fieldId}_$recId"); $editable = FALSE; - if (!$options[$fieldId]['attributes']['is_view'] && $linkAction & CRM_Core_Action::UPDATE) { + if (!$options[$fieldId]['attributes']['is_view'] && $this->_pageViewType == 'customDataView' && $linkAction & CRM_Core_Action::UPDATE) { $spec = $options[$fieldId]['attributes']; switch ($spec['html_type']) { case 'Text': diff --git a/civicrm/CRM/Report/DAO/ReportInstance.php b/civicrm/CRM/Report/DAO/ReportInstance.php index 4effadcc03dbcfc620a1e30c4b1574ae89ac66f1..141e6f6312c80317e18fd508599981bf8a7a4679 100644 --- a/civicrm/CRM/Report/DAO/ReportInstance.php +++ b/civicrm/CRM/Report/DAO/ReportInstance.php @@ -500,6 +500,7 @@ class CRM_Report_DAO_ReportInstance extends CRM_Core_DAO { 'name' => 'is_reserved', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('Instance is Reserved'), + 'default' => '0', 'table_name' => 'civicrm_report_instance', 'entity' => 'ReportInstance', 'bao' => 'CRM_Report_BAO_ReportInstance', diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php index 3d1ebc34562439e7b4829c98362c97dde192d74a..722c35f32364f3895c42aa49cbe297b994db1552 100644 --- a/civicrm/CRM/Report/Form.php +++ b/civicrm/CRM/Report/Form.php @@ -1068,6 +1068,15 @@ class CRM_Report_Form extends CRM_Core_Form { $this->_params = $params; } + /** + * Getter for $_params. + * + * @return void|array $params + */ + public function getParams() { + return $this->_params; + } + /** * Setter for $_id. * @@ -1131,6 +1140,27 @@ class CRM_Report_Form extends CRM_Core_Form { } } + /** + * Create a temporary table. + * + * This function creates a table AND adds the details to the developer tab & $this->>temporary tables. + * + * @todo improve presentation on the developer tab since CREATE TEMPORARY is removed. + * + * @param string $identifier + * @param $sql + * @param bool $isTrueTemporary + * Is this a mysql temporary table or temporary in a less technical sense. + * + * @return string + */ + public function createTemporaryTable($identifier, $sql, $isTrueTemporary = TRUE) { + $this->addToDeveloperTab($sql); + $name = CRM_Utils_SQL_TempTable::build()->setUtf8(TRUE)->setDurable($isTrueTemporary)->createWithQuery($sql)->getName(); + $this->temporaryTables[$identifier] = ['temporary' => $isTrueTemporary, 'name' => $name]; + return $name; + } + /** * Add columns to report. */ @@ -4400,70 +4430,51 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a /** * Do AlterDisplay processing on Address Fields. + * If there are multiple address field values then + * on basis of provided separator the code values are translated into respective labels * * @param array $row * @param array $rows * @param int $rowNum * @param string $baseUrl * @param string $linkText + * @param string $separator * * @return bool */ - public function alterDisplayAddressFields(&$row, &$rows, &$rowNum, $baseUrl, $linkText) { + public function alterDisplayAddressFields(&$row, &$rows, &$rowNum, $baseUrl, $linkText, $separator = ',') { $criteriaQueryParams = CRM_Report_Utils_Report::getPreviewCriteriaQueryParams($this->_defaults, $this->_params); $entryFound = FALSE; - // handle country - if (array_key_exists('civicrm_address_country_id', $row)) { - if ($value = $row['civicrm_address_country_id']) { - $rows[$rowNum]['civicrm_address_country_id'] = CRM_Core_PseudoConstant::country($value, FALSE); - if ($baseUrl) { - $url = CRM_Report_Utils_Report::getNextUrl($baseUrl, - "reset=1&force=1&{$criteriaQueryParams}&" . - "country_id_op=in&country_id_value={$value}", - $this->_absoluteUrl, $this->_id - ); - $rows[$rowNum]['civicrm_address_country_id_link'] = $url; - $rows[$rowNum]['civicrm_address_country_id_hover'] = ts("%1 for this country.", - array(1 => $linkText) - ); - } - } - - $entryFound = TRUE; - } - if (array_key_exists('civicrm_address_county_id', $row)) { - if ($value = $row['civicrm_address_county_id']) { - $rows[$rowNum]['civicrm_address_county_id'] = CRM_Core_PseudoConstant::county($value, FALSE); - if ($baseUrl) { - $url = CRM_Report_Utils_Report::getNextUrl($baseUrl, - "reset=1&force=1&{$criteriaQueryParams}&" . - "county_id_op=in&county_id_value={$value}", - $this->_absoluteUrl, $this->_id - ); - $rows[$rowNum]['civicrm_address_county_id_link'] = $url; - $rows[$rowNum]['civicrm_address_county_id_hover'] = ts("%1 for this county.", - array(1 => $linkText) - ); - } - } - $entryFound = TRUE; - } - // handle state province - if (array_key_exists('civicrm_address_state_province_id', $row)) { - if ($value = $row['civicrm_address_state_province_id']) { - $rows[$rowNum]['civicrm_address_state_province_id'] = CRM_Core_PseudoConstant::stateProvince($value, FALSE); - if ($baseUrl) { - $url = CRM_Report_Utils_Report::getNextUrl($baseUrl, - "reset=1&force=1&{$criteriaQueryParams}&state_province_id_op=in&state_province_id_value={$value}", - $this->_absoluteUrl, $this->_id - ); - $rows[$rowNum]['civicrm_address_state_province_id_link'] = $url; - $rows[$rowNum]['civicrm_address_state_province_id_hover'] = ts("%1 for this state.", - array(1 => $linkText) - ); + $columnMap = array( + 'civicrm_address_country_id' => 'country', + 'civicrm_address_county_id' => 'county', + 'civicrm_address_state_province_id' => 'stateProvince', + ); + foreach ($columnMap as $fieldName => $fnName) { + if (array_key_exists($fieldName, $row)) { + if ($values = $row[$fieldName]) { + $values = (array) explode($separator, $values); + $rows[$rowNum][$fieldName] = []; + $addressField = $fnName == 'stateProvince' ? 'state' : $fnName; + foreach ($values as $value) { + $rows[$rowNum][$fieldName][] = CRM_Core_PseudoConstant::$fnName($value); + } + $rows[$rowNum][$fieldName] = implode($separator, $rows[$rowNum][$fieldName]); + if ($baseUrl) { + $url = CRM_Report_Utils_Report::getNextUrl($baseUrl, + sprintf("reset=1&force=1&%s&%s_op=in&%s_value=%s", + $criteriaQueryParams, + str_replace('civicrm_address_', '', $fieldName), + str_replace('civicrm_address_', '', $fieldName), + implode(',', $values) + ), $this->_absoluteUrl, $this->_id + ); + $rows[$rowNum]["{$fieldName}_link"] = $url; + $rows[$rowNum]["{$fieldName}_hover"] = ts("%1 for this %2.", array(1 => $linkText, 2 => $addressField)); + } + $entryFound = TRUE; } } - $entryFound = TRUE; } return $entryFound; @@ -5395,7 +5406,6 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'title' => $options['prefix_label'] . ts('Gender'), 'options' => CRM_Contact_BAO_Contact::buildOptions('gender_id'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'alter_display' => 'alterGenderID', 'is_fields' => TRUE, 'is_filters' => TRUE, ), @@ -5408,7 +5418,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a ), 'age' => array( 'title' => $options['prefix_label'] . ts('Age'), - 'dbAlias' => 'TIMESTAMPDIFF(YEAR, ' . $tableAlias . '.birth_date, CURDATE())', + 'dbAlias' => 'TIMESTAMPDIFF(YEAR, ' . $tableAlias . '_civireport.birth_date, CURDATE())', 'type' => CRM_Utils_Type::T_INT, 'is_fields' => TRUE, ), @@ -5481,6 +5491,16 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'type' => 1, 'is_fields' => TRUE, ), + $options['prefix'] . 'odd_street_number' => array( + 'title' => ts('Odd / Even Street Number'), + 'name' => 'odd_street_number', + 'type' => CRM_Utils_Type::T_INT, + 'no_display' => TRUE, + 'required' => TRUE, + 'dbAlias' => '(address_civireport.street_number % 2)', + 'is_fields' => TRUE, + 'is_order_bys' => TRUE, + ), $options['prefix'] . 'street_name' => array( 'name' => 'street_name', 'title' => ts($options['prefix_label'] . 'Street Name'), diff --git a/civicrm/CRM/Report/Form/Activity.php b/civicrm/CRM/Report/Form/Activity.php index b38b95d24d34a053fb0c592514a38d54b1dd23e0..9b55f415fa95bd1f92dfe303c2e3e7c55e732f43 100644 --- a/civicrm/CRM/Report/Form/Activity.php +++ b/civicrm/CRM/Report/Form/Activity.php @@ -91,6 +91,9 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { $condition = " AND ( v.component_id IS NULL {$include} )"; $this->activityTypes = CRM_Core_OptionGroup::values('activity_type', FALSE, FALSE, FALSE, $condition); asort($this->activityTypes); + + // @todo split the 3 different contact tables into their own array items. + // this will massively simplify the needs of this report. $this->_columns = array( 'civicrm_contact' => array( 'dao' => 'CRM_Contact_DAO_Contact', @@ -394,7 +397,12 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { /** * Build select clause. * - * @param null $recordType + * @todo get rid of $recordType param. It's only because 3 separate contact tables + * are mis-declared as one that we need it. + * + * @param null $recordType deprecated + * Parameter to hack around the bad decision made in construct to misrepresent + * different tables as the same table. */ public function select($recordType = 'target') { if (!array_key_exists("contact_{$recordType}", $this->_params['fields']) && @@ -416,6 +424,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { $removeKeys = array(); if ($recordType == 'target') { + // @todo - fix up the way the tables are declared in construct & remove this. foreach ($this->_selectClauses as $key => $clause) { if (strstr($clause, 'civicrm_contact_assignee.') || strstr($clause, 'civicrm_contact_source.') || @@ -430,13 +439,15 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { } } elseif ($recordType == 'assignee') { + // @todo - fix up the way the tables are declared in construct & remove this. foreach ($this->_selectClauses as $key => $clause) { if (strstr($clause, 'civicrm_contact_target.') || strstr($clause, 'civicrm_contact_source.') || strstr($clause, 'civicrm_email_target.') || strstr($clause, 'civicrm_email_source.') || strstr($clause, 'civicrm_phone_target.') || - strstr($clause, 'civicrm_phone_source.') + strstr($clause, 'civicrm_phone_source.') || + strstr($clause, 'civicrm_address_') ) { $removeKeys[] = $key; unset($this->_selectClauses[$key]); @@ -444,13 +455,15 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { } } elseif ($recordType == 'source') { + // @todo - fix up the way the tables are declared in construct & remove this. foreach ($this->_selectClauses as $key => $clause) { if (strstr($clause, 'civicrm_contact_target.') || strstr($clause, 'civicrm_contact_assignee.') || strstr($clause, 'civicrm_email_target.') || strstr($clause, 'civicrm_email_assignee.') || strstr($clause, 'civicrm_phone_target.') || - strstr($clause, 'civicrm_phone_assignee.') + strstr($clause, 'civicrm_phone_assignee.') || + strstr($clause, 'civicrm_address_') ) { $removeKeys[] = $key; unset($this->_selectClauses[$key]); @@ -460,6 +473,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { elseif ($recordType == 'final') { $this->_selectClauses = $this->_selectAliasesTotal; foreach ($this->_selectClauses as $key => $clause) { + // @todo - fix up the way the tables are declared in construct & remove this. if (strstr($clause, 'civicrm_contact_contact_target') || strstr($clause, 'civicrm_contact_contact_assignee') || strstr($clause, 'civicrm_contact_contact_source') || @@ -468,9 +482,10 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { strstr($clause, 'civicrm_email_contact_source_email') || strstr($clause, 'civicrm_email_contact_assignee_email') || strstr($clause, 'civicrm_email_contact_target_email') || - strstr($clause, 'civicrm_phone_contact_target_phone') + strstr($clause, 'civicrm_phone_contact_target_phone') || + strstr($clause, 'civicrm_address_') ) { - $this->_selectClauses[$key] = "GROUP_CONCAT($clause SEPARATOR ';') as $clause"; + $this->_selectClauses[$key] = "GROUP_CONCAT(DISTINCT $clause SEPARATOR ';') as $clause"; } } } @@ -480,7 +495,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { unset($this->_selectAliases[$key]); } - if ($recordType != 'final') { + if ($recordType == 'target') { foreach ($this->_columns['civicrm_address']['order_bys'] as $fieldName => $field) { $orderByFld = $this->_columns['civicrm_address']['order_bys'][$fieldName]; $fldInfo = $this->_columns['civicrm_address']['fields'][$fieldName]; @@ -496,91 +511,35 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { /** * Build from clause. - * - * @param string $recordType + * @todo remove this function & declare the 3 contact tables separately */ - public function from($recordType = 'target') { + public function from() { $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); - $activityTypeId = CRM_Core_DAO::getFieldValue("CRM_Core_DAO_OptionGroup", 'activity_type', 'id', 'name'); - $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); - $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); - - if ($recordType == 'target') { - $this->_from = " - FROM civicrm_activity {$this->_aliases['civicrm_activity']} - INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']} - ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_contact']}.activity_id AND - {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$targetID} - INNER JOIN civicrm_contact civicrm_contact_target - ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_contact_target.id - {$this->_aclFrom}"; - - if ($this->isTableSelected('civicrm_email')) { - $this->_from .= " - LEFT JOIN civicrm_email civicrm_email_target - ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_target.contact_id AND - civicrm_email_target.is_primary = 1"; - } - - if ($this->isTableSelected('civicrm_phone')) { - $this->_from .= " - LEFT JOIN civicrm_phone civicrm_phone_target - ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_phone_target.contact_id AND - civicrm_phone_target.is_primary = 1 "; - } - $this->_aliases['civicrm_contact'] = 'civicrm_contact_target'; - } - - if ($recordType == 'assignee') { - $this->_from = " - FROM civicrm_activity {$this->_aliases['civicrm_activity']} - INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']} - ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_contact']}.activity_id AND - {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$assigneeID} - INNER JOIN civicrm_contact civicrm_contact_assignee - ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_contact_assignee.id - {$this->_aclFrom}"; - if ($this->isTableSelected('civicrm_email')) { - $this->_from .= " - LEFT JOIN civicrm_email civicrm_email_assignee - ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_assignee.contact_id AND - civicrm_email_assignee.is_primary = 1"; - } - if ($this->isTableSelected('civicrm_phone')) { - $this->_from .= " - LEFT JOIN civicrm_phone civicrm_phone_assignee - ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_phone_assignee.contact_id AND - civicrm_phone_assignee.is_primary = 1 "; - } - $this->_aliases['civicrm_contact'] = 'civicrm_contact_assignee'; + $this->_from = " + FROM civicrm_activity {$this->_aliases['civicrm_activity']} + INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']} + ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_contact']}.activity_id AND + {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$targetID} + INNER JOIN civicrm_contact civicrm_contact_target + ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_contact_target.id + {$this->_aclFrom}"; + + if ($this->isTableSelected('civicrm_email')) { + $this->_from .= " + LEFT JOIN civicrm_email civicrm_email_target + ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_target.contact_id AND + civicrm_email_target.is_primary = 1"; } - if ($recordType == 'source') { - $this->_from = " - FROM civicrm_activity {$this->_aliases['civicrm_activity']} - INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']} - ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_contact']}.activity_id AND - {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$sourceID} - INNER JOIN civicrm_contact civicrm_contact_source - ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_contact_source.id - {$this->_aclFrom}"; - - if ($this->isTableSelected('civicrm_email')) { - $this->_from .= " - LEFT JOIN civicrm_email civicrm_email_source - ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_source.contact_id AND - civicrm_email_source.is_primary = 1"; - } - if ($this->isTableSelected('civicrm_phone')) { - $this->_from .= " - LEFT JOIN civicrm_phone civicrm_phone_source - ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_phone_source.contact_id AND - civicrm_phone_source.is_primary = 1 "; - } - $this->_aliases['civicrm_contact'] = 'civicrm_contact_source'; + if ($this->isTableSelected('civicrm_phone')) { + $this->_from .= " + LEFT JOIN civicrm_phone civicrm_phone_target + ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_phone_target.contact_id AND + civicrm_phone_target.is_primary = 1 "; } + $this->_aliases['civicrm_contact'] = 'civicrm_contact_target'; $this->joinAddressFromContact(); } @@ -588,6 +547,9 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { /** * Build where clause. * + * @todo get rid of $recordType param. It's only because 3 separate contact tables + * are mis-declared as one that we need it. + * * @param string $recordType */ public function where($recordType = NULL) { @@ -731,7 +693,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { $new_having = ' addtogroup_contact_id'; $having = str_ireplace(' civicrm_contact_contact_target_id', $new_having, $this->_having); $query = "$select -FROM civireport_activity_temp_target tar +FROM {$this->temporaryTables['activity_temp_table']} tar GROUP BY civicrm_activity_id $having {$this->_orderBy}"; $select = 'AS addtogroup_contact_id'; $query = str_ireplace('AS civicrm_contact_contact_target_id', $select, $query); @@ -805,21 +767,21 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; } } + // @todo - all this temp table stuff is here because pre 4.4 the activity contact + // form did not exist. + // Fixing the way the construct method declares them will make all this redundant. // 1. fill temp table with target results $this->buildACLClause(array('civicrm_contact_target')); $this->select('target'); - $this->from('target'); + $this->from(); $this->customDataFrom(); $this->where('target'); - $insertCols = implode(',', $this->_selectAliases); - $tempQuery = "CREATE TEMPORARY TABLE civireport_activity_temp_target {$this->_databaseAttributes} AS -{$this->_select} {$this->_from} {$this->_where} "; - $this->executeReportQuery($tempQuery); + $tempTableName = $this->createTemporaryTable('activity_temp_table', "{$this->_select} {$this->_from} {$this->_where}"); // 2. add new columns to hold assignee and source results // fixme: add when required $tempQuery = " - ALTER TABLE civireport_activity_temp_target + ALTER TABLE $tempTableName MODIFY COLUMN civicrm_contact_contact_target_id VARCHAR(128), ADD COLUMN civicrm_contact_contact_assignee VARCHAR(128), ADD COLUMN civicrm_contact_contact_source VARCHAR(128), @@ -834,11 +796,12 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; // 3. fill temp table with assignee results $this->buildACLClause(array('civicrm_contact_assignee')); $this->select('assignee'); - $this->from('assignee'); + $this->buildAssigneeFrom(); + $this->customDataFrom(); $this->where('assignee'); $insertCols = implode(',', $this->_selectAliases); - $tempQuery = "INSERT INTO civireport_activity_temp_target ({$insertCols}) + $tempQuery = "INSERT INTO $tempTableName ({$insertCols}) {$this->_select} {$this->_from} {$this->_where}"; $this->executeReportQuery($tempQuery); @@ -846,11 +809,11 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; // 4. fill temp table with source results $this->buildACLClause(array('civicrm_contact_source')); $this->select('source'); - $this->from('source'); + $this->buildSourceFrom(); $this->customDataFrom(); $this->where('source'); $insertCols = implode(',', $this->_selectAliases); - $tempQuery = "INSERT INTO civireport_activity_temp_target ({$insertCols}) + $tempQuery = "INSERT INTO $tempTableName ({$insertCols}) {$this->_select} {$this->_from} {$this->_where}"; $this->executeReportQuery($tempQuery); @@ -865,7 +828,7 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; $this->orderBy(); foreach ($this->_sections as $alias => $section) { if (!empty($section) && $section['name'] == 'activity_date_time') { - $this->alterSectionHeaderForDateTime('civireport_activity_temp_target', $section['tplField']); + $this->alterSectionHeaderForDateTime($tempTableName, $section['tplField']); } } @@ -882,7 +845,7 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; } $sql = "{$this->_select} - FROM civireport_activity_temp_target tar + FROM $tempTableName tar INNER JOIN civicrm_activity {$this->_aliases['civicrm_activity']} ON {$this->_aliases['civicrm_activity']}.id = tar.civicrm_activity_id INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']} ON {$this->_aliases['civicrm_activity_contact']}.activity_id = {$this->_aliases['civicrm_activity']}.id AND {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$sourceID} @@ -930,7 +893,10 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; $activityStatus = CRM_Core_PseudoConstant::activityStatus(); $priority = CRM_Core_PseudoConstant::get('CRM_Activity_DAO_Activity', 'priority_id'); $viewLinks = FALSE; - $context = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this, FALSE, 'report'); + + // Would we ever want to retrieve from the form controller?? + $form = $this->noController ? NULL : $this; + $context = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $form, FALSE, 'report'); $actUrl = ''; if (CRM_Core_Permission::check('access CiviCRM')) { @@ -1088,7 +1054,7 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; } } - $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, 'activity', 'List all activities for this ') ? TRUE : $entryFound; + $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, 'activity', 'List all activities for this', ';') ? TRUE : $entryFound; if (!$entryFound) { break; @@ -1114,7 +1080,7 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($ifnulls, $sectionAliases); $query = $this->_select . - ", count(DISTINCT civicrm_activity_id) as ct from civireport_activity_temp_target group by " . + ", count(DISTINCT civicrm_activity_id) as ct from {$this->temporaryTables['activity_temp_table']} group by " . implode(", ", $sectionAliases); // initialize array of total counts @@ -1147,4 +1113,72 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; } } + /** + * @todo remove this function & declare the 3 contact tables separately + * + * (Currently the construct method incorrectly melds them - this is an interim + * refactor in order to get this under ReportTemplateTests) + */ + protected function buildAssigneeFrom() { + $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $this->_from = " + FROM civicrm_activity {$this->_aliases['civicrm_activity']} + INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']} + ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_contact']}.activity_id AND + {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$assigneeID} + INNER JOIN civicrm_contact civicrm_contact_assignee + ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_contact_assignee.id + {$this->_aclFrom}"; + + if ($this->isTableSelected('civicrm_email')) { + $this->_from .= " + LEFT JOIN civicrm_email civicrm_email_assignee + ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_assignee.contact_id AND + civicrm_email_assignee.is_primary = 1"; + } + if ($this->isTableSelected('civicrm_phone')) { + $this->_from .= " + LEFT JOIN civicrm_phone civicrm_phone_assignee + ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_phone_assignee.contact_id AND + civicrm_phone_assignee.is_primary = 1 "; + } + $this->_aliases['civicrm_contact'] = 'civicrm_contact_assignee'; + $this->joinAddressFromContact(); + } + + /** + * @todo remove this function & declare the 3 contact tables separately + * + * (Currently the construct method incorrectly melds them - this is an interim + * refactor in order to get this under ReportTemplateTests) + */ + protected function buildSourceFrom() { + $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); + $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); + $this->_from = " + FROM civicrm_activity {$this->_aliases['civicrm_activity']} + INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']} + ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_contact']}.activity_id AND + {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$sourceID} + INNER JOIN civicrm_contact civicrm_contact_source + ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_contact_source.id + {$this->_aclFrom}"; + + if ($this->isTableSelected('civicrm_email')) { + $this->_from .= " + LEFT JOIN civicrm_email civicrm_email_source + ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_source.contact_id AND + civicrm_email_source.is_primary = 1"; + } + if ($this->isTableSelected('civicrm_phone')) { + $this->_from .= " + LEFT JOIN civicrm_phone civicrm_phone_source + ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_phone_source.contact_id AND + civicrm_phone_source.is_primary = 1 "; + } + $this->_aliases['civicrm_contact'] = 'civicrm_contact_source'; + $this->joinAddressFromContact(); + } + } diff --git a/civicrm/CRM/Report/Form/Contact/Relationship.php b/civicrm/CRM/Report/Form/Contact/Relationship.php index dd20fba0ea833491e8b6f716e4cff44bbba8f041..0e34078cdfb1f19f716de7d9cc01fef65e05ea8f 100644 --- a/civicrm/CRM/Report/Form/Contact/Relationship.php +++ b/civicrm/CRM/Report/Form/Contact/Relationship.php @@ -256,10 +256,10 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { 'title' => ts('Relationship End Date'), ), 'is_permission_a_b' => array( - 'title' => ts('Is permission A over B?'), + 'title' => ts('Permission A has to access B'), ), 'is_permission_b_a' => array( - 'title' => ts('Is permission B over A?'), + 'title' => ts('Permission B has to access A'), ), 'description' => array( 'title' => ts('Description'), @@ -310,22 +310,14 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { ), 'is_permission_a_b' => array( 'title' => ts('Does contact A have permission over contact B?'), - 'operatorType' => CRM_Report_Form::OP_SELECT, - 'options' => array( - '' => ts('- Any -'), - 1 => ts('Yes'), - 0 => ts('No'), - ), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Contact_BAO_Relationship::buildOptions('is_permission_a_b'), 'type' => CRM_Utils_Type::T_INT, ), 'is_permission_b_a' => array( 'title' => ts('Does contact B have permission over contact A?'), - 'operatorType' => CRM_Report_Form::OP_SELECT, - 'options' => array( - '' => ts('- Any -'), - 1 => ts('Yes'), - 0 => ts('No'), - ), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Contact_BAO_Relationship::buildOptions('is_permission_b_a'), 'type' => CRM_Utils_Type::T_INT, ), ), @@ -792,6 +784,19 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $entryFound = TRUE; } + // Handle permissioned relationships + if (array_key_exists('civicrm_relationship_is_permission_a_b', $row)) { + $rows[$rowNum]['civicrm_relationship_is_permission_a_b'] + = ts(self::permissionedRelationship($row['civicrm_relationship_is_permission_a_b'])); + $entryFound = TRUE; + } + + if (array_key_exists('civicrm_relationship_is_permission_b_a', $row)) { + $rows[$rowNum]['civicrm_relationship_is_permission_b_a'] + = ts(self::permissionedRelationship($row['civicrm_relationship_is_permission_b_a'])); + $entryFound = TRUE; + } + // skip looking further in rows, if first row itself doesn't // have the column we need if (!$entryFound) { @@ -800,6 +805,19 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { } } + /** + * Convert values to permissioned relationship descriptions + * @param [int] $key + * @return [string] + */ + public static function permissionedRelationship($key) { + static $lookup; + if (!$lookup) { + $lookup = CRM_Contact_BAO_Relationship::buildOptions("is_permission_a_b"); + }; + return CRM_Utils_Array::value($key, $lookup); + } + /** * @param $valid bool - set to 1 if we are looking for a valid relationship, 0 if not * diff --git a/civicrm/CRM/Report/Form/Contribute/Detail.php b/civicrm/CRM/Report/Form/Contribute/Detail.php index 3619a474093ee77d4ce811d0fedc4bb17219838c..2369127d1aedaa8c5b40105a5ff382ee04e573f3 100644 --- a/civicrm/CRM/Report/Form/Contribute/Detail.php +++ b/civicrm/CRM/Report/Form/Contribute/Detail.php @@ -823,6 +823,12 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu // pull section aliases out of $this->_sections $sectionAliases = array_keys($this->_sections); + // hack alert - but it's tested so go forth & make pretty, or whack the new mole that popped up with gay abandon. + if (in_array('civicrm_contribution_total_amount', $this->_selectAliases)) { + $keyToHack = array_search('civicrm_contribution_total_amount', $this->_selectAliases); + $this->_selectAliases[$keyToHack] = 'civicrm_contribution_total_amount_sum'; + } + $ifnulls = array(); foreach (array_merge($sectionAliases, $this->_selectAliases) as $alias) { $ifnulls[] = "ifnull($alias, '') as $alias"; @@ -837,10 +843,10 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu $addtotals = ''; - if (array_search("civicrm_contribution_total_amount", $this->_selectAliases) !== + if (array_search("civicrm_contribution_total_amount_sum", $this->_selectAliases) !== FALSE ) { - $addtotals = ", sum(civicrm_contribution_total_amount) as sumcontribs"; + $addtotals = ", sum(civicrm_contribution_total_amount_sum) as sumcontribs"; $showsumcontribs = TRUE; } @@ -926,6 +932,10 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu {$this->_aclFrom} "; + //Join temp table if report is filtered by group. This is specific to 'notin' operator and covered in unit test(ref dev/core#212) + if (!empty($this->_params['gid_op']) && $this->_params['gid_op'] == 'notin') { + $this->joinGroupTempTable('civicrm_contact', 'id', $this->_aliases['civicrm_contact']); + } $this->appendAdditionalFromJoins(); } diff --git a/civicrm/CRM/Report/Form/Contribute/Repeat.php b/civicrm/CRM/Report/Form/Contribute/Repeat.php index 6b87d4ebfdb642ed667fc67bdca04a3e33d410e3..471b076dab1b626b97bf8ede23d87df02c674588 100644 --- a/civicrm/CRM/Report/Form/Contribute/Repeat.php +++ b/civicrm/CRM/Report/Form/Contribute/Repeat.php @@ -400,6 +400,11 @@ LEFT JOIN $this->tempTableRepeat1 {$this->_aliases['civicrm_contribution']}1 .{$this->contributionJoinTableColumn} LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 ON {$this->groupByTableAlias}.$fromCol = {$this->_aliases['civicrm_contribution']}2.{$this->contributionJoinTableColumn}"; + + //Join temp table if report is filtered by group. This is specific to 'notin' operator and covered in unit test(ref dev/core#212) + if (!empty($this->_params['gid_op']) && $this->_params['gid_op'] == 'notin') { + $this->joinGroupTempTable('civicrm_contact', 'id', $this->_aliases['civicrm_contact']); + } } /** @@ -825,6 +830,7 @@ GROUP BY currency public function postProcess() { $this->beginPostProcess(); + $this->buildGroupTempTable(); $this->select(); $this->from(); $this->where(); diff --git a/civicrm/CRM/Report/Form/Register.php b/civicrm/CRM/Report/Form/Register.php index 094520df38ef897606ae060162ceabac4242d219..4f7bd4602896c0828b20a5b0384935481469819f 100644 --- a/civicrm/CRM/Report/Form/Register.php +++ b/civicrm/CRM/Report/Form/Register.php @@ -191,8 +191,7 @@ class CRM_Report_Form_Register extends CRM_Core_Form { // get the submitted form values. $params = $this->controller->exportValues($this->_name); - $groupParams = array('name' => ('report_template')); - $optionValue = CRM_Core_OptionValue::addOptionValue($params, $groupParams, $this->_action, $this->_id); + $optionValue = CRM_Core_OptionValue::addOptionValue($params, 'report_template', $this->_action, $this->_id); CRM_Core_Session::setStatus(ts('The %1 \'%2\' has been saved.', array( 1 => 'Report Template', 2 => $optionValue->label, diff --git a/civicrm/CRM/Report/Form/Walklist/Walklist.php b/civicrm/CRM/Report/Form/Walklist/Walklist.php index 04644112776594490706ef4fbf228d95b4c40c20..5727e3b5ec5a58d0dbe0e1763ca7aeee62723e13 100644 --- a/civicrm/CRM/Report/Form/Walklist/Walklist.php +++ b/civicrm/CRM/Report/Form/Walklist/Walklist.php @@ -76,55 +76,6 @@ class CRM_Report_Form_Walklist_Walklist extends CRM_Report_Form { ), ), ), - 'civicrm_address' => array( - 'dao' => 'CRM_Core_DAO_Address', - 'fields' => array( - 'street_number' => array( - 'title' => ts('Street Number'), - 'type' => 1, - ), - 'street_address' => NULL, - 'city' => NULL, - 'postal_code' => NULL, - 'state_province_id' => array( - 'title' => ts('State/Province'), - 'default' => TRUE, - 'type' => CRM_Utils_Type::T_INT, - ), - 'country_id' => array( - 'title' => ts('Country'), - ), - 'odd_street_number' => array( - 'title' => ts('Odd/Even Street Number'), - 'type' => CRM_Utils_Type::T_INT, - 'no_display' => TRUE, - 'required' => TRUE, - 'dbAlias' => '(address_civireport.street_number % 2)', - ), - ), - 'filters' => array( - 'street_number' => array( - 'title' => ts('Street Number'), - 'type' => 1, - 'name' => 'street_number', - ), - 'street_address' => NULL, - 'city' => NULL, - ), - 'order_bys' => array( - 'street_name' => array( - 'title' => ts('Street Name'), - ), - 'street_number' => array( - 'title' => ts('Street Number'), - ), - 'odd_street_number' => array( - 'title' => ts('Odd/Even Street Number'), - 'dbAlias' => 'civicrm_address_odd_street_number', - ), - ), - 'grouping' => 'location-fields', - ), 'civicrm_email' => array( 'dao' => 'CRM_Core_DAO_Email', 'fields' => array('email' => array('default' => TRUE)), @@ -135,7 +86,7 @@ class CRM_Report_Form_Walklist_Walklist extends CRM_Report_Form { 'fields' => array('phone' => NULL), 'grouping' => 'location-fields', ), - ); + ) + $this->getAddressColumns(array('group_bys' => FALSE)); parent::__construct(); } diff --git a/civicrm/CRM/SMS/DAO/Provider.php b/civicrm/CRM/SMS/DAO/Provider.php index 990f58c84eaaec82da41a684585d58aa8ca25f2e..fc295eef0d5923720b97f5b86d82e0ac827b6ac0 100644 --- a/civicrm/CRM/SMS/DAO/Provider.php +++ b/civicrm/CRM/SMS/DAO/Provider.php @@ -237,6 +237,7 @@ class CRM_SMS_DAO_Provider extends CRM_Core_DAO { 'name' => 'is_default', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('SMS Provider is Default?'), + 'default' => '0', 'table_name' => 'civicrm_sms_provider', 'entity' => 'Provider', 'bao' => 'CRM_SMS_BAO_Provider', @@ -249,6 +250,7 @@ class CRM_SMS_DAO_Provider extends CRM_Core_DAO { 'name' => 'is_active', 'type' => CRM_Utils_Type::T_BOOLEAN, 'title' => ts('SMS Provider is Active?'), + 'default' => '0', 'table_name' => 'civicrm_sms_provider', 'entity' => 'Provider', 'bao' => 'CRM_SMS_BAO_Provider', diff --git a/civicrm/CRM/Upgrade/Incremental/General.php b/civicrm/CRM/Upgrade/Incremental/General.php index 3575ce91c9aa66407d601bbdb33938abe8c89eec..5737fbd5e4711300e6586e44a578fbaf5cb1346e 100644 --- a/civicrm/CRM/Upgrade/Incremental/General.php +++ b/civicrm/CRM/Upgrade/Incremental/General.php @@ -131,9 +131,13 @@ class CRM_Upgrade_Incremental_General { if (empty($messages)) { return; } + $messagesHtml = array_map(function($k, $v) { + return sprintf("<li><em>%s</em> - %s</li>", htmlentities($k), htmlentities($v)); + }, array_keys($messages), $messages); + $message .= '<br />' . ts("The default copies of the message templates listed below will be updated to handle new features or correct a problem. Your installation has customized versions of these message templates, and you will need to apply the updates manually after running this upgrade. <a href='%1' style='color:white; text-decoration:underline; font-weight:bold;' target='_blank'>Click here</a> for detailed instructions. %2", array( 1 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Message+Templates#MessageTemplates-UpgradesandCustomizedSystemWorkflowTemplates', - 2 => '<ul><l>' . implode('</li><li>', $messages) . '</li></ul>', + 2 => '<ul>' . implode('', $messagesHtml) . '</ul>', )); $messageObj->updateTemplates(); diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFive.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFive.php new file mode 100644 index 0000000000000000000000000000000000000000..c1d96128a19ceebb07e0a0232d56db2433e74212 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFive.php @@ -0,0 +1,87 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2017 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License along with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * Upgrade logic for FiveFive */ +class CRM_Upgrade_Incremental_php_FiveFive extends CRM_Upgrade_Incremental_Base { + + /** + * Compute any messages which should be displayed beforeupgrade. + * + * Note: This function is called iteratively for each upcoming + * revision to the database. + * + * @param string $preUpgradeMessage + * @param string $rev + * a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'. + * @param null $currentVer + */ + public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { + // Example: Generate a pre-upgrade message. + // if ($rev == '5.12.34') { + // $preUpgradeMessage .= '<p>' . ts('A new permission, "%1", has been added. This permission is now used to control access to the Manage Tags screen.', array(1 => ts('manage tags'))) . '</p>'; + // } + } + + /** + * Compute any messages which should be displayed after upgrade. + * + * @param string $postUpgradeMessage + * alterable. + * @param string $rev + * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. + */ + public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { + // Example: Generate a post-upgrade message. + // if ($rev == '5.12.34') { + // $postUpgradeMessage .= '<br /><br />' . ts("By default, CiviCRM now disables the ability to import directly from SQL. To use this feature, you must explicitly grant permission 'import SQL datasource'."); + // } + } + + /* + * Important! All upgrade functions MUST add a 'runSql' task. + * Uncomment and use the following template for a new upgrade version + * (change the x in the function name): + */ + + // /** + // * Upgrade function. + // * + // * @param string $rev + // */ + // public function upgrade_5_0_x($rev) { + // $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => $rev)), 'runSql', $rev); + // $this->addTask('Do the foo change', 'taskFoo', ...); + // // Additional tasks here... + // // Note: do not use ts() in the addTask description because it adds unnecessary strings to transifex. + // // The above is an exception because 'Upgrade DB to %1: SQL' is generic & reusable. + // } + + // public static function taskFoo(CRM_Queue_TaskContext $ctx, ...) { + // return TRUE; + // } + +} diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php index 9c4082c0d7ce2da1fc3283035f706a6f178b7393..ff9091a1f41a4ffd163231abc35fb40a9ee253db 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFour.php @@ -42,7 +42,7 @@ class CRM_Upgrade_Incremental_php_FiveFour extends CRM_Upgrade_Incremental_Base public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { // Example: Generate a pre-upgrade message. // if ($rev == '5.12.34') { - // $preUpgradeMessage .= '<p>' . ts('A new permission has been added called %1 This Permission is now used to control access to the Manage Tags screen', array(1 => 'manage tags')) . '</p>'; + // $preUpgradeMessage .= '<p>' . ts('A new permission, "%1", has been added. This permission is now used to control access to the Manage Tags screen.', array(1 => ts('manage tags'))) . '</p>'; // } } @@ -55,7 +55,9 @@ class CRM_Upgrade_Incremental_php_FiveFour extends CRM_Upgrade_Incremental_Base * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. */ public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { - $postUpgradeMessage .= '<p>' . ts('A new %1 permission has been added. It is not granted by default. If your users create reports, you may wish to review your permissions.', array(1 => 'save Report Criteria')) . '</p>'; + if ($rev == '5.4.alpha1') { + $postUpgradeMessage .= '<p>' . ts('A new permission, "%1", has been added. It is not granted by default. If your users create reports, you may wish to review their permissions.', array(1 => ts('save Report Criteria'))) . '</p>'; + } // Example: Generate a post-upgrade message. // if ($rev == '5.12.34') { // $postUpgradeMessage .= '<br /><br />' . ts("By default, CiviCRM now disables the ability to import directly from SQL. To use this feature, you must explicitly grant permission 'import SQL datasource'."); diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveOne.php b/civicrm/CRM/Upgrade/Incremental/php/FiveOne.php index d97a2b6233fbf32fadc0fca0d67fb1bf8dbcf660..1f3113896b3474afa2bd6789ed153307f009e765 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveOne.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveOne.php @@ -42,7 +42,7 @@ class CRM_Upgrade_Incremental_php_FiveOne extends CRM_Upgrade_Incremental_Base { public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { // Example: Generate a pre-upgrade message. // if ($rev == '5.12.34') { - // $preUpgradeMessage .= '<p>' . ts('A new permission has been added called %1 This Permission is now used to control access to the Manage Tags screen', array(1 => 'manage tags')) . '</p>'; + // $preUpgradeMessage .= '<p>' . ts('A new permission, "%1", has been added. This permission is now used to control access to the Manage Tags screen.', array(1 => ts('manage tags'))) . '</p>'; // } } diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveThree.php b/civicrm/CRM/Upgrade/Incremental/php/FiveThree.php index f4b75d32db4871dee2a526350a851d18b1d01adc..5eebd3bc64b377858829ab5b19310f36c7c3a01e 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveThree.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveThree.php @@ -50,7 +50,7 @@ class CRM_Upgrade_Incremental_php_FiveThree extends CRM_Upgrade_Incremental_Base } // Example: Generate a pre-upgrade message. // if ($rev == '5.12.34') { - // $preUpgradeMessage .= '<p>' . ts('A new permission has been added called %1 This Permission is now used to control access to the Manage Tags screen', array(1 => 'manage tags')) . '</p>'; + // $preUpgradeMessage .= '<p>' . ts('A new permission, "%1", has been added. This permission is now used to control access to the Manage Tags screen.', array(1 => ts('manage tags'))) . '</p>'; // } } diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveZero.php b/civicrm/CRM/Upgrade/Incremental/php/FiveZero.php index 30551dd604b0884cb95776f77fea4871f7314cfe..e77abab3318663f8e45c29acc7691fe9848d3151 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveZero.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveZero.php @@ -43,7 +43,7 @@ class CRM_Upgrade_Incremental_php_FiveZero extends CRM_Upgrade_Incremental_Base public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { // Example: Generate a pre-upgrade message. //if ($rev == '5.12.34') { - // $preUpgradeMessage .= '<p>' . ts('A new permission has been added called %1 This Permission is now used to control access to the Manage Tags screen', array(1 => 'manage tags')) . '</p>'; + // $preUpgradeMessage .= '<p>' . ts('A new permission, "%1", has been added. This permission is now used to control access to the Manage Tags screen.', array(1 => ts('manage tags'))) . '</p>'; //} } diff --git a/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php b/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php index 0f667a7c919ff74bc03008beda9439e66db1ef98..2fa54ff1d459fcd1ae0995d6b149f983ddfa442f 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php @@ -1140,7 +1140,7 @@ FROM `civicrm_dashboard_contact` JOIN `civicrm_contact` WHERE civicrm_dashboard_ * @return bool */ public static function addMailingTemplateType() { - if (!CRM_Core_DAO::checkFieldExists('civicrm_mailing', 'template_type', FALSE)) { + if (!CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_mailing', 'template_type', FALSE)) { CRM_Core_DAO::executeQuery(' ALTER TABLE civicrm_mailing ADD COLUMN `template_type` varchar(64) NOT NULL DEFAULT \'traditional\' COMMENT \'The language/processing system used for email templates.\', diff --git a/civicrm/CRM/Upgrade/Incremental/php/FourThree.php b/civicrm/CRM/Upgrade/Incremental/php/FourThree.php index e224cac48a71262f6f5981fc274f000182e38a14..f1030b546175b6a61f847445318cd8b1d1bb8da7 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FourThree.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FourThree.php @@ -277,7 +277,7 @@ WHERE ccp.financial_type_id IS NULL and cp.cost > 0'); */ public function upgrade_4_3_alpha2($rev) { //CRM-11847 - $isColumnPresent = CRM_Core_DAO::checkFieldExists('civicrm_dedupe_rule_group', 'is_default'); + $isColumnPresent = CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_dedupe_rule_group', 'is_default'); if ($isColumnPresent) { CRM_Core_DAO::executeQuery('ALTER TABLE civicrm_dedupe_rule_group DROP COLUMN is_default'); } @@ -300,7 +300,7 @@ WHERE ccp.financial_type_id IS NULL and cp.cost > 0'); // CRM-12002 if ( CRM_Core_DAO::checkTableExists('log_civicrm_line_item') && - CRM_Core_DAO::checkFieldExists('log_civicrm_line_item', 'label') + CRM_Core_BAO_SchemaHandler::checkIfFieldExists('log_civicrm_line_item', 'label') ) { CRM_Core_DAO::executeQuery('ALTER TABLE `log_civicrm_line_item` CHANGE `label` `label` VARCHAR(255) NULL DEFAULT NULL'); } @@ -335,7 +335,7 @@ WHERE ccp.financial_type_id IS NULL and cp.cost > 0'); // CRM-12205 if ( CRM_Core_DAO::checkTableExists('log_civicrm_financial_trxn') && - CRM_Core_DAO::checkFieldExists('log_civicrm_financial_trxn', 'trxn_id') + CRM_Core_BAO_SchemaHandler::checkIfFieldExists('log_civicrm_financial_trxn', 'trxn_id') ) { CRM_Core_DAO::executeQuery('ALTER TABLE `log_civicrm_financial_trxn` CHANGE `trxn_id` `trxn_id` VARCHAR(255) NULL DEFAULT NULL'); } @@ -343,7 +343,7 @@ WHERE ccp.financial_type_id IS NULL and cp.cost > 0'); // CRM-12367 - add this column to single lingual sites only $upgrade = new CRM_Upgrade_Form(); if (!$upgrade->multilingual && - !CRM_Core_DAO::checkFieldExists('civicrm_premiums', 'premiums_nothankyou_label') + !CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_premiums', 'premiums_nothankyou_label') ) { $query = " ALTER TABLE civicrm_premiums @@ -925,7 +925,7 @@ AND TABLE_SCHEMA = %1 } } // check if column contact_id is present or not in civicrm_financial_account - $fieldExists = CRM_Core_DAO::checkFieldExists('civicrm_financial_account', 'contact_id', FALSE); + $fieldExists = CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_financial_account', 'contact_id', FALSE); if (!$fieldExists) { $query = " ALTER TABLE civicrm_financial_account diff --git a/civicrm/CRM/Upgrade/Incremental/php/Template.php b/civicrm/CRM/Upgrade/Incremental/php/Template.php index 7fe34e90de7d042d38704a458f6d16861f4cc44b..5c15aa15755ad32ead7a1ef85f8882036e1a600c 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/Template.php +++ b/civicrm/CRM/Upgrade/Incremental/php/Template.php @@ -48,7 +48,7 @@ class CRM_Upgrade_Incremental_php_<?php echo $camelNumber; ?> extends CRM_Upgrad public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { // Example: Generate a pre-upgrade message. // if ($rev == '5.12.34') { - // $preUpgradeMessage .= '<p>' . ts('A new permission has been added called %1 This Permission is now used to control access to the Manage Tags screen', array(1 => 'manage tags')) . '</p>'; + // $preUpgradeMessage .= '<p>' . ts('A new permission, "%1", has been added. This permission is now used to control access to the Manage Tags screen.', array(1 => ts('manage tags'))) . '</p>'; // } } diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.4.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.4.0.mysql.tpl deleted file mode 100644 index 4d21c517ad922acae6ebf953bf03f5afa6a0cfe6..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.4.0.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.4.0 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.5.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.5.0.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..b27009b9dc6544dedc032f5560bc33f865edfd5f --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.5.0.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.5.0 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.5.1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.5.1.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..dd195d7382e8f111ec240f02651defe6242152c1 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.5.1.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.5.1 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.5.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.5.alpha1.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..504659d437452b8b3af4ac443ef4507714ebb140 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.5.alpha1.mysql.tpl @@ -0,0 +1,18 @@ +{* file to handle db changes in 5.5.alpha1 during upgrade *} +#https://lab.civicrm.org/dev/core/issues/228 +UPDATE civicrm_option_group SET is_active = 0 WHERE is_active IS NULL; +ALTER TABLE civicrm_option_group MODIFY COLUMN is_active TINYINT(4) NOT NULL DEFAULT 1 COMMENT 'Is this option group active?'; +UPDATE civicrm_option_group SET is_locked = 0 WHERE is_locked IS NULL; +ALTER TABLE civicrm_option_group MODIFY COLUMN is_locked TINYINT(4) NOT NULL DEFAULT 1 COMMENT 'A lock to remove the ability to add new options via the UI.'; +#is_reserved already has a default so is effectively required but let's be explicit. +UPDATE civicrm_option_group SET `is_reserved` = 0 WHERE `is_reserved` IS NULL; +ALTER TABLE civicrm_option_group MODIFY COLUMN `is_reserved` tinyint(4) NOT NULL DEFAULT 1 COMMENT 'Is this a predefined system option group (i.e. it can not be deleted)?'; + +#https://lab.civicrm.org/dev/core/issues/155 +{* Fix is_reserved flag on civicrm_option_group table *} +UPDATE civicrm_option_group AS cog INNER JOIN civicrm_custom_field AS ccf +ON cog.id = ccf.option_group_id +SET cog.is_reserved = 0 WHERE cog.is_active = 1 AND ccf.is_active = 1; +UPDATE civicrm_option_group SET is_reserved = 1 WHERE name='environment'; + +UPDATE civicrm_navigation SET url = 'civicrm/admin/options?action=browse&reset=1' WHERE name = 'Dropdown Options' AND domain_id = {$domainID}; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.5.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.5.beta1.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..e2172c7ed060e731de3afcb497b10ac55a9ca3a6 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.5.beta1.mysql.tpl @@ -0,0 +1,6 @@ +{* file to handle db changes in 5.5.beta1 during upgrade *} + +UPDATE civicrm_action_schedule SET start_action_date = 'start_date' WHERE start_action_date = 'event_start_date'; +UPDATE civicrm_action_schedule SET start_action_date = 'end_date' WHERE start_action_date = 'event_end_date'; +UPDATE civicrm_action_schedule SET start_action_date = 'join_date' WHERE start_action_date = 'membership_join_date'; +UPDATE civicrm_action_schedule SET start_action_date = 'end_date' WHERE start_action_date = 'membership_end_date'; diff --git a/civicrm/CRM/Utils/Array.php b/civicrm/CRM/Utils/Array.php index a9d6cdd07ef50c53c1d8393adf9aa1a772b23222..73b4dab45a2246c496b093d7e8b2499c8be32f6d 100644 --- a/civicrm/CRM/Utils/Array.php +++ b/civicrm/CRM/Utils/Array.php @@ -866,9 +866,13 @@ class CRM_Utils_Array { * This is necessary to preserve sort order when sending an array through json_encode. * * @param array $associative + * Ex: ['foo' => 'bar']. * @param string $keyName + * Ex: 'key'. * @param string $valueName + * Ex: 'value'. * @return array + * Ex: [0 => ['key' => 'foo', 'value' => 'bar']]. */ public static function makeNonAssociative($associative, $keyName = 'key', $valueName = 'value') { $output = array(); @@ -965,38 +969,58 @@ class CRM_Utils_Array { } /** - * Get a single value from an array-tre. + * Get a single value from an array-tree. * - * @param array $arr - * Ex: array('foo'=>array('bar'=>123)). - * @param array $pathParts - * Ex: array('foo',bar'). - * @return mixed|NULL + * @param array $values + * Ex: ['foo' => ['bar' => 123]]. + * @param array $path + * Ex: ['foo', 'bar']. + * @param mixed $default + * @return mixed * Ex 123. */ - public static function pathGet($arr, $pathParts) { - $r = $arr; - foreach ($pathParts as $part) { - if (!isset($r[$part])) { - return NULL; + public static function pathGet($values, $path, $default = NULL) { + foreach ($path as $key) { + if (!is_array($values) || !isset($values[$key])) { + return $default; + } + $values = $values[$key]; + } + return $values; + } + + /** + * Check if a key isset which may be several layers deep. + * + * This is a helper for when the calling function does not know how many layers deep + * the path array is so cannot easily check. + * + * @param array $values + * @param array $path + * @return bool + */ + public static function pathIsset($values, $path) { + foreach ($path as $key) { + if (!is_array($values) || !isset($values[$key])) { + return FALSE; } - $r = $r[$part]; + $values = $values[$key]; } - return $r; + return TRUE; } /** * Set a single value in an array tree. * - * @param array $arr - * Ex: array('foo'=>array('bar'=>123)). + * @param array $values + * Ex: ['foo' => ['bar' => 123]]. * @param array $pathParts - * Ex: array('foo',bar'). + * Ex: ['foo', 'bar']. * @param $value * Ex: 456. */ - public static function pathSet(&$arr, $pathParts, $value) { - $r = &$arr; + public static function pathSet(&$values, $pathParts, $value) { + $r = &$values; $last = array_pop($pathParts); foreach ($pathParts as $part) { if (!isset($r[$part])) { @@ -1017,19 +1041,10 @@ class CRM_Utils_Array { * @param string $valueField * Ex: 'value'. * @return array - * Ex: array( - * 0 => array('key' => 'foo', 'value' => 'bar') - * ). + * @deprecated */ public static function toKeyValueRows($array, $keyField = 'key', $valueField = 'value') { - $result = array(); - foreach ($array as $key => $value) { - $result[] = array( - $keyField => $key, - $valueField => $value, - ); - } - return $result; + return self::makeNonAssociative($array, $keyField, $valueField); } /** @@ -1152,77 +1167,4 @@ class CRM_Utils_Array { return NULL; } - /** - * Check if a key isset which may be several layers deep. - * - * This is a helper for when the calling function does not know how many layers deep the - * path array is so cannot easily check. - * - * @param array $array - * @param array $path - * @return bool - * @throws \CRM_Core_Exception - */ - public static function recursiveIsset($array, $path) { - foreach ($path as $key) { - if (!is_array($array) || !isset($array[$key])) { - return FALSE; - } - $array = $array[$key]; - } - return TRUE; - } - - /** - * Check if a key isset which may be several layers deep. - * - * This is a helper for when the calling function does not know how many layers deep the - * path array is so cannot easily check. - * - * @param array $array - * @param array $path - * An array of keys - e.g [0, 'bob', 8] where we want to check if $array[0]['bob'][8] - * @param mixed $default - * Value to return if not found. - * @return bool - * @throws \CRM_Core_Exception - */ - public static function recursiveValue($array, $path, $default = NULL) { - foreach ($path as $key) { - if (!is_array($array) || !isset($array[$key])) { - return $default; - } - $array = $array[$key]; - } - return $array; - } - - /** - * Append the value to the array using the key provided. - * - * e.g if value is 'llama' & path is [0, 'email', 'location'] result will be - * [0 => ['email' => ['location' => 'llama']] - * - * @param $path - * @param $value - * @param array $source - * - * @return array - */ - public static function recursiveBuild($path, $value, $source = []) { - $arrayKey = array_shift($path); - // Recurse through array keys - if ($path) { - if (!isset($source[$arrayKey])) { - $source[$arrayKey] = []; - } - $source[$arrayKey] = self::recursiveBuild($path, $value, $source[$arrayKey]); - } - // Final iteration - else { - $source[$arrayKey] = $value; - } - return $source; - } - } diff --git a/civicrm/CRM/Utils/Cache.php b/civicrm/CRM/Utils/Cache.php index 171e4d54374c62db9af0a237900dfb1a72fa93fd..0ce1128c83ba2019c878996d45845742c7923f81 100644 --- a/civicrm/CRM/Utils/Cache.php +++ b/civicrm/CRM/Utils/Cache.php @@ -67,22 +67,7 @@ class CRM_Utils_Cache { */ public static function &singleton() { if (self::$_singleton === NULL) { - $className = 'ArrayCache'; // default to ArrayCache for now - - // Maintain backward compatibility for now. - // Setting CIVICRM_USE_MEMCACHE or CIVICRM_USE_ARRAYCACHE will - // override the CIVICRM_DB_CACHE_CLASS setting. - // Going forward, CIVICRM_USE_xxxCACHE should be deprecated. - if (defined('CIVICRM_USE_MEMCACHE') && CIVICRM_USE_MEMCACHE) { - $className = 'Memcache'; - } - elseif (defined('CIVICRM_USE_ARRAYCACHE') && CIVICRM_USE_ARRAYCACHE) { - $className = 'ArrayCache'; - } - elseif (defined('CIVICRM_DB_CACHE_CLASS') && CIVICRM_DB_CACHE_CLASS) { - $className = CIVICRM_DB_CACHE_CLASS; - } - + $className = self::getCacheDriver(); // a generic method for utilizing any of the available db caches. $dbCacheClass = 'CRM_Utils_Cache_' . $className; $settings = self::getCacheSettings($className); @@ -175,6 +160,9 @@ class CRM_Utils_Cache { * @param array $params * Array with keys: * - name: string, unique symbolic name. + * For a naming convention, use `snake_case` or `CamelCase` to maximize + * portability/cleanliness. Any other punctuation or whitespace + * should function correctly, but it can be harder to inspect/debug. * - type: array|string, list of acceptable cache types, in order of preference. * - prefetch: bool, whether to prefetch all data in cache (if possible). * @return CRM_Utils_Cache_Interface @@ -184,6 +172,10 @@ class CRM_Utils_Cache { public static function create($params = array()) { $types = (array) $params['type']; + if (!empty($params['name'])) { + $params['name'] = CRM_Core_BAO_Cache::cleanKey($params['name']); + } + foreach ($types as $type) { switch ($type) { case '*memory*': @@ -240,4 +232,30 @@ class CRM_Utils_Cache { return $key; } + /** + * @return string + * Ex: 'ArrayCache', 'Memcache', 'Redis'. + */ + public static function getCacheDriver() { + $className = 'ArrayCache'; // default to ArrayCache for now + + // Maintain backward compatibility for now. + // Setting CIVICRM_USE_MEMCACHE or CIVICRM_USE_ARRAYCACHE will + // override the CIVICRM_DB_CACHE_CLASS setting. + // Going forward, CIVICRM_USE_xxxCACHE should be deprecated. + if (defined('CIVICRM_USE_MEMCACHE') && CIVICRM_USE_MEMCACHE) { + $className = 'Memcache'; + return $className; + } + elseif (defined('CIVICRM_USE_ARRAYCACHE') && CIVICRM_USE_ARRAYCACHE) { + $className = 'ArrayCache'; + return $className; + } + elseif (defined('CIVICRM_DB_CACHE_CLASS') && CIVICRM_DB_CACHE_CLASS) { + $className = CIVICRM_DB_CACHE_CLASS; + return $className; + } + return $className; + } + } diff --git a/civicrm/CRM/Utils/Cache/Redis.php b/civicrm/CRM/Utils/Cache/Redis.php index 3e2f2f7f9b3fa64ecbb6e786399f2c4d350441ab..ad1d07cd3a3b69dbc964c5a980f7523476980f0c 100644 --- a/civicrm/CRM/Utils/Cache/Redis.php +++ b/civicrm/CRM/Utils/Cache/Redis.php @@ -42,20 +42,6 @@ class CRM_Utils_Cache_Redis implements CRM_Utils_Cache_Interface { const DEFAULT_TIMEOUT = 3600; const DEFAULT_PREFIX = ''; - /** - * The host name of the redisd server - * - * @var string - */ - protected $_host = self::DEFAULT_HOST; - - /** - * The port on which to connect on - * - * @var int - */ - protected $_port = self::DEFAULT_PORT; - /** * The default timeout to use * @@ -81,6 +67,34 @@ class CRM_Utils_Cache_Redis implements CRM_Utils_Cache_Interface { */ protected $_cache; + /** + * Create a connection. If a connection already exists, re-use it. + * + * @param array $config + * @return Redis + */ + public static function connect($config) { + $host = isset($config['host']) ? $config['host'] : self::DEFAULT_HOST; + $port = isset($config['port']) ? $config['port'] : self::DEFAULT_PORT; + $pass = CRM_Utils_Constant::value('CIVICRM_DB_CACHE_PASSWORD'); // Ugh. + $id = implode(':', ['connect', $host, $port /* $pass is constant */]); + if (!isset(Civi::$statics[__CLASS__][$id])) { + // Ideally, we'd track the connection in the service-container, but the + // cache connection is boot-critical. + $redis = new Redis(); + if (!$redis->connect($host, $port)) { + // dont use fatal here since we can go in an infinite loop + echo 'Could not connect to redisd server'; + CRM_Utils_System::civiExit(); + } + if ($pass) { + $redis->auth($pass); + } + Civi::$statics[__CLASS__][$id] = $redis; + } + return Civi::$statics[__CLASS__][$id]; + } + /** * Constructor * @@ -90,12 +104,6 @@ class CRM_Utils_Cache_Redis implements CRM_Utils_Cache_Interface { * @return \CRM_Utils_Cache_Redis */ public function __construct($config) { - if (isset($config['host'])) { - $this->_host = $config['host']; - } - if (isset($config['port'])) { - $this->_port = $config['port']; - } if (isset($config['timeout'])) { $this->_timeout = $config['timeout']; } @@ -103,15 +111,7 @@ class CRM_Utils_Cache_Redis implements CRM_Utils_Cache_Interface { $this->_prefix = $config['prefix']; } - $this->_cache = new Redis(); - if (!$this->_cache->connect($this->_host, $this->_port)) { - // dont use fatal here since we can go in an infinite loop - echo 'Could not connect to redisd server'; - CRM_Utils_System::civiExit(); - } - if (CRM_Utils_Constant::value('CIVICRM_DB_CACHE_PASSWORD')) { - $this->_cache->auth(CIVICRM_DB_CACHE_PASSWORD); - } + $this->_cache = self::connect($config); } /** diff --git a/civicrm/CRM/Utils/Cache/SqlGroup.php b/civicrm/CRM/Utils/Cache/SqlGroup.php index aa4d15e47249b1f7e2f670bb62857b176637ae3d..beaf5fd1ddb3d27113e894049faabb231a04317c 100644 --- a/civicrm/CRM/Utils/Cache/SqlGroup.php +++ b/civicrm/CRM/Utils/Cache/SqlGroup.php @@ -118,8 +118,12 @@ class CRM_Utils_Cache_SqlGroup implements CRM_Utils_Cache_Interface { throw new \CRM_Utils_Cache_CacheException("SqlGroup: Failed to acquire lock on cache key."); } + if (is_int($ttl) && $ttl <= 0) { + return $this->delete($key); + } + $dataExists = CRM_Core_DAO::singleValueQuery("SELECT COUNT(*) FROM {$this->table} WHERE {$this->where($key)}"); - $expires = CRM_Utils_Date::convertCacheTtlToExpires($ttl, self::DEFAULT_TTL); + $expires = round(microtime(1)) + CRM_Utils_Date::convertCacheTtl($ttl, self::DEFAULT_TTL); $dataSerialized = CRM_Core_BAO_Cache::encode($value); diff --git a/civicrm/CRM/Utils/Check/Component/Env.php b/civicrm/CRM/Utils/Check/Component/Env.php index df866185edcdd1d597856354eb4b9c9bc67f524a..a253716e42f30e6b639bcb4157153a31006d8be1 100644 --- a/civicrm/CRM/Utils/Check/Component/Env.php +++ b/civicrm/CRM/Utils/Check/Component/Env.php @@ -910,7 +910,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { $arrowUrl = CRM_Core_Config::singleton()->userFrameworkResourceURL . 'packages/jquery/css/images/arrow.png'; $headers = get_headers($arrowUrl); $fileExists = stripos($headers[0], "200 OK") ? 1 : 0; - if (!$fileExists) { + if ($fileExists === FALSE) { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, ts('The Resource URL is not set correctly. Please set the <a href="%1">CiviCRM Resource URL</a>.', diff --git a/civicrm/CRM/Utils/GeocodeProvider.php b/civicrm/CRM/Utils/GeocodeProvider.php index f87c8eac1150f8102a1136e4be7bbba8af49888d..e11a2eb67ad98627a5c9f3a2758c01e2a6d3b367 100644 --- a/civicrm/CRM/Utils/GeocodeProvider.php +++ b/civicrm/CRM/Utils/GeocodeProvider.php @@ -84,7 +84,7 @@ class CRM_Utils_GeocodeProvider { // or extend a base class. While we identify and implement a geocoding // abstraction library (rather than continue to roll our own), we settle for // this check. - if (!method_exists($provider, 'format')) { + if (!method_exists($provider, 'format') && $provider !== FALSE) { Civi::log()->error('Configured geocoder is invalid, must provide a format method', ['geocode_class' => $provider]); $provider = FALSE; } diff --git a/civicrm/CRM/Utils/Hook.php b/civicrm/CRM/Utils/Hook.php index 1f75b3ab8dade666643fc291f0747713462d4338..81b322cb5e9aacfc21e233d887ee9d04c02d2ea8 100644 --- a/civicrm/CRM/Utils/Hook.php +++ b/civicrm/CRM/Utils/Hook.php @@ -2450,4 +2450,25 @@ abstract class CRM_Utils_Hook { ); } + /** + * This hook is called before and after constructing mail recipients. + * Allows user to alter filter and/or search query to fetch mail recipients + * + * @param CRM_Mailing_DAO_Mailing $mailingObject + * @param array $criteria + * A list of SQL criteria; you can add/remove/replace/modify criteria. + * Array(string $name => CRM_Utils_SQL_Select $criterion). + * Ex: array('do_not_email' => CRM_Utils_SQL_Select::fragment()->where("$contact.do_not_email = 0")). + * @param string $context + * Ex: 'pre', 'post' + * @return mixed + */ + public static function alterMailingRecipients(&$mailingObject, &$criteria, $context) { + return self::singleton()->invoke(array('mailingObject', 'params', 'context'), + $mailingObject, $criteria, $context, + self::$_nullObject, self::$_nullObject, self::$_nullObject, + 'civicrm_alterMailingRecipients' + ); + } + } diff --git a/civicrm/CRM/Utils/Money.php b/civicrm/CRM/Utils/Money.php index 28ecf6aafe9f662e09461120983c72f3422f77fe..59168cb606a7dc6c890c16118db69f0f5f3fe6f3 100644 --- a/civicrm/CRM/Utils/Money.php +++ b/civicrm/CRM/Utils/Money.php @@ -154,4 +154,36 @@ class CRM_Utils_Money { } } + /** + * Tests if two currency values are equal, taking into account the currency's + * precision, so that if the difference between the two values is less than + * one more order of magnitude for the precision, then the values are + * considered as equal. So, if the currency has precision of 2 decimal + * points, a difference of more than 0.001 will cause the values to be + * considered as different. Anything less than 0.001 will be considered as + * equal. + * + * Eg. + * + * 1.2312 == 1.2319 with a currency precision of 2 decimal points + * 1.2310 != 1.2320 with a currency precision of 2 decimal points + * 1.3000 != 1.2000 with a currency precision of 2 decimal points + * + * @param $value1 + * @param $value2 + * @param $currency + * + * @return bool + */ + public static function equals($value1, $value2, $currency) { + $precision = 1 / pow(10, self::getCurrencyPrecision($currency) + 1); + $difference = self::subtractCurrencies($value1, $value2, $currency); + + if (abs($difference) > $precision) { + return FALSE; + } + + return TRUE; + } + } diff --git a/civicrm/CRM/Utils/ReCAPTCHA.php b/civicrm/CRM/Utils/ReCAPTCHA.php index de4021bb1f938298699761021db931c4ccb39d17..808615993097f2fca0e910c6781b7224125c9932 100644 --- a/civicrm/CRM/Utils/ReCAPTCHA.php +++ b/civicrm/CRM/Utils/ReCAPTCHA.php @@ -62,6 +62,29 @@ class CRM_Utils_ReCAPTCHA { return self::$_singleton; } + + /** + * Check if reCaptcha settings is avilable to add on form. + */ + public static function hasSettingsAvailable() { + $config = CRM_Core_Config::singleton(); + if ($config->recaptchaPublicKey == NULL || $config->recaptchaPublicKey == "") { + return FALSE; + } + return TRUE; + } + + /** + * Check if reCaptcha has to be added on form forcefully. + */ + public static function hasToAddForcefully() { + $config = CRM_Core_Config::singleton(); + if (!$config->forceRecaptcha) { + return FALSE; + } + return TRUE; + } + /** * Add element to form. * diff --git a/civicrm/CRM/Utils/Rule.php b/civicrm/CRM/Utils/Rule.php index 61a467451fd26e106c6fd8d59e6b5b001f0b2320..2bc78c243e2fcd994d1198576e215ca6248dd4de 100644 --- a/civicrm/CRM/Utils/Rule.php +++ b/civicrm/CRM/Utils/Rule.php @@ -157,7 +157,7 @@ class CRM_Utils_Rule { // at all, so we split and loop over. $parts = explode(',', $str); foreach ($parts as $part) { - if (!preg_match('/^((`[\w-]{1,64}`|[\w-]{1,64})\.)?(`[\w-]{1,64}`|[\w-]{1,64})( (asc|desc))?$/i', trim($part))) { + if (!preg_match('/^((`[\w-]{1,64}`|[\w-]{1,64})\.)*(`[\w-]{1,64}`|[\w-]{1,64})( (asc|desc))?$/i', trim($part))) { return FALSE; } } diff --git a/civicrm/CRM/Utils/SQL/BaseParamQuery.php b/civicrm/CRM/Utils/SQL/BaseParamQuery.php new file mode 100644 index 0000000000000000000000000000000000000000..82fb91cfc36150d06644fffabc20b795bfa77a59 --- /dev/null +++ b/civicrm/CRM/Utils/SQL/BaseParamQuery.php @@ -0,0 +1,232 @@ +<?php + +/** + * Class CRM_Utils_SQL_BaseParamQuery + * + * Base class for query-building which handles parameter interpolation. + */ +class CRM_Utils_SQL_BaseParamQuery implements ArrayAccess { + + /** + * Interpolate values as soon as they are passed in (where(), join(), etc). + * + * Default. + * + * Pro: Every clause has its own unique namespace for parameters. + * Con: Probably slower. + * Advice: Use this when aggregating SQL fragments from agents who + * maintained by different parties. + */ + const INTERPOLATE_INPUT = 'in'; + + /** + * Interpolate values when rendering SQL output (toSQL()). + * + * Pro: Probably faster. + * Con: Must maintain an aggregated list of all parameters. + * Advice: Use this when you have control over the entire query. + */ + const INTERPOLATE_OUTPUT = 'out'; + + /** + * Determine mode automatically. When the first attempt is made + * to use input-interpolation (eg `where(..., array(...))`) or + * output-interpolation (eg `param(...)`), the mode will be + * set. Subsequent calls will be validated using the same mode. + */ + const INTERPOLATE_AUTO = 'auto'; + + protected $mode = NULL; + + protected $params = array(); + + // Public to work-around PHP 5.3 limit. + public $strict = NULL; + + /** + * Enable (or disable) strict mode. + * + * In strict mode, unknown variables will generate exceptions. + * + * @param bool $strict + * @return self + */ + public function strict($strict = TRUE) { + $this->strict = $strict; + return $this; + } + + /** + * Given a string like "field_name = @value", replace "@value" with an escaped SQL string + * + * @param string $expr SQL expression + * @param null|array $args a list of values to insert into the SQL expression; keys are prefix-coded: + * prefix '@' => escape SQL + * prefix '#' => literal number, skip escaping but do validation + * prefix '!' => literal, skip escaping and validation + * if a value is an array, then it will be imploded + * + * PHP NULL's will be treated as SQL NULL's. The PHP string "null" will be treated as a string. + * + * @param string $activeMode + * + * @return string + */ + public function interpolate($expr, $args, $activeMode = self::INTERPOLATE_INPUT) { + if ($args === NULL) { + return $expr; + } + else { + if ($this->mode === self::INTERPOLATE_AUTO) { + $this->mode = $activeMode; + } + elseif ($activeMode !== $this->mode) { + throw new RuntimeException("Cannot mix interpolation modes."); + } + + $select = $this; + return preg_replace_callback('/([#!@])([a-zA-Z0-9_]+)/', function($m) use ($select, $args) { + if (isset($args[$m[2]])) { + $values = $args[$m[2]]; + } + elseif (isset($args[$m[1] . $m[2]])) { + // Backward compat. Keys in $args look like "#myNumber" or "@myString". + $values = $args[$m[1] . $m[2]]; + } + elseif ($select->strict) { + throw new CRM_Core_Exception('Cannot build query. Variable "' . $m[1] . $m[2] . '" is unknown.'); + } + else { + // Unrecognized variables are ignored. Mitigate risk of accidents. + return $m[0]; + } + $values = is_array($values) ? $values : array($values); + switch ($m[1]) { + case '@': + $parts = array_map(array($select, 'escapeString'), $values); + return implode(', ', $parts); + + // TODO: ensure all uses of this un-escaped literal are safe + case '!': + return implode(', ', $values); + + case '#': + foreach ($values as $valueKey => $value) { + if ($value === NULL) { + $values[$valueKey] = 'NULL'; + } + elseif (!is_numeric($value)) { + //throw new API_Exception("Failed encoding non-numeric value" . var_export(array($m[0] => $values), TRUE)); + throw new CRM_Core_Exception("Failed encoding non-numeric value (" . $m[0] . ")"); + } + } + return implode(', ', $values); + + default: + throw new CRM_Core_Exception("Unrecognized prefix"); + } + }, $expr); + } + } + + /** + * @param string|NULL $value + * @return string + * SQL expression, e.g. "it\'s great" (with-quotes) or NULL (without-quotes) + */ + public function escapeString($value) { + return $value === NULL ? 'NULL' : '"' . CRM_Core_DAO::escapeString($value) . '"'; + } + + /** + * Set one (or multiple) parameters to interpolate into the query. + * + * @param array|string $keys + * Key name, or an array of key-value pairs. + * @param null|mixed $value + * The new value of the parameter. + * Values may be strings, ints, or arrays thereof -- provided that the + * SQL query uses appropriate prefix (e.g. "@", "!", "#"). + * @return $this + */ + public function param($keys, $value = NULL) { + if ($this->mode === self::INTERPOLATE_AUTO) { + $this->mode = self::INTERPOLATE_OUTPUT; + } + elseif ($this->mode !== self::INTERPOLATE_OUTPUT) { + throw new RuntimeException("Select::param() only makes sense when interpolating on output."); + } + + if (is_array($keys)) { + foreach ($keys as $k => $v) { + $this->params[$k] = $v; + } + } + else { + $this->params[$keys] = $value; + } + return $this; + } + + /** + * Has an offset been set. + * + * @param string $offset + * + * @return bool + */ + public function offsetExists($offset) { + return isset($this->params[$offset]); + } + + /** + * Get the value of a SQL parameter. + * + * @code + * $select['cid'] = 123; + * $select->where('contact.id = #cid'); + * echo $select['cid']; + * @endCode + * + * @param string $offset + * @return mixed + * @see param() + * @see ArrayAccess::offsetGet + */ + public function offsetGet($offset) { + return $this->params[$offset]; + } + + /** + * Set the value of a SQL parameter. + * + * @code + * $select['cid'] = 123; + * $select->where('contact.id = #cid'); + * echo $select['cid']; + * @endCode + * + * @param string $offset + * @param mixed $value + * The new value of the parameter. + * Values may be strings, ints, or arrays thereof -- provided that the + * SQL query uses appropriate prefix (e.g. "@", "!", "#"). + * @see param() + * @see ArrayAccess::offsetSet + */ + public function offsetSet($offset, $value) { + $this->param($offset, $value); + } + + /** + * Unset the value of a SQL parameter. + * + * @param string $offset + * @see param() + * @see ArrayAccess::offsetUnset + */ + public function offsetUnset($offset) { + unset($this->params[$offset]); + } + +} diff --git a/civicrm/CRM/Utils/SQL/Delete.php b/civicrm/CRM/Utils/SQL/Delete.php new file mode 100644 index 0000000000000000000000000000000000000000..b646d3b3e20d28f300b8f9e59d6d00800b09bfa0 --- /dev/null +++ b/civicrm/CRM/Utils/SQL/Delete.php @@ -0,0 +1,269 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2018 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * Dear God Why Do I Have To Write This (Dumb SQL Builder) + * + * Usage: + * @code + * $del = CRM_Utils_SQL_Delete::from('civicrm_activity act') + * ->where('activity_type_id = #type', array('type' => 234)) + * ->where('status_id IN (#statuses)', array('statuses' => array(1,2,3)) + * ->where('subject like @subj', array('subj' => '%hello%')) + * ->where('!dynamicColumn = 1', array('dynamicColumn' => 'coalesce(is_active,0)')) + * ->where('!column = @value', array( + * 'column' => $customField->column_name, + * 'value' => $form['foo'] + * )) + * echo $del->toSQL(); + * @endcode + * + * Design principles: + * - Portable + * - No knowledge of the underlying SQL API (except for escaping -- CRM_Core_DAO::escapeString) + * - No knowledge of the underlying data model + * - SQL clauses correspond to PHP functions ($select->where("foo_id=123")) + * - Variable escaping is concise and controllable based on prefixes, eg + * - similar to Drupal's t() + * - use "@varname" to insert the escaped value + * - use "!varname" to insert raw (unescaped) values + * - use "#varname" to insert a numerical value (these are validated but not escaped) + * - to disable any preprocessing, simply omit the variable list + * - control characters (@!#) are mandatory in expressions but optional in arg-keys + * - Variables may be individual values or arrays; arrays are imploded with commas + * - Conditionals are AND'd; if you need OR's, do it yourself + * - Use classes/functions with documentation (rather than undocumented array-trees) + * - For any given string, interpolation is only performed once. After an interpolation, + * a string may never again be subjected to interpolation. + * + * The "interpolate-once" principle can be enforced by either interpolating on input + * xor output. The notations for input and output interpolation are a bit different, + * and they may not be mixed. + * + * @code + * // Interpolate on input. Set params when using them. + * $select->where('activity_type_id = #type', array( + * 'type' => 234, + * )); + * + * // Interpolate on output. Set params independently. + * $select + * ->where('activity_type_id = #type') + * ->param('type', 234), + * @endcode + * + * @package CRM + * @copyright CiviCRM LLC (c) 2004-2018 + */ +class CRM_Utils_SQL_Delete extends CRM_Utils_SQL_BaseParamQuery { + + private $from; + private $wheres = array(); + + /** + * Create a new DELETE query. + * + * @param string $from + * Table-name and optional alias. + * @param array $options + * @return CRM_Utils_SQL_Delete + */ + public static function from($from, $options = array()) { + return new self($from, $options); + } + + /** + * Create a new DELETE query. + * + * @param string $from + * Table-name and optional alias. + * @param array $options + */ + public function __construct($from, $options = array()) { + $this->from = $from; + $this->mode = isset($options['mode']) ? $options['mode'] : self::INTERPOLATE_AUTO; + } + + /** + * Make a new copy of this query. + * + * @return CRM_Utils_SQL_Delete + */ + public function copy() { + return clone $this; + } + + /** + * Merge something or other. + * + * @param CRM_Utils_SQL_Delete $other + * @param array|NULL $parts + * ex: 'wheres' + * @return CRM_Utils_SQL_Delete + */ + public function merge($other, $parts = NULL) { + if ($other === NULL) { + return $this; + } + + if ($this->mode === self::INTERPOLATE_AUTO) { + $this->mode = $other->mode; + } + elseif ($other->mode === self::INTERPOLATE_AUTO) { + // Noop. + } + elseif ($this->mode !== $other->mode) { + // Mixing modes will lead to someone getting an expected substitution. + throw new RuntimeException("Cannot merge queries that use different interpolation modes ({$this->mode} vs {$other->mode})."); + } + + $arrayFields = array('wheres', 'params'); + foreach ($arrayFields as $f) { + if ($parts === NULL || in_array($f, $parts)) { + $this->{$f} = array_merge($this->{$f}, $other->{$f}); + } + } + + $flatFields = array('from'); + foreach ($flatFields as $f) { + if ($parts === NULL || in_array($f, $parts)) { + if ($other->{$f} !== NULL) { + $this->{$f} = $other->{$f}; + } + } + } + + return $this; + } + + /** + * Limit results by adding extra condition(s) to the WHERE clause + * + * @param string|array $exprs list of SQL expressions + * @param null|array $args use NULL to disable interpolation; use an array of variables to enable + * @return CRM_Utils_SQL_Delete + */ + public function where($exprs, $args = NULL) { + $exprs = (array) $exprs; + foreach ($exprs as $expr) { + $evaluatedExpr = $this->interpolate($expr, $args); + $this->wheres[$evaluatedExpr] = $evaluatedExpr; + } + return $this; + } + + /** + * Set one (or multiple) parameters to interpolate into the query. + * + * @param array|string $keys + * Key name, or an array of key-value pairs. + * @param null|mixed $value + * The new value of the parameter. + * Values may be strings, ints, or arrays thereof -- provided that the + * SQL query uses appropriate prefix (e.g. "@", "!", "#"). + * @return \CRM_Utils_SQL_Delete + */ + public function param($keys, $value = NULL) { + // Why bother with an override? To provide better type-hinting in `@return`. + return parent::param($keys, $value); + } + + /** + * @param array|NULL $parts + * List of fields to check (e.g. 'wheres'). + * Defaults to all. + * @return bool + */ + public function isEmpty($parts = NULL) { + $empty = TRUE; + $fields = array( + 'from', + 'wheres', + ); + if ($parts !== NULL) { + $fields = array_intersect($fields, $parts); + } + foreach ($fields as $field) { + if (!empty($this->{$field})) { + $empty = FALSE; + } + } + return $empty; + } + + /** + * @return string + * SQL statement + */ + public function toSQL() { + $sql = 'DELETE '; + + if ($this->from !== NULL) { + $sql .= 'FROM ' . $this->from . "\n"; + } + if ($this->wheres) { + $sql .= 'WHERE (' . implode(') AND (', $this->wheres) . ")\n"; + } + if ($this->mode === self::INTERPOLATE_OUTPUT) { + $sql = $this->interpolate($sql, $this->params, self::INTERPOLATE_OUTPUT); + } + return $sql; + } + + /** + * Execute the query. + * + * To examine the results, use a function like `fetch()`, `fetchAll()`, + * `fetchValue()`, or `fetchMap()`. + * + * @param string|NULL $daoName + * The return object should be an instance of this class. + * Ex: 'CRM_Contact_BAO_Contact'. + * @param bool $i18nRewrite + * If the system has multilingual features, should the field/table + * names be rewritten? + * @return CRM_Core_DAO + * @see CRM_Core_DAO::executeQuery + * @see CRM_Core_I18n_Schema::rewriteQuery + */ + public function execute($daoName = NULL, $i18nRewrite = TRUE) { + // Don't pass through $params. toSQL() handles interpolation. + $params = array(); + + // Don't pass through $abort, $trapException. Just use straight-up exceptions. + $abort = TRUE; + $trapException = FALSE; + $errorScope = CRM_Core_TemporaryErrorScope::useException(); + + // Don't pass through freeDAO. You can do it yourself. + $freeDAO = FALSE; + + return CRM_Core_DAO::executeQuery($this->toSQL(), $params, $abort, $daoName, + $freeDAO, $i18nRewrite, $trapException); + } + +} diff --git a/civicrm/CRM/Utils/SQL/Select.php b/civicrm/CRM/Utils/SQL/Select.php index 23adc513d4be277a6e9afffab92c92ce8ec5945b..e53df900418f0140717a93ab53cc35e1229a813b 100644 --- a/civicrm/CRM/Utils/SQL/Select.php +++ b/civicrm/CRM/Utils/SQL/Select.php @@ -47,7 +47,6 @@ * - Portable * - No knowledge of the underlying SQL API (except for escaping -- CRM_Core_DAO::escapeString) * - No knowledge of the underlying data model - * - Single file * - SQL clauses correspond to PHP functions ($select->where("foo_id=123")) * - Variable escaping is concise and controllable based on prefixes, eg * - similar to Drupal's t() @@ -81,38 +80,8 @@ * @package CRM * @copyright CiviCRM LLC (c) 2004-2018 */ -class CRM_Utils_SQL_Select implements ArrayAccess { +class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { - /** - * Interpolate values as soon as they are passed in (where(), join(), etc). - * - * Default. - * - * Pro: Every clause has its own unique namespace for parameters. - * Con: Probably slower. - * Advice: Use this when aggregating SQL fragments from agents who - * maintained by different parties. - */ - const INTERPOLATE_INPUT = 'in'; - - /** - * Interpolate values when rendering SQL output (toSQL()). - * - * Pro: Probably faster. - * Con: Must maintain an aggregated list of all parameters. - * Advice: Use this when you have control over the entire query. - */ - const INTERPOLATE_OUTPUT = 'out'; - - /** - * Determine mode automatically. When the first attempt is made - * to use input-interpolation (eg `where(..., array(...))`) or - * output-interpolation (eg `param(...)`), the mode will be - * set. Subsequent calls will be validated using the same mode. - */ - const INTERPOLATE_AUTO = 'auto'; - - private $mode = NULL; private $insertInto = NULL; private $insertVerb = 'INSERT INTO '; private $insertIntoFields = array(); @@ -125,12 +94,8 @@ class CRM_Utils_SQL_Select implements ArrayAccess { private $orderBys = array(); private $limit = NULL; private $offset = NULL; - private $params = array(); private $distinct = NULL; - // Public to work-around PHP 5.3 limit. - public $strict = NULL; - /** * Create a new SELECT query. * @@ -177,7 +142,7 @@ class CRM_Utils_SQL_Select implements ArrayAccess { /** * Merge something or other. * - * @param CRM_Utils_SQL_Select $other + * @param array|CRM_Utils_SQL_Select $other * @param array|NULL $parts * ex: 'joins', 'wheres' * @return CRM_Utils_SQL_Select @@ -187,6 +152,13 @@ class CRM_Utils_SQL_Select implements ArrayAccess { return $this; } + if (is_array($other)) { + foreach ($other as $fragment) { + $this->merge($fragment, $parts); + } + return $this; + } + if ($this->mode === self::INTERPOLATE_AUTO) { $this->mode = $other->mode; } @@ -349,22 +321,8 @@ class CRM_Utils_SQL_Select implements ArrayAccess { * @return \CRM_Utils_SQL_Select */ public function param($keys, $value = NULL) { - if ($this->mode === self::INTERPOLATE_AUTO) { - $this->mode = self::INTERPOLATE_OUTPUT; - } - elseif ($this->mode !== self::INTERPOLATE_OUTPUT) { - throw new RuntimeException("Select::param() only makes sense when interpolating on output."); - } - - if (is_array($keys)) { - foreach ($keys as $k => $v) { - $this->params[$k] = $v; - } - } - else { - $this->params[$keys] = $value; - } - return $this; + // Why bother with an override? To provide bett er type-hinting in `@return`. + return parent::param($keys, $value); } /** @@ -477,101 +435,6 @@ class CRM_Utils_SQL_Select implements ArrayAccess { return $empty; } - /** - * Enable (or disable) strict mode. - * - * In strict mode, unknown variables will generate exceptions. - * - * @param bool $strict - * @return CRM_Utils_SQL_Select - */ - public function strict($strict = TRUE) { - $this->strict = $strict; - return $this; - } - - /** - * Given a string like "field_name = @value", replace "@value" with an escaped SQL string - * - * @param string $expr SQL expression - * @param null|array $args a list of values to insert into the SQL expression; keys are prefix-coded: - * prefix '@' => escape SQL - * prefix '#' => literal number, skip escaping but do validation - * prefix '!' => literal, skip escaping and validation - * if a value is an array, then it will be imploded - * - * PHP NULL's will be treated as SQL NULL's. The PHP string "null" will be treated as a string. - * - * @param string $activeMode - * - * @return string - */ - public function interpolate($expr, $args, $activeMode = self::INTERPOLATE_INPUT) { - if ($args === NULL) { - return $expr; - } - else { - if ($this->mode === self::INTERPOLATE_AUTO) { - $this->mode = $activeMode; - } - elseif ($activeMode !== $this->mode) { - throw new RuntimeException("Cannot mix interpolation modes."); - } - - $select = $this; - return preg_replace_callback('/([#!@])([a-zA-Z0-9_]+)/', function($m) use ($select, $args) { - if (isset($args[$m[2]])) { - $values = $args[$m[2]]; - } - elseif (isset($args[$m[1] . $m[2]])) { - // Backward compat. Keys in $args look like "#myNumber" or "@myString". - $values = $args[$m[1] . $m[2]]; - } - elseif ($select->strict) { - throw new CRM_Core_Exception('Cannot build query. Variable "' . $m[1] . $m[2] . '" is unknown.'); - } - else { - // Unrecognized variables are ignored. Mitigate risk of accidents. - return $m[0]; - } - $values = is_array($values) ? $values : array($values); - switch ($m[1]) { - case '@': - $parts = array_map(array($select, 'escapeString'), $values); - return implode(', ', $parts); - - // TODO: ensure all uses of this un-escaped literal are safe - case '!': - return implode(', ', $values); - - case '#': - foreach ($values as $valueKey => $value) { - if ($value === NULL) { - $values[$valueKey] = 'NULL'; - } - elseif (!is_numeric($value)) { - //throw new API_Exception("Failed encoding non-numeric value" . var_export(array($m[0] => $values), TRUE)); - throw new CRM_Core_Exception("Failed encoding non-numeric value (" . $m[0] . ")"); - } - } - return implode(', ', $values); - - default: - throw new CRM_Core_Exception("Unrecognized prefix"); - } - }, $expr); - } - } - - /** - * @param string|NULL $value - * @return string - * SQL expression, e.g. "it\'s great" (with-quotes) or NULL (without-quotes) - */ - public function escapeString($value) { - return $value === NULL ? 'NULL' : '"' . CRM_Core_DAO::escapeString($value) . '"'; - } - /** * @return string * SQL statement @@ -655,65 +518,4 @@ class CRM_Utils_SQL_Select implements ArrayAccess { $freeDAO, $i18nRewrite, $trapException); } - /** - * Has an offset been set. - * - * @param string $offset - * - * @return bool - */ - public function offsetExists($offset) { - return isset($this->params[$offset]); - } - - /** - * Get the value of a SQL parameter. - * - * @code - * $select['cid'] = 123; - * $select->where('contact.id = #cid'); - * echo $select['cid']; - * @endCode - * - * @param string $offset - * @return mixed - * @see param() - * @see ArrayAccess::offsetGet - */ - public function offsetGet($offset) { - return $this->params[$offset]; - } - - /** - * Set the value of a SQL parameter. - * - * @code - * $select['cid'] = 123; - * $select->where('contact.id = #cid'); - * echo $select['cid']; - * @endCode - * - * @param string $offset - * @param mixed $value - * The new value of the parameter. - * Values may be strings, ints, or arrays thereof -- provided that the - * SQL query uses appropriate prefix (e.g. "@", "!", "#"). - * @see param() - * @see ArrayAccess::offsetSet - */ - public function offsetSet($offset, $value) { - $this->param($offset, $value); - } - - /** - * Unset the value of a SQL parameter. - * - * @param string $offset - * @see param() - * @see ArrayAccess::offsetUnset - */ - public function offsetUnset($offset) { - unset($this->params[$offset]); - } - } diff --git a/civicrm/CRM/Utils/System/Drupal8.php b/civicrm/CRM/Utils/System/Drupal8.php index 499a1431a87f5d90afd2cd19ca27c911869e9ac9..1413f2bd7b9bdcacbb98779cd8d15bd8525b0ff2 100644 --- a/civicrm/CRM/Utils/System/Drupal8.php +++ b/civicrm/CRM/Utils/System/Drupal8.php @@ -422,7 +422,7 @@ class CRM_Utils_System_Drupal8 extends CRM_Utils_System_DrupalBase { chdir($root); // Create a mock $request object - $autoloader = require_once $root . '/vendor/autoload.php'; + $autoloader = require_once $root . '/autoload.php'; if ($autoloader === TRUE) { $autoloader = ComposerAutoloaderInitDrupal8::getLoader(); } diff --git a/civicrm/Civi/Core/Container.php b/civicrm/Civi/Core/Container.php index 82dc0614de61888b20c2b13e28bcba079d3b2598..6eb4a4d66a9f8a8a93fbb737cc95a3e77d21029f 100644 --- a/civicrm/Civi/Core/Container.php +++ b/civicrm/Civi/Core/Container.php @@ -214,6 +214,16 @@ class Container { ->setFactory(array($class, 'singleton')); } + $container->setDefinition('prevnext', new Definition( + 'CRM_Core_PrevNextCache_Interface', + [new Reference('service_container')] + ))->setFactory(array(new Reference(self::SELF), 'createPrevNextCache')); + + $container->setDefinition('prevnext.driver.sql', new Definition( + 'CRM_Core_PrevNextCache_Sql', + [] + )); + $container->setDefinition('civi.mailing.triggers', new Definition( 'Civi\Core\SqlTrigger\TimestampTriggers', array('civicrm_mailing', 'Mailing') @@ -399,6 +409,18 @@ class Container { return $kernel; } + /** + * @param ContainerInterface $container + * @return \CRM_Core_PrevNextCache_Interface + */ + public static function createPrevNextCache($container) { + $cacheDriver = \CRM_Utils_Cache::getCacheDriver(); + $service = 'prevnext.driver.' . strtolower($cacheDriver); + return $container->has($service) + ? $container->get($service) + : $container->get('prevnext.driver.sql'); + } + /** * Get a list of boot services. * diff --git a/civicrm/Civi/Core/SettingsBag.php b/civicrm/Civi/Core/SettingsBag.php index e3fcd7adb8232715c62cd8a4d1db30ce5e6bf8ab..167be544c39140d388019fb899e0364a286a4f76 100644 --- a/civicrm/Civi/Core/SettingsBag.php +++ b/civicrm/Civi/Core/SettingsBag.php @@ -139,7 +139,7 @@ class SettingsBag { $isUpgradeMode = \CRM_Core_Config::isUpgradeMode(); - if ($isUpgradeMode && empty($this->contactId) && \CRM_Core_DAO::checkFieldExists('civicrm_domain', 'config_backend', FALSE)) { + if ($isUpgradeMode && empty($this->contactId) && \CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_domain', 'config_backend', FALSE)) { $config_backend = \CRM_Core_DAO::singleValueQuery('SELECT config_backend FROM civicrm_domain WHERE id = %1', array(1 => array($this->domainId, 'Positive'))); $oldSettings = \CRM_Upgrade_Incremental_php_FourSeven::convertBackendToSettings($this->domainId, $config_backend); @@ -373,7 +373,7 @@ class SettingsBag { if (!isset(\Civi::$statics[__CLASS__]['upgradeMode'])) { \Civi::$statics[__CLASS__]['upgradeMode'] = \CRM_Core_Config::isUpgradeMode(); } - if (\Civi::$statics[__CLASS__]['upgradeMode'] && \CRM_Core_DAO::checkFieldExists('civicrm_setting', 'group_name')) { + if (\Civi::$statics[__CLASS__]['upgradeMode'] && \CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_setting', 'group_name')) { $dao->group_name = 'placeholder'; } diff --git a/civicrm/Civi/Core/SqlTrigger/StaticTriggers.php b/civicrm/Civi/Core/SqlTrigger/StaticTriggers.php index 40cd3a57ba5851da35ae0dbb71b3e16b5ce6d024..30a02a8fa1385635f76a5bacc9bf4d659d961f3e 100644 --- a/civicrm/Civi/Core/SqlTrigger/StaticTriggers.php +++ b/civicrm/Civi/Core/SqlTrigger/StaticTriggers.php @@ -89,7 +89,7 @@ class StaticTriggers { if (\CRM_Core_Config::isUpgradeMode() && isset($trigger['upgrade_check'])) { $uc = $trigger['upgrade_check']; - if (!\CRM_Core_DAO::checkFieldExists($uc['table'], $uc['column']) + if (!\CRM_Core_BAO_SchemaHandler::checkIfFieldExists($uc['table'], $uc['column']) ) { continue; } diff --git a/civicrm/Civi/Core/SqlTrigger/TimestampTriggers.php b/civicrm/Civi/Core/SqlTrigger/TimestampTriggers.php index c7e1127322b519ca12eb10407d0b4ac96c711917..dcce0e39307713ba5fe7d6cc38512c01978d840f 100644 --- a/civicrm/Civi/Core/SqlTrigger/TimestampTriggers.php +++ b/civicrm/Civi/Core/SqlTrigger/TimestampTriggers.php @@ -145,7 +145,7 @@ class TimestampTriggers { // In the past, this was a version-based check, but checkFieldExists() // seems more robust. if (\CRM_Core_Config::isUpgradeMode()) { - if (!\CRM_Core_DAO::checkFieldExists($this->getTableName(), + if (!\CRM_Core_BAO_SchemaHandler::checkIfFieldExists($this->getTableName(), $this->getCreatedDate()) ) { return; diff --git a/civicrm/Civi/Test/Api3TestTrait.php b/civicrm/Civi/Test/Api3TestTrait.php index 1efcd13ce693246853128e091e7ee156058b8b78..2a10abf7e7357f7fc2a13c7dbbba3c7618ab6e4e 100644 --- a/civicrm/Civi/Test/Api3TestTrait.php +++ b/civicrm/Civi/Test/Api3TestTrait.php @@ -235,6 +235,9 @@ trait Api3TestTrait { 'debug' => 1, ); $result = $this->civicrm_api($entity, 'getvalue', $params); + if (is_array($result) && (!empty($result['is_error']) || isset($result['values']))) { + throw new \Exception('Invalid getvalue result' . print_r($result, TRUE)); + } if ($type) { if ($type == 'integer') { // api seems to return integers as strings diff --git a/civicrm/README.md b/civicrm/README.md index cf7462f47dbafa953a7d85ffb913094dac170e35..69835a0b75c5673aec371dc992413c960d38d3bf 100644 --- a/civicrm/README.md +++ b/civicrm/README.md @@ -46,5 +46,5 @@ questions and ideas in the [Developer Discussion room](https://chat.civicrm.org/ Installing the latest developmental code requires some [special steps](http://wiki.civicrm.org/confluence/display/CRMDOC/Contributing+to+CiviCRM+using+GitHub). -Report all issues to CiviCRM via JIRA: -https://issues.civicrm.org +Report all issues to CiviCRM via GitLab: +https://lab.civicrm.org diff --git a/civicrm/ang/crmCaseType/list.html b/civicrm/ang/crmCaseType/list.html index 52d1a3d0a6f4c99218d636f23aabacccc99b5bb2..a9caecc34a2e12c3f110249468106327fa53446d 100644 --- a/civicrm/ang/crmCaseType/list.html +++ b/civicrm/ang/crmCaseType/list.html @@ -35,7 +35,7 @@ Required vars: caseTypes <span> <a class="action-item crm-hover-button" ng-href="#/caseType/{{caseType.id}}">{{ts('Edit')}}</a> - <span class="btn-slide crm-hover-button"> + <span class="btn-slide crm-hover-button" ng-show="!caseType.is_reserved || (!caseType.is_active || caseType.is_forked)"> {{ts('more')}} <ul class="panel" style="display: none;"> <li ng-hide="caseType.is_active"> diff --git a/civicrm/ang/crmMailing/services.js b/civicrm/ang/crmMailing/services.js index cfaaeda2b1d1a7225ef76a167697b25c60d05cee..e50a0a0f7a7a5dca40039ea4be5026775f8b97cf 100644 --- a/civicrm/ang/crmMailing/services.js +++ b/civicrm/ang/crmMailing/services.js @@ -5,7 +5,7 @@ // the available "From:" addrs. Records are like the underlying OptionValues -- but add "email" // and "author". angular.module('crmMailing').factory('crmFromAddresses', function ($q, crmApi) { - var emailRegex = /^"(.*)" <([^@>]*@[^@>]*)>$/; + var emailRegex = /^"(.*)" *<([^@>]*@[^@>]*)>$/; var addrs = _.map(CRM.crmMailing.fromAddress, function (addr) { var match = emailRegex.exec(addr.label); return angular.extend({}, addr, { diff --git a/civicrm/ang/crmRouteBinder.js b/civicrm/ang/crmRouteBinder.js index 16947a3d79dc0d65e38238789fccc9f2ec1b4332..0dd232dd637c5a56f2060f80b4b9eb5ce19e99f0 100644 --- a/civicrm/ang/crmRouteBinder.js +++ b/civicrm/ang/crmRouteBinder.js @@ -66,7 +66,7 @@ value = fmt.decode($route.current.params[options.param]); } else { - value = _.isObject(options.default) ? angular.extend({}, options.default) : options.default; + value = _.cloneDeep(options.default); ignorable[options.param] = fmt.encode(options.default); } $parse(options.expr).assign(_scope, value); diff --git a/civicrm/api/v3/ActivityType.php b/civicrm/api/v3/ActivityType.php index 3f6d121f1a112ee8f5a0dc6cb1812934b8651a8d..db7bd23d73c4ffcb730faeea9d7ad33cc1d90296 100644 --- a/civicrm/api/v3/ActivityType.php +++ b/civicrm/api/v3/ActivityType.php @@ -72,13 +72,12 @@ function civicrm_api3_activity_type_get($params) { function civicrm_api3_activity_type_create($params) { $action = 1; - $groupParams = array('name' => 'activity_type'); if ($optionValueID = CRM_Utils_Array::value('option_value_id', $params)) { $action = 2; } - $activityObject = CRM_Core_OptionValue::addOptionValue($params, $groupParams, $action, $optionValueID); + $activityObject = CRM_Core_OptionValue::addOptionValue($params, 'activity_type', $action, $optionValueID); $activityType = array(); _civicrm_api3_object_to_array($activityObject, $activityType[$activityObject->id]); return civicrm_api3_create_success($activityType, $params, 'activity_type', 'create'); diff --git a/civicrm/api/v3/Contact.php b/civicrm/api/v3/Contact.php index d2785fc372e1f3df3b4e166ab95fc1fb32745593..f6afa246bfcac01f275c4627b7b4fb721947d7c7 100644 --- a/civicrm/api/v3/Contact.php +++ b/civicrm/api/v3/Contact.php @@ -1162,6 +1162,149 @@ function _civicrm_api3_contact_merge_spec(&$params) { ); } +/** + * Get the ultimate contact a contact was merged to. + * + * @param array $params + * + * @return array + * API Result Array + * @throws API_Exception + */ +function civicrm_api3_contact_getmergedto($params) { + $contactID = _civicrm_api3_contact_getmergedto($params); + if ($contactID) { + $values = [$contactID => ['id' => $contactID]]; + } + else { + $values = []; + } + return civicrm_api3_create_success($values, $params); +} + +/** + * Get the contact our contact was finally merged to. + * + * If the contact has been merged multiple times the crucial parent activity will have + * wound up on the ultimate contact so we can figure out the final resting place of the + * contact with only 2 activities even if 50 merges took place. + * + * @param array $params + * + * @return int|false + */ +function _civicrm_api3_contact_getmergedto($params) { + $contactID = FALSE; + $deleteActivity = civicrm_api3('ActivityContact', 'get', [ + 'contact_id' => $params['contact_id'], + 'activity_id.activity_type_id' => 'Contact Deleted By Merge', + 'is_deleted' => 0, + 'is_test' => $params['is_test'], + 'record_type_id' => 'Activity Targets', + 'return' => ['activity_id.parent_id'], + 'sequential' => 1, + 'options' => [ + 'limit' => 1, + 'sort' => 'activity_id.activity_date_time DESC' + ], + ])['values']; + if (!empty($deleteActivity)) { + $contactID = civicrm_api3('ActivityContact', 'getvalue', [ + 'activity_id' => $deleteActivity[0]['activity_id.parent_id'], + 'record_type_id' => 'Activity Targets', + 'return' => 'contact_id', + ]); + } + return $contactID; +} + +/** + * Adjust metadata for contact_merge api function. + * + * @param array $params + */ +function _civicrm_api3_contact_getmergedto_spec(&$params) { + $params['contact_id'] = [ + 'title' => ts('ID of contact to find ultimate contact for'), + 'type' => CRM_Utils_Type::T_INT, + 'api.required' => TRUE, + ]; + $params['is_test'] = [ + 'title' => ts('Get test deletions rather than live?'), + 'type' => CRM_Utils_Type::T_BOOLEAN, + 'api.default' => 0, + ]; +} + +/** + * Get the ultimate contact a contact was merged to. + * + * @param array $params + * + * @return array + * API Result Array + * @throws API_Exception + */ +function civicrm_api3_contact_getmergedfrom($params) { + $contacts = _civicrm_api3_contact_getmergedfrom($params); + return civicrm_api3_create_success($contacts, $params); +} + +/** + * Get all the contacts merged into our contact. + * + * @param array $params + * + * @return array + */ +function _civicrm_api3_contact_getmergedfrom($params) { + $activities = []; + $deleteActivities = civicrm_api3('ActivityContact', 'get', [ + 'contact_id' => $params['contact_id'], + 'activity_id.activity_type_id' => 'Contact Merged', + 'is_deleted' => 0, + 'is_test' => $params['is_test'], + 'record_type_id' => 'Activity Targets', + 'return' => 'activity_id', + ])['values']; + + foreach ($deleteActivities as $deleteActivity) { + $activities[] = $deleteActivity['activity_id']; + } + if (empty($activities)) { + return []; + } + + $activityContacts = civicrm_api3('ActivityContact', 'get', [ + 'activity_id.parent_id' => ['IN' => $activities], + 'record_type_id' => 'Activity Targets', + 'return' => 'contact_id', + ])['values']; + $contacts = []; + foreach ($activityContacts as $activityContact) { + $contacts[$activityContact['contact_id']] = ['id' => $activityContact['contact_id']]; + } + return $contacts; +} + +/** + * Adjust metadata for contact_merge api function. + * + * @param array $params + */ +function _civicrm_api3_contact_getmergedfrom_spec(&$params) { + $params['contact_id'] = [ + 'title' => ts('ID of contact to find ultimate contact for'), + 'type' => CRM_Utils_Type::T_INT, + 'api.required' => TRUE, + ]; + $params['is_test'] = [ + 'title' => ts('Get test deletions rather than live?'), + 'type' => CRM_Utils_Type::T_BOOLEAN, + 'api.default' => 0, + ]; +} + /** * Adjust metadata for contact_proximity api function. * diff --git a/civicrm/api/v3/CustomValue.php b/civicrm/api/v3/CustomValue.php index 20aa18c51880299636d94f8bcec81b8bf973285e..3a855d21f3106ac1e27d6bbc8f12269efc096db7 100644 --- a/civicrm/api/v3/CustomValue.php +++ b/civicrm/api/v3/CustomValue.php @@ -149,7 +149,10 @@ function civicrm_api3_custom_value_get($params) { if (!empty(substr($id, 7))) { $returnVal = substr($id, 7); } - foreach ((array) $returnVal as $value) { + if (!is_array($returnVal)) { + $returnVal = explode(',', $returnVal); + } + foreach ($returnVal as $value) { list($c, $i) = CRM_Utils_System::explode('_', $value, 2); if ($c == 'custom' && is_numeric($i)) { $names['custom_' . $i] = 'custom_' . $i; @@ -341,6 +344,7 @@ function civicrm_api3_custom_value_gettree($params) { if ($ret || !empty($params['check_permissions'])) { $entityData = civicrm_api3($params['entity_type'], 'getsingle', array( 'id' => $params['entity_id'], + 'check_permissions' => !empty($params['check_permissions']), 'return' => array_merge(array('id'), array_values($ret)), )); foreach ($ret as $param => $key) { diff --git a/civicrm/api/v3/FinancialType.php b/civicrm/api/v3/FinancialType.php index cc597b3445dacd03e4d2adb2609f59a91e5eb79d..59f0d8fe34840ce17a0606f6051ea804bf4f8d11 100644 --- a/civicrm/api/v3/FinancialType.php +++ b/civicrm/api/v3/FinancialType.php @@ -42,6 +42,12 @@ function civicrm_api3_financial_type_create($params) { return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'FinancialType'); } +function _civicrm_api3_financial_type_create_spec(&$params) { + $params['name']['api.required'] = 1; + $params['name']['type'] = CRM_Utils_Type::T_STRING; + unset($params['name']['pseudoconstant']); +} + /** * Get a FinancialType. * diff --git a/civicrm/api/v3/MembershipType.php b/civicrm/api/v3/MembershipType.php index 5011383c689781edb7e60be0b059198d37af4732..82de053cfbd6c204132b81fb07022cd19b5d60ca 100644 --- a/civicrm/api/v3/MembershipType.php +++ b/civicrm/api/v3/MembershipType.php @@ -59,8 +59,7 @@ function civicrm_api3_membership_type_create($params) { * Array of parameters determined by getfields. */ function _civicrm_api3_membership_type_create_spec(&$params) { - // todo could set default here probably - $params['domain_id']['api.required'] = 1; + $params['domain_id']['api.default'] = CRM_Core_Config::domainID(); $params['member_of_contact_id']['api.required'] = 1; $params['financial_type_id']['api.required'] = 1; $params['name']['api.required'] = 1; diff --git a/civicrm/api/v3/Navigation.php b/civicrm/api/v3/Navigation.php index 1ce843095c366798cffaaf39b404ae0f0bbe1c64..bce0ce008b62788df3e2f68df9bafc6b47597e58 100644 --- a/civicrm/api/v3/Navigation.php +++ b/civicrm/api/v3/Navigation.php @@ -87,17 +87,6 @@ function civicrm_api3_navigation_get($params) { return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params); } -/** - * Adjust metadata for navigation create action. - * - * @param array $params - */ -function _civicrm_api3_navigation_create_spec(&$params) { - $params['domain_id']['api.default'] = CRM_Core_Config::domainID(); - $params['domain_id']['type'] = CRM_Utils_Type::T_INT; - $params['domain_id']['title'] = 'Domain ID'; -} - /** * Create navigation item. * diff --git a/civicrm/api/v3/OptionGroup.php b/civicrm/api/v3/OptionGroup.php index 24822c85205e0b63b1072471d4cba37cab7a0448..f86c3a21bbb90f013ed75d283b1ad2e2b142e90c 100644 --- a/civicrm/api/v3/OptionGroup.php +++ b/civicrm/api/v3/OptionGroup.php @@ -53,7 +53,9 @@ function civicrm_api3_option_group_get($params) { * @return array */ function civicrm_api3_option_group_create($params) { - return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'OptionGroup'); + $result = _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'OptionGroup'); + civicrm_api('option_value', 'getfields', array('version' => 3, 'cache_clear' => 1)); + return $result; } /** diff --git a/civicrm/bower_components/jquery-ui/.bower.json b/civicrm/bower_components/jquery-ui/.bower.json index 69ba102964fa2e81c1c7bba1451f376f5e85813e..d28097dd886aa3254e1ae3f4b4c31a9a08723e8e 100644 --- a/civicrm/bower_components/jquery-ui/.bower.json +++ b/civicrm/bower_components/jquery-ui/.bower.json @@ -5,6 +5,7 @@ "jquery-ui.js" ], "ignore": [], + "license": "MIT", "dependencies": { "jquery": ">=1.6" }, @@ -13,9 +14,9 @@ "_resolution": { "type": "version", "tag": "1.12.1", - "commit": "dec4c50123193d4f7c8ae6cd0bff45478e1ad276" + "commit": "44ecf3794cc56b65954cc19737234a3119d036cc" }, "_source": "https://github.com/components/jqueryui.git", - "_target": ">=1.9", + "_target": "~1.12", "_originalSource": "jquery-ui" } \ No newline at end of file diff --git a/civicrm/bower_components/jquery-ui/bower.json b/civicrm/bower_components/jquery-ui/bower.json index cc0cf5ba93dd4c68a40ba1307f006a8942d39c64..965aba7b03ec1c61abfc116622b052e28b7db524 100644 --- a/civicrm/bower_components/jquery-ui/bower.json +++ b/civicrm/bower_components/jquery-ui/bower.json @@ -6,6 +6,7 @@ ], "ignore": [ ], + "license": "MIT", "dependencies": { "jquery": ">=1.6" } diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php index 7f1c1ef4ef129fa89244e8bc0ca55640067bb6a1..2af7d1e00a1e806300f3a358d769dd28cd0fb4f9 100644 --- a/civicrm/civicrm-version.php +++ b/civicrm/civicrm-version.php @@ -1,7 +1,7 @@ <?php /** @deprecated */ function civicrmVersion( ) { - return array( 'version' => '5.4.0', + return array( 'version' => '5.5.1', 'cms' => 'Wordpress', 'revision' => '' ); } diff --git a/civicrm/css/civicrm.css b/civicrm/css/civicrm.css index 6b2fdcd1843ee642af5e6fc55d92febe2acbeba4..a89e60458bc8eaaa5fa9c89f714df2eaeebbd787 100644 --- a/civicrm/css/civicrm.css +++ b/civicrm/css/civicrm.css @@ -2118,6 +2118,10 @@ a.crm-i:hover { color: #6177D5; } +.crm-i.crm-i-green { + color: #86c661; +} + .crm-i-button { position: relative; } diff --git a/civicrm/css/civicrmNavigation.css b/civicrm/css/civicrmNavigation.css index 990b6e281082d9232a9a912727e5cc649179f710..e005bb004bd2846aeed67e1ebd42edc00a4b47ee 100644 --- a/civicrm/css/civicrmNavigation.css +++ b/civicrm/css/civicrmNavigation.css @@ -115,12 +115,14 @@ div.menu-item { padding: 1px 10px 1px 4px; height: auto; } -img.menu-item-arrow{ +#civicrm-menu .menu-item-arrow, +#root-menu-div .menu-item-arrow { position: absolute; right: 4px; - top: 8px; + top: 6px; } -#civicrm-menu i { +#civicrm-menu i, +#root-menu-div i { margin-right: 5px; } li.menu-separator{ diff --git a/civicrm/ext/api4/CRM/Api4/Page/AJAX.php b/civicrm/ext/api4/CRM/Api4/Page/AJAX.php new file mode 100644 index 0000000000000000000000000000000000000000..01e7dd09eb04da64d7b1dc9050cd63b3ba1e1032 --- /dev/null +++ b/civicrm/ext/api4/CRM/Api4/Page/AJAX.php @@ -0,0 +1,64 @@ +<?php + +class CRM_Api4_Page_AJAX extends CRM_Core_Page { + + /** + * Handler for api4 ajax requests + */ + public function run() { + try { + // Call multiple + if (empty($this->urlPath[3])) { + $calls = CRM_Utils_Request::retrieve('calls', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST', TRUE); + $calls = json_decode($calls, TRUE); + $response = []; + foreach ($calls as $index => $call) { + $response[$index] = $this->execute($call[0], $call[1], CRM_Utils_Array::value(2, $call, [])); + } + } + // Call single + else { + $entity = $this->urlPath[3]; + $action = $this->urlPath[4]; + $params = CRM_Utils_Request::retrieve('params', 'String'); + $params = $params ? json_decode($params, TRUE) : []; + $response = $this->execute($entity, $action, $params); + } + } + catch (Exception $e) { + http_response_code(500); + $response = [ + 'error_code' => $e->getCode(), + ]; + if (CRM_Core_Permission::check('view debug output')) { + $response['error_message'] = $e->getMessage(); + if (CRM_Core_BAO_Setting::getItem(NULL, 'backtrace')) { + $response['backtrace'] = $e->getTrace(); + } + } + } + CRM_Utils_System::setHttpHeader('Content-Type', 'application/json'); + echo json_encode($response); + CRM_Utils_System::civiExit(); + } + + /** + * Run api call & prepare result for json encoding + * + * @param $entity + * @param $action + * @param $params + * @return array + */ + protected function execute($entity, $action, $params) { + $params['checkPermissions'] = TRUE; + $result = civicrm_api4($entity, $action, $params); + // Convert arrayObject into something more suitable for json + $vals = ['values' => (array) $result]; + foreach (get_class_vars(get_class($result)) as $key => $val) { + $vals[$key] = $result->$key; + } + return $vals; + } + +} diff --git a/civicrm/ext/api4/CRM/Api4/Upgrader.php b/civicrm/ext/api4/CRM/Api4/Upgrader.php new file mode 100644 index 0000000000000000000000000000000000000000..40a398499701b71b0acd27c5aa0872dd3f509ba9 --- /dev/null +++ b/civicrm/ext/api4/CRM/Api4/Upgrader.php @@ -0,0 +1,158 @@ +<?php + +/** + * Collection of upgrade steps. + */ +class CRM_Api4_Upgrader extends CRM_Api4_Upgrader_Base { + + // By convention, functions that look like "function upgrade_NNNN()" are + // upgrade tasks. They are executed in order (like Drupal's hook_update_N). + + /** + * Install script + */ + public function install() { + // Add menu item for api explorer; rename v3 explorer menu item. + try { + $v3Item = civicrm_api3('Navigation', 'get', [ + 'name' => 'API Explorer', + 'return' => ['id', 'parent_id'], + 'sequential' => 1, + 'api.Navigation.create' => ['label' => ts("Api Explorer v3")], + ]); + civicrm_api3('Navigation', 'create', [ + 'parent_id' => $v3Item['values'][0]['parent_id'], + 'label' => ts("Api Explorer v4"), + 'weight' => 2, + 'name' => "Api Explorer v4", + 'permission' => "administer CiviCRM", + 'url' => "civicrm/a/#/api4", + 'is_active' => 1, + ]); + } + catch (Exception $e) { + // Couldn't create menu item. + } + } + + /** + * Example: Work with entities usually not available during the install step. + * + * This method can be used for any post-install tasks. For example, if a step + * of your installation depends on accessing an entity that is itself + * created during the installation (e.g., a setting or a managed entity), do + * so here to avoid order of operation problems. + * + public function postInstall() { + $customFieldId = civicrm_api3('CustomField', 'getvalue', array( + 'return' => array("id"), + 'name' => "customFieldCreatedViaManagedHook", + )); + civicrm_api3('Setting', 'create', array( + 'myWeirdFieldSetting' => array('id' => $customFieldId, 'weirdness' => 1), + )); + } + + /** + * Uninstall script + */ + public function uninstall() { + // Remove Api4 Explorer navigation menu item + civicrm_api3('Navigation', 'get', [ + 'name' => 'Api Explorer v4', + 'return' => ['id'], + 'api.Navigation.delete' => [], + ]); + } + + /** + * Example: Run a simple query when a module is enabled. + * + public function enable() { + CRM_Core_DAO::executeQuery('UPDATE foo SET is_active = 1 WHERE bar = "whiz"'); + } + + /** + * Example: Run a simple query when a module is disabled. + * + public function disable() { + CRM_Core_DAO::executeQuery('UPDATE foo SET is_active = 0 WHERE bar = "whiz"'); + } + + /** + * Example: Run a couple simple queries. + * + * @return TRUE on success + * @throws Exception + * + public function upgrade_4200() { + $this->ctx->log->info('Applying update 4200'); + CRM_Core_DAO::executeQuery('UPDATE foo SET bar = "whiz"'); + CRM_Core_DAO::executeQuery('DELETE FROM bang WHERE willy = wonka(2)'); + return TRUE; + } // */ + + + /** + * Example: Run an external SQL script. + * + * @return TRUE on success + * @throws Exception + public function upgrade_4201() { + $this->ctx->log->info('Applying update 4201'); + // this path is relative to the extension base dir + $this->executeSqlFile('sql/upgrade_4201.sql'); + return TRUE; + } // */ + + + /** + * Example: Run a slow upgrade process by breaking it up into smaller chunk. + * + * @return TRUE on success + * @throws Exception + public function upgrade_4202() { + $this->ctx->log->info('Planning update 4202'); // PEAR Log interface + + $this->addTask(ts('Process first step'), 'processPart1', $arg1, $arg2); + $this->addTask(ts('Process second step'), 'processPart2', $arg3, $arg4); + $this->addTask(ts('Process second step'), 'processPart3', $arg5); + return TRUE; + } + public function processPart1($arg1, $arg2) { sleep(10); return TRUE; } + public function processPart2($arg3, $arg4) { sleep(10); return TRUE; } + public function processPart3($arg5) { sleep(10); return TRUE; } + // */ + + + /** + * Example: Run an upgrade with a query that touches many (potentially + * millions) of records by breaking it up into smaller chunks. + * + * @return TRUE on success + * @throws Exception + public function upgrade_4203() { + $this->ctx->log->info('Planning update 4203'); // PEAR Log interface + + $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contribution'); + $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contribution'); + for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { + $endId = $startId + self::BATCH_SIZE - 1; + $title = ts('Upgrade Batch (%1 => %2)', array( + 1 => $startId, + 2 => $endId, + )); + $sql = ' + UPDATE civicrm_contribution SET foobar = whiz(wonky()+wanker) + WHERE id BETWEEN %1 and %2 + '; + $params = array( + 1 => array($startId, 'Integer'), + 2 => array($endId, 'Integer'), + ); + $this->addTask($title, 'executeSql', $sql, $params); + } + return TRUE; + } // */ + +} diff --git a/civicrm/ext/api4/CRM/Api4/Upgrader/Base.php b/civicrm/ext/api4/CRM/Api4/Upgrader/Base.php new file mode 100644 index 0000000000000000000000000000000000000000..bfea5fef9a346eb4ee20e467a0309fe35571c250 --- /dev/null +++ b/civicrm/ext/api4/CRM/Api4/Upgrader/Base.php @@ -0,0 +1,375 @@ +<?php + +// AUTO-GENERATED FILE -- Civix may overwrite any changes made to this file + +/** + * Base class which provides helpers to execute upgrade logic + */ +class CRM_Api4_Upgrader_Base { + + /** + * @var varies, subclass of ttis + */ + static $instance; + + /** + * @var CRM_Queue_TaskContext + */ + protected $ctx; + + /** + * @var string, eg 'com.example.myextension' + */ + protected $extensionName; + + /** + * @var string, full path to the extension's source tree + */ + protected $extensionDir; + + /** + * @var array(revisionNumber) sorted numerically + */ + private $revisions; + + /** + * @var boolean + * Flag to clean up extension revision data in civicrm_setting + */ + private $revisionStorageIsDeprecated = FALSE; + + /** + * Obtain a reference to the active upgrade handler. + */ + static public function instance() { + if (!self::$instance) { + // FIXME auto-generate + self::$instance = new CRM_Api4_Upgrader( + 'org.civicrm.api4', + realpath(__DIR__ . '/../../../') + ); + } + return self::$instance; + } + + /** + * Adapter that lets you add normal (non-static) member functions to the queue. + * + * Note: Each upgrader instance should only be associated with one + * task-context; otherwise, this will be non-reentrant. + * + * @code + * CRM_Api4_Upgrader_Base::_queueAdapter($ctx, 'methodName', 'arg1', 'arg2'); + * @endcode + */ + static public function _queueAdapter() { + $instance = self::instance(); + $args = func_get_args(); + $instance->ctx = array_shift($args); + $instance->queue = $instance->ctx->queue; + $method = array_shift($args); + return call_user_func_array([$instance, $method], $args); + } + + public function __construct($extensionName, $extensionDir) { + $this->extensionName = $extensionName; + $this->extensionDir = $extensionDir; + } + + // ******** Task helpers ******** + + /** + * Run a CustomData file. + * + * @param string $relativePath the CustomData XML file path (relative to this extension's dir) + * @return bool + */ + public function executeCustomDataFile($relativePath) { + $xml_file = $this->extensionDir . '/' . $relativePath; + return $this->executeCustomDataFileByAbsPath($xml_file); + } + + /** + * Run a CustomData file + * + * @param string $xml_file the CustomData XML file path (absolute path) + * + * @return bool + */ + protected static function executeCustomDataFileByAbsPath($xml_file) { + $import = new CRM_Utils_Migrate_Import(); + $import->run($xml_file); + return TRUE; + } + + /** + * Run a SQL file. + * + * @param string $relativePath the SQL file path (relative to this extension's dir) + * + * @return bool + */ + public function executeSqlFile($relativePath) { + CRM_Utils_File::sourceSQLFile( + CIVICRM_DSN, + $this->extensionDir . DIRECTORY_SEPARATOR . $relativePath + ); + return TRUE; + } + + /** + * @param string $tplFile + * The SQL file path (relative to this extension's dir). + * Ex: "sql/mydata.mysql.tpl". + * @return bool + */ + public function executeSqlTemplate($tplFile) { + // Assign multilingual variable to Smarty. + $upgrade = new CRM_Upgrade_Form(); + + $tplFile = CRM_Utils_File::isAbsolute($tplFile) ? $tplFile : $this->extensionDir . DIRECTORY_SEPARATOR . $tplFile; + $smarty = CRM_Core_Smarty::singleton(); + $smarty->assign('domainID', CRM_Core_Config::domainID()); + CRM_Utils_File::sourceSQLFile( + CIVICRM_DSN, $smarty->fetch($tplFile), NULL, TRUE + ); + return TRUE; + } + + /** + * Run one SQL query. + * + * This is just a wrapper for CRM_Core_DAO::executeSql, but it + * provides syntatic sugar for queueing several tasks that + * run different queries + */ + public function executeSql($query, $params = []) { + // FIXME verify that we raise an exception on error + CRM_Core_DAO::executeQuery($query, $params); + return TRUE; + } + + /** + * Syntatic sugar for enqueuing a task which calls a function in this class. + * + * The task is weighted so that it is processed + * as part of the currently-pending revision. + * + * After passing the $funcName, you can also pass parameters that will go to + * the function. Note that all params must be serializable. + */ + public function addTask($title) { + $args = func_get_args(); + $title = array_shift($args); + $task = new CRM_Queue_Task( + [get_class($this), '_queueAdapter'], + $args, + $title + ); + return $this->queue->createItem($task, ['weight' => -1]); + } + + // ******** Revision-tracking helpers ******** + + /** + * Determine if there are any pending revisions. + * + * @return bool + */ + public function hasPendingRevisions() { + $revisions = $this->getRevisions(); + $currentRevision = $this->getCurrentRevision(); + + if (empty($revisions)) { + return FALSE; + } + if (empty($currentRevision)) { + return TRUE; + } + + return ($currentRevision < max($revisions)); + } + + /** + * Add any pending revisions to the queue. + */ + public function enqueuePendingRevisions(CRM_Queue_Queue $queue) { + $this->queue = $queue; + + $currentRevision = $this->getCurrentRevision(); + foreach ($this->getRevisions() as $revision) { + if ($revision > $currentRevision) { + $title = ts('Upgrade %1 to revision %2', [ + 1 => $this->extensionName, + 2 => $revision, + ]); + + // note: don't use addTask() because it sets weight=-1 + + $task = new CRM_Queue_Task( + [get_class($this), '_queueAdapter'], + ['upgrade_' . $revision], + $title + ); + $this->queue->createItem($task); + + $task = new CRM_Queue_Task( + [get_class($this), '_queueAdapter'], + ['setCurrentRevision', $revision], + $title + ); + $this->queue->createItem($task); + } + } + } + + /** + * Get a list of revisions. + * + * @return array(revisionNumbers) sorted numerically + */ + public function getRevisions() { + if (!is_array($this->revisions)) { + $this->revisions = []; + + $clazz = new ReflectionClass(get_class($this)); + $methods = $clazz->getMethods(); + foreach ($methods as $method) { + if (preg_match('/^upgrade_(.*)/', $method->name, $matches)) { + $this->revisions[] = $matches[1]; + } + } + sort($this->revisions, SORT_NUMERIC); + } + + return $this->revisions; + } + + public function getCurrentRevision() { + $revision = CRM_Core_BAO_Extension::getSchemaVersion($this->extensionName); + if (!$revision) { + $revision = $this->getCurrentRevisionDeprecated(); + } + return $revision; + } + + private function getCurrentRevisionDeprecated() { + $key = $this->extensionName . ':version'; + if ($revision = CRM_Core_BAO_Setting::getItem('Extension', $key)) { + $this->revisionStorageIsDeprecated = TRUE; + } + return $revision; + } + + public function setCurrentRevision($revision) { + CRM_Core_BAO_Extension::setSchemaVersion($this->extensionName, $revision); + // clean up legacy schema version store (CRM-19252) + $this->deleteDeprecatedRevision(); + return TRUE; + } + + private function deleteDeprecatedRevision() { + if ($this->revisionStorageIsDeprecated) { + $setting = new CRM_Core_BAO_Setting(); + $setting->name = $this->extensionName . ':version'; + $setting->delete(); + CRM_Core_Error::debug_log_message("Migrated extension schema revision ID for {$this->extensionName} from civicrm_setting (deprecated) to civicrm_extension.\n"); + } + } + + // ******** Hook delegates ******** + + /** + * @see https://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install + */ + public function onInstall() { + $files = glob($this->extensionDir . '/sql/*_install.sql'); + if (is_array($files)) { + foreach ($files as $file) { + CRM_Utils_File::sourceSQLFile(CIVICRM_DSN, $file); + } + } + $files = glob($this->extensionDir . '/sql/*_install.mysql.tpl'); + if (is_array($files)) { + foreach ($files as $file) { + $this->executeSqlTemplate($file); + } + } + $files = glob($this->extensionDir . '/xml/*_install.xml'); + if (is_array($files)) { + foreach ($files as $file) { + $this->executeCustomDataFileByAbsPath($file); + } + } + if (is_callable([$this, 'install'])) { + $this->install(); + } + } + + /** + * @see https://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_postInstall + */ + public function onPostInstall() { + $revisions = $this->getRevisions(); + if (!empty($revisions)) { + $this->setCurrentRevision(max($revisions)); + } + if (is_callable([$this, 'postInstall'])) { + $this->postInstall(); + } + } + + /** + * @see https://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall + */ + public function onUninstall() { + $files = glob($this->extensionDir . '/sql/*_uninstall.mysql.tpl'); + if (is_array($files)) { + foreach ($files as $file) { + $this->executeSqlTemplate($file); + } + } + if (is_callable([$this, 'uninstall'])) { + $this->uninstall(); + } + $files = glob($this->extensionDir . '/sql/*_uninstall.sql'); + if (is_array($files)) { + foreach ($files as $file) { + CRM_Utils_File::sourceSQLFile(CIVICRM_DSN, $file); + } + } + } + + /** + * @see https://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable + */ + public function onEnable() { + // stub for possible future use + if (is_callable([$this, 'enable'])) { + $this->enable(); + } + } + + /** + * @see https://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable + */ + public function onDisable() { + // stub for possible future use + if (is_callable([$this, 'disable'])) { + $this->disable(); + } + } + + public function onUpgrade($op, CRM_Queue_Queue $queue = NULL) { + switch ($op) { + case 'check': + return [$this->hasPendingRevisions()]; + + case 'enqueue': + return $this->enqueuePendingRevisions($queue); + + default: + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Address/Create.php b/civicrm/ext/api4/Civi/Api4/Action/Address/Create.php new file mode 100644 index 0000000000000000000000000000000000000000..b755dea70682e95cf2bc7a57a1bcaf1bb4c3f130 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Address/Create.php @@ -0,0 +1,45 @@ +<?php + +namespace Civi\Api4\Action\Address; + +use Civi\Api4\Generic\Result; +use Civi\Api4\Action\Create as DefaultCreate; + +/** + * @inheritDoc + */ +class Create extends DefaultCreate { + + /** + * Optional param to indicate you want the street_address field parsed into individual params + * + * @var bool + */ + protected $streetParsing = TRUE; + + /** + * Optional param to indicate you want to skip geocoding (useful when importing a lot of addresses at once, the job Geocode and Parse Addresses can execute this task after the import) + * + * @var bool + */ + protected $skipGeocode = FALSE; + + /** + * When true, apply various fixes to the address before insert. + * + * @var bool + */ + protected $fixAddress = TRUE; + + /** + * @inheritDoc + */ + public function _run(Result $result) { + foreach (['streetParsing', 'skipGeocode', 'fixAddress'] as $fieldName) { + $this->values[_civicrm_api_get_entity_name_from_camel($fieldName)] = $this->$fieldName; + } + parent::_run($result); + } + + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Contact/Create.php b/civicrm/ext/api4/Civi/Api4/Action/Contact/Create.php new file mode 100644 index 0000000000000000000000000000000000000000..a07276b549667bfb14c363652f0f4c360657c5b0 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Contact/Create.php @@ -0,0 +1,25 @@ +<?php + +namespace Civi\Api4\Action\Contact; + +use Civi\Api4\Generic\Result; +use Civi\Api4\Action\Create as DefaultCreate; + +/** + * @inheritDoc + */ +class Create extends DefaultCreate { + + protected function fillDefaults(&$params) { + // Guess which type of contact is being created + if (empty($params['contact_type']) && !empty($params['organization_name'])) { + $params['contact_type'] = 'Organization'; + } + if (empty($params['contact_type']) && !empty($params['household_name'])) { + $params['contact_type'] = 'Household'; + } + // Will default to Individual per fieldSpec + parent::fillDefaults($params); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Contribution/Create.php b/civicrm/ext/api4/Civi/Api4/Action/Contribution/Create.php new file mode 100644 index 0000000000000000000000000000000000000000..1d643ff3bf7a4a703908d08840c4028060425ed2 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Contribution/Create.php @@ -0,0 +1,44 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action\Contribution; + +use Civi\Api4\Generic\Result; +use Civi\Api4\Action\Create as DefaultCreate; + +/** + * @inheritDoc + */ +class Create extends DefaultCreate { + + public function _run(Result $result) { + // Required by Contribution BAO + $this->values['skipCleanMoney'] = TRUE; + parent::_run($result); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Create.php b/civicrm/ext/api4/Civi/Api4/Action/Create.php new file mode 100644 index 0000000000000000000000000000000000000000..f10b0ac0e08302fcb3d63f31a55caa001f6f830c --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Create.php @@ -0,0 +1,110 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action; + +use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Generic\Result; + +/** + * Create a new object from supplied values. + * + * This function will create 1 new object. It cannot be used to update existing objects. Use the Update or Replace actions for that. + * + * @method $this setValues(array $values) Set all field values from an array of key => value pairs. + * @method $this addValue($field, $value) Set field value. + */ +class Create extends AbstractAction { + + /** + * Field values to set + * + * @var array + */ + protected $values = []; + + /** + * @param $key + * + * @return mixed|null + */ + public function getValue($key) { + return isset($this->values[$key]) ? $this->values[$key] : NULL; + } + + /** + * @inheritDoc + */ + public function _run(Result $result) { + $this->validateValues(); + $params = $this->values; + $this->fillDefaults($params); + + $resultArray = $this->writeObject($params); + + $result->exchangeArray([$resultArray]); + } + + /** + * @throws \API_Exception + */ + protected function validateValues() { + if (!empty($this->values['id'])) { + throw new \API_Exception('Cannot pass id to Create action. Use Update action instead.'); + } + $unmatched = []; + foreach ($this->getEntityFields() as $fieldName => $fieldInfo) { + if (!$this->getValue($fieldName) && !empty($fieldInfo['required']) && !isset($fieldInfo['default_value'])) { + $unmatched[] = $fieldName; + } + } + if ($unmatched) { + throw new \API_Exception("Mandatory values missing from Api4 {$this->getEntity()}::{$this->getAction()}: '" . implode("', '", $unmatched) . "'", "mandatory_missing", array("fields" => $unmatched)); + } + } + + /** + * Fill field defaults which were declared by the api. + * + * Note: default values from core are ignored because the BAO or database layer will supply them. + * + * @param array $params + */ + protected function fillDefaults(&$params) { + $fields = $this->getEntityFields(); + $bao = $this->getBaoName(); + $coreFields = array_column($bao::fields(), NULL, 'name'); + + foreach ($fields as $name => $field) { + // If a default value is set in the api but not in core, the api should supply it. + if (!isset($params[$name]) && !empty($field['default_value']) && empty($coreFields[$name]['default'])) { + $params[$name] = $field['default_value']; + } + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Create.php b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Create.php new file mode 100644 index 0000000000000000000000000000000000000000..1670a954e51014c02f64731fa2d0c072aaac7989 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Create.php @@ -0,0 +1,66 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action\CustomValue; + +use Civi\Api4\Utils\FormattingUtil; +use Civi\Api4\Generic\Result; +use Civi\Api4\Action\Create as DefaultCreate; + +/** + * @inheritDoc + */ +class Create extends DefaultCreate { + + /** + * @inheritDoc + */ + public function getEntity() { + return 'Custom_' . $this->getCustomGroup(); + } + + /** + * @inheritDoc + */ + protected function fillDefaults(&$params) { + foreach ($this->getEntityFields() as $name => $field) { + if (empty($params[$name])) { + $params[$name] = $field['default_value']; + } + } + } + + /** + * @inheritDoc + */ + protected function writeObject($params) { + FormattingUtil::formatWriteParams($params, $this->getEntity(), $this->getEntityFields()); + + return \CRM_Core_BAO_CustomValueTable::setValues($params); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Delete.php b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Delete.php new file mode 100644 index 0000000000000000000000000000000000000000..8877cdce5ab53e867aafb1e7a28cf3f670b75817 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Delete.php @@ -0,0 +1,63 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Api4\Action\CustomValue; +use Civi\Api4\Generic\Result; +use Civi\Api4\Utils\CoreUtil; + +/** + * Delete one or more items, based on criteria specified in Where param. + */ +class Delete extends Get { + + /** + * @inheritDoc + */ + public function _run(Result $result) { + $defaults = $this->getParamDefaults(); + if ($defaults['where'] && !array_diff_key($this->where, $defaults['where'])) { + throw new \API_Exception('Cannot delete with no "where" paramater specified'); + } + // run the parent action (get) to get the list + parent::_run($result); + // Then act on the result + $customTable = CoreUtil::getCustomTableByName($this->getCustomGroup()); + $ids = []; + foreach ($result as $item) { + \CRM_Utils_Hook::pre('delete', $this->getEntity(), $item['id'], \CRM_Core_DAO::$_nullArray); + \CRM_Utils_SQL_Delete::from($customTable) + ->where('id = #value') + ->param('#value', $item['id']) + ->execute(); + \CRM_Utils_Hook::post('delete', $this->getEntity(), $item['id'], \CRM_Core_DAO::$_nullArray); + $ids[] = $item['id']; + } + + $result->exchangeArray($ids); + return $result; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Get.php b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Get.php new file mode 100644 index 0000000000000000000000000000000000000000..bd6ba29150315b7d167e0eb0e3f5bd91b382a429 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Get.php @@ -0,0 +1,25 @@ +<?php + +namespace Civi\Api4\Action\CustomValue; + +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; +use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Generic\Result; +use Civi\Api4\Utils\ReflectionUtils; +use Civi\Api4\Query\Api4SelectQuery; +use Civi\Api4\CustomValue; + +/** + * Get fields for a custom group. + */ +class Get extends \Civi\Api4\Action\Get { + + /** + * @inheritDoc + */ + public function getEntity() { + return 'Custom_' . $this->getCustomGroup(); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/CustomValue/GetFields.php b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/GetFields.php new file mode 100644 index 0000000000000000000000000000000000000000..45f0424e84689fc9b471cabf4c15c199ee42161a --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/GetFields.php @@ -0,0 +1,35 @@ +<?php + +namespace Civi\Api4\Action\CustomValue; + +use Civi\Api4\Service\Spec\SpecGatherer; +use Civi\Api4\Generic\Result; +use Civi\Api4\Service\Spec\SpecFormatter; + +/** + * Get fields for a custom group. + */ +class GetFields extends \Civi\Api4\Action\GetFields { + + public function _run(Result $result) { + /** @var SpecGatherer $gatherer */ + $gatherer = \Civi::container()->get('spec_gatherer'); + $spec = $gatherer->getSpec('Custom_' . $this->getCustomGroup(), $this->getAction(), $this->includeCustom); + $specArray = SpecFormatter::specToArray($spec->getFields($this->fields), (array) $this->select, $this->getOptions); + $result->action = 'getFields'; + $result->exchangeArray(array_values($specArray)); + } + + /** + * @inheritDoc + */ + public function getParamInfo($param = NULL) { + $info = parent::getParamInfo($param); + if (!$param) { + // This param is meaningless here. + unset($info['includeCustom']); + } + return $info; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Replace.php b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Replace.php new file mode 100644 index 0000000000000000000000000000000000000000..00728ad48b9fc85fe8b477f7f3789fd9ede72684 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Replace.php @@ -0,0 +1,56 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Api4\Action\CustomValue; +use Civi\Api4\Action\Replace as DefaultReplace; +use Civi\Api4\Utils\FormattingUtil; + +/** + * Given a set of records, will appropriately update the database. + * + * @method $this setRecords(array $records) Array of records. + * @method $this addRecord($record) Add a record to update. + */ +class Replace extends DefaultReplace { + + protected $select = ['id', 'entity_id']; + + /** + * @inheritDoc + */ + public function getEntity() { + return 'Custom_' . $this->getCustomGroup(); + } + + /** + * @inheritDoc + */ + protected function writeObject($params) { + FormattingUtil::formatWriteParams($params, $this->getEntity(), $this->getEntityFields()); + return \CRM_Core_BAO_CustomValueTable::setValues($params); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Update.php b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Update.php new file mode 100644 index 0000000000000000000000000000000000000000..7438ee9461820665068940a15c8b52cc9faf07ad --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/CustomValue/Update.php @@ -0,0 +1,61 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Api4\Action\CustomValue; +use Civi\Api4\Generic\Result; +use Civi\Api4\Utils\FormattingUtil; +use Civi\Api4\Action\Update as DefaultUpdate; + +/** + * Update one or more records with new values. Use the where clause to select them. + * + * @method $this setValues(array $values) Set all field values from an array of key => value pairs. + * @method $this addValue($field, $value) Set field value to update. + */ +class Update extends DefaultUpdate { + + /** + * @inheritDoc + */ + protected $select = ['id', 'entity_id']; + + /** + * @inheritDoc + */ + public function getEntity() { + return 'Custom_' . $this->getCustomGroup(); + } + + /** + * @inheritDoc + */ + protected function writeObject($params) { + FormattingUtil::formatWriteParams($params, $this->getEntity(), $this->getEntityFields()); + + return \CRM_Core_BAO_CustomValueTable::setValues($params); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Delete.php b/civicrm/ext/api4/Civi/Api4/Action/Delete.php new file mode 100644 index 0000000000000000000000000000000000000000..a690a2999ee5a46bfbf85fc9392b542cc83272af --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Delete.php @@ -0,0 +1,100 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Api4\Action; +use Civi\Api4\Generic\Result; + +/** + * Delete one or more items, based on criteria specified in Where param. + */ +class Delete extends Get { + + /** + * Criteria for selecting items to delete. + * + * @required + * @var array + */ + protected $where = []; + + /** + * Batch delete function + * @todo much of this should be abstracted out to a generic batch handler + */ + public function _run(Result $result) { + $baoName = $this->getBaoName(); + $this->setSelect(['id']); + $defaults = $this->getParamDefaults(); + if ($defaults['where'] && !array_diff_key($this->where, $defaults['where'])) { + throw new \API_Exception('Cannot delete with no "where" paramater specified'); + } + // run the parent action (get) to get the list + parent::_run($result); + // Then act on the result + $ids = []; + if (method_exists($baoName, 'del')) { + foreach ($result as $item) { + $args = [$item['id']]; + $bao = call_user_func_array([$baoName, 'del'], $args); + if ($bao !== FALSE) { + $ids[] = $item['id']; + } + else { + throw new \API_Exception("Could not delete {$this->getEntity()} id {$item['id']}"); + } + } + } + else { + foreach ($result as $item) { + $bao = new $baoName(); + $bao->id = $item['id']; + // delete it + $action_result = $bao->delete(); + if ($action_result) { + $ids[] = $item['id']; + } + else { + throw new \API_Exception("Could not delete {$this->getEntity()} id {$item['id']}"); + } + } + } + $result->exchangeArray($ids); + return $result; + } + + /** + * @inheritDoc + */ + public function getParamInfo($param = NULL) { + $info = parent::getParamInfo($param); + if (!$param) { + // Delete doesn't actually let you select fields. + unset($info['select']); + } + return $info; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Entity/Get.php b/civicrm/ext/api4/Civi/Api4/Action/Entity/Get.php new file mode 100644 index 0000000000000000000000000000000000000000..c206a87df8e9daf81cf8af7b5a75199ae051ad45 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Entity/Get.php @@ -0,0 +1,148 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action\Entity; + +use Civi\Api4\CustomGroup; +use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Generic\Result; +use Civi\Api4\Utils\ReflectionUtils; + +/** + * Get entities + * + * @method $this setIncludeCustom(bool $value) + * @method bool getIncludeCustom() + * @method $this setSelect(array $value) + * @method $this addSelect(string $value) + * @method array getSelect() + */ +class Get extends AbstractAction { + + /** + * Which attributes of the entities should be returned? + * + * @options name, description, comment + * + * @var array + */ + protected $select = []; + + /** + * Include custom-field-based pseudo-entities? + * + * @var bool + */ + protected $includeCustom = TRUE; + + /** + * Scan all api directories to discover entities + * + * @param Result $result + */ + public function _run(Result $result) { + $entities = []; + foreach (explode(PATH_SEPARATOR, get_include_path()) as $path) { + $dir = \CRM_Utils_File::addTrailingSlash($path) . 'Civi/Api4'; + if (is_dir($dir)) { + foreach (glob("$dir/*.php") as $file) { + $matches = []; + preg_match('/(\w*).php/', $file, $matches); + $entity = ['name' => $matches[1]]; + if (!$this->select || $this->select != ['name']) { + $this->addDocs($entity); + } + $entities[$matches[1]] = $entity; + } + } + } + unset($entities['CustomValue']); + + if ($this->includeCustom) { + $this->addCustomEntities($entities); + } + + ksort($entities); + if ($this->select) { + foreach ($entities as &$entity) { + $entity = array_intersect_key($entity, array_flip($this->select)); + } + } + $result->exchangeArray(array_values($entities)); + } + + /** + * Add custom-field pseudo-entities + * + * @param $entities + * @throws \API_Exception + */ + private function addCustomEntities(&$entities) { + $customEntities = CustomGroup::get() + ->addWhere('is_multiple', '=', 1) + ->addWhere('is_active', '=', 1) + ->setSelect(['name', 'title', 'help_pre', 'help_post', 'extends']) + ->setCheckPermissions(FALSE) + ->execute(); + foreach ($customEntities as $customEntity) { + $fieldName = 'Custom_' . $customEntity['name']; + $entities[$fieldName] = [ + 'name' => $fieldName, + 'description' => $customEntity['title'] . ' custom group - extends ' . $customEntity['extends'], + ]; + if (!empty($customEntity['help_pre'])) { + $entities[$fieldName]['comment'] = $this->plainTextify($customEntity['help_pre']); + } + if (!empty($customEntity['help_post'])) { + $pre = empty($entities[$fieldName]['comment']) ? '' : $entities[$fieldName]['comment'] . "\n\n"; + $entities[$fieldName]['comment'] = $pre . $this->plainTextify($customEntity['help_post']); + } + } + } + + /** + * Convert html to plain text. + * + * @param $input + * @return mixed + */ + private function plainTextify($input) { + return html_entity_decode(strip_tags($input), ENT_QUOTES | ENT_HTML5, 'UTF-8'); + } + + /** + * Add info from code docblock. + * + * @param $entity + */ + private function addDocs(&$entity) { + $reflection = new \ReflectionClass("\\Civi\\Api4\\" . $entity['name']); + $entity += ReflectionUtils::getCodeDocs($reflection); + unset($entity['package'], $entity['method']); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Entity/GetFields.php b/civicrm/ext/api4/Civi/Api4/Action/Entity/GetFields.php new file mode 100644 index 0000000000000000000000000000000000000000..74806ecc362d782bd3aca1047bf22b2cb602122c --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Entity/GetFields.php @@ -0,0 +1,64 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action\Entity; + +use Civi\Api4\Generic\Result; +use \Civi\Api4\Action\GetFields as GenericGetFields; + +/** + * Get fields for all entities + */ +class GetFields extends GenericGetFields { + + public function _run(Result $result) { + $action = $this->getAction(); + $includeCustom = $this->getIncludeCustom(); + $entities = \Civi\Api4\Entity::get()->execute(); + foreach ($entities as $entity) { + $entity = ((array) $entity) + ['fields' => []]; + // Prevent infinite recursion + if ($entity['name'] != 'Entity') { + $entity['fields'] = (array) civicrm_api4($entity['name'], 'getFields', ['action' => $action, 'includeCustom' => $includeCustom, 'select' => $this->select]); + } + $result[] = $entity; + } + } + + /** + * @inheritDoc + */ + public function getParamInfo($param = NULL) { + $info = parent::getParamInfo($param); + if (!$param) { + // This action doesn't actually let you select fields. + unset($info['fields']); + } + return $info; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Entity/GetLinks.php b/civicrm/ext/api4/Civi/Api4/Action/Entity/GetLinks.php new file mode 100644 index 0000000000000000000000000000000000000000..fc8cca4984a4b2a2ec99a31ac113364f8be01d4c --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Entity/GetLinks.php @@ -0,0 +1,62 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action\Entity; + +use Civi\Api4\Generic\AbstractAction; +use \CRM_Core_DAO_AllCoreTables as AllTables; +use Civi\Api4\Generic\Result; + +/** + * Get a list of FK links between entities + */ +class GetLinks extends AbstractAction { + + public function _run(Result $result) { + /** @var \Civi\Api4\Service\Schema\SchemaMap $schema */ + $schema = \Civi::container()->get('schema_map'); + foreach ($schema->getTables() as $table) { + $entity = AllTables::getBriefName(AllTables::getClassForTable($table->getName())); + // Since this is an api function, exclude tables that don't have an api + if (class_exists('\Civi\Api4\\' . $entity)) { + $item = [ + 'entity' => $entity, + 'table' => $table->getName(), + 'links' => [], + ]; + foreach ($table->getTableLinks() as $link) { + $link = $link->toArray(); + $link['entity'] = AllTables::getBriefName(AllTables::getClassForTable($link['targetTable'])); + $item['links'][] = $link; + } + $result[] = $item; + } + } + return $result; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Get.php b/civicrm/ext/api4/Civi/Api4/Action/Get.php new file mode 100644 index 0000000000000000000000000000000000000000..97dd13cfaf5ab1a28acd2a1679ccc70a96e5591b --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Get.php @@ -0,0 +1,143 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action; + +use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Query\Api4SelectQuery; +use Civi\Api4\Generic\Result; + +/** + * Retrieve items based on criteria specified in the 'where' param. + * + * Use the 'select' param to determine which fields are returned, defaults to *. + * + * Perform joins on other related entities using a dot notation. + * + * @method $this addSelect(string $select) + * @method $this setSelect(array $selects) + * @method $this setWhere(array $wheres) + * @method $this setOrderBy(array $order) + * @method $this setLimit(int $limit) + * @method $this setOffset(int $offset) + */ +class Get extends AbstractAction { + /** + * Fields to return. Defaults to all non-custom fields. + * + * @var array + */ + protected $select = []; + /** + * Array of conditions keyed by field. + * + * $example->addWhere('contact_type', 'IN', array('Individual', 'Household')) + * + * @var array + */ + protected $where = []; + /** + * Array of field(s) to use in ordering the results + * + * Defaults to id ASC + * + * $example->addOrderBy('sort_name', 'ASC') + * + * @var array + */ + protected $orderBy = []; + /** + * Maximum number of results to return. + * + * Defaults to unlimited. + * + * @var int + */ + protected $limit = 0; + /** + * Zero-based index of first result to return. + * + * Defaults to "0" - first record. + * + * @var int + */ + protected $offset = 0; + + /** + * @param string $field + * @param string $op + * @param mixed $value + * @return $this + * @throws \API_Exception + */ + public function addWhere($field, $op, $value = NULL) { + if (!in_array($op, \CRM_Core_DAO::acceptedSQLOperators())) { + throw new \API_Exception('Unsupported operator'); + } + $this->where[] = [$field, $op, $value]; + return $this; + } + + /** + * Adds one or more AND/OR/NOT clause groups + * + * @param string $operator + * @param mixed $condition1 ... $conditionN + * Either a nested array of arguments, or a variable number of arguments passed to this function. + * + * @return $this + * @throws \API_Exception + */ + public function addClause($operator, $condition1) { + if (!is_array($condition1[0])) { + $condition1 = array_slice(func_get_args(), 1); + } + $this->where[] = [$operator, $condition1]; + return $this; + } + + /** + * @param string $field + * @param string $direction + * @return $this + */ + public function addOrderBy($field, $direction = 'ASC') { + $this->orderBy[$field] = $direction; + return $this; + } + + public function _run(Result $result) { + $query = new Api4SelectQuery($this->getEntity(), $this->checkPermissions); + $query->select = $this->select; + $query->where = $this->where; + $query->orderBy = $this->orderBy; + $query->limit = $this->limit; + $query->offset = $this->offset; + $result->exchangeArray($query->run()); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/GetActions.php b/civicrm/ext/api4/Civi/Api4/Action/GetActions.php new file mode 100644 index 0000000000000000000000000000000000000000..0cb6e2acf1123b81d4e1fc5d5a8be5ba6cc15afc --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/GetActions.php @@ -0,0 +1,109 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action; + +use Civi\API\Exception\NotImplementedException; +use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Generic\Result; +use Civi\Api4\Utils\ReflectionUtils; + +/** + * Get actions for an entity with a list of accepted params + */ +class GetActions extends AbstractAction { + + /** + * Override default to allow open access + * @inheritDoc + */ + protected $checkPermissions = FALSE; + + private $_actions = []; + + public function _run(Result $result) { + $includePaths = array_unique(explode(PATH_SEPARATOR, get_include_path())); + $entityReflection = new \ReflectionClass('\Civi\Api4\\' . $this->getEntity()); + // First search entity-specific actions (including those provided by extensions + foreach ($includePaths as $path) { + $dir = \CRM_Utils_File::addTrailingSlash($path) . 'Civi/Api4/Action/' . $this->getEntity(); + $this->scanDir($dir); + } + // Scan all generic actions unless this entity does not extend generic entity + if ($entityReflection->getParentClass()) { + foreach ($includePaths as $path) { + $dir = \CRM_Utils_File::addTrailingSlash($path) . 'Civi/Api4/Action'; + $this->scanDir($dir); + } + } + // For oddball entities, just return their static methods + else { + foreach ($entityReflection->getMethods(\ReflectionMethod::IS_STATIC) as $method) { + $this->loadAction($method->getName()); + } + } + $result->exchangeArray(array_values($this->_actions)); + } + + /** + * @param $dir + */ + private function scanDir($dir) { + if (is_dir($dir)) { + foreach (glob("$dir/*.php") as $file) { + $matches = []; + preg_match('/(\w*).php/', $file, $matches); + $actionName = array_pop($matches); + if ($actionName !== 'AbstractAction') { + $this->loadAction(lcfirst($actionName)); + } + } + } + } + + /** + * @param $actionName + */ + private function loadAction($actionName) { + try { + if (!isset($this->_actions[$actionName])) { + /* @var AbstractAction $action */ + $action = call_user_func(["\\Civi\\Api4\\" . $this->getEntity(), $actionName]); + if (is_object($action)) { + $actionReflection = new \ReflectionClass($action); + $actionInfo = ReflectionUtils::getCodeDocs($actionReflection); + unset($actionInfo['method']); + $this->_actions[$actionName] = ['name' => $actionName] + $actionInfo; + $this->_actions[$actionName]['params'] = $action->getParamInfo(); + } + } + } + catch (NotImplementedException $e) { + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/GetFields.php b/civicrm/ext/api4/Civi/Api4/Action/GetFields.php new file mode 100644 index 0000000000000000000000000000000000000000..321ea042fd6ffe9de93f776f48cacf37421c242b --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/GetFields.php @@ -0,0 +1,116 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action; + +use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Service\Spec\SpecGatherer; +use Civi\Api4\Generic\Result; +use Civi\Api4\Service\Spec\SpecFormatter; + +/** + * Get fields for an entity. + * + * @method $this setIncludeCustom(bool $value) + * @method bool getIncludeCustom() + * @method $this setOptions(bool $value) + * @method bool getOptions() + * @method $this setAction(string $value) + * @method $this setSelect(array $value) + * @method $this addSelect(string $value) + * @method array getSelect() + * @method $this setFields(array $value) + * @method $this addField(string $value) + * @method array getFields() + */ +class GetFields extends AbstractAction { + + /** + * Override default to allow open access + * @inheritDoc + */ + protected $checkPermissions = FALSE; + + /** + * Include custom fields for this entity, or only core fields? + * + * @var bool + */ + protected $includeCustom = TRUE; + + /** + * Fetch option lists for fields? + * + * @var bool + */ + protected $getOptions = FALSE; + + /** + * Which fields should be returned? + * + * Ex: ['contact_type', 'contact_sub_type'] + * + * @var array + */ + protected $fields = []; + + /** + * Which attributes of the fields should be returned? + * + * @options name, title, description, default_value, required, options, data_type, fk_entity, serialize, custom_field_id, custom_group_id + * + * @var array + */ + protected $select = []; + + /** + * @var string + */ + protected $action = 'get'; + + public function _run(Result $result) { + /** @var SpecGatherer $gatherer */ + $gatherer = \Civi::container()->get('spec_gatherer'); + // Any fields name with a dot in it is custom + if ($this->fields) { + $this->includeCustom = strpos(implode('', $this->fields), '.') !== FALSE; + } + $spec = $gatherer->getSpec($this->getEntity(), $this->getAction(), $this->includeCustom); + $fields = SpecFormatter::specToArray($spec->getFields($this->fields), (array) $this->select, $this->getOptions); + // Fixme - $this->action ought to already be set. Might be a name conflict upstream causing it to be nullified? + $result->action = 'getFields'; + $result->exchangeArray(array_values($fields)); + } + + /** + * @return string + */ + public function getAction() { + return $this->action; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Navigation/Get.php b/civicrm/ext/api4/Civi/Api4/Action/Navigation/Get.php new file mode 100644 index 0000000000000000000000000000000000000000..f42f623c0f855416355c567be3b730ecd7f970d0 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Navigation/Get.php @@ -0,0 +1,46 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action\Navigation; + +use Civi\Api4\Action\Get as DefaultGet; + +/** + * @inheritDoc + * + * Fetch items from the navigation menu. By default this will fetch items from the current domain. + */ +class Get extends DefaultGet { + + /** + * @inheritDoc + */ + protected $where = [ + ['domain_id', '=', 'current_domain'], + ]; + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Participant/Get.php b/civicrm/ext/api4/Civi/Api4/Action/Participant/Get.php new file mode 100644 index 0000000000000000000000000000000000000000..7acb2d7f10f0e99444718a7d11de27a547964819 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Participant/Get.php @@ -0,0 +1,45 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Action\Participant; + +use Civi\Api4\Action\Get as DefaultGet; + +/** + * @inheritDoc + */ +class Get extends DefaultGet { + + /** + * @inheritDoc + * $example->addWhere('contact_id.contact_type', 'IN', array('Individual', 'Household')) + */ + protected $where = [ + ['is_test', '=', 0], + ]; + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Replace.php b/civicrm/ext/api4/Civi/Api4/Action/Replace.php new file mode 100644 index 0000000000000000000000000000000000000000..60b11b15c89f9a215185bf375f3c841275cfad07 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Replace.php @@ -0,0 +1,91 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Api4\Action; +use Civi\Api4\Generic\Result; + +/** + * Given a set of records, will appropriately update the database. + * + * @method $this setRecords(array $records) Array of records. + * @method $this addRecord($record) Add a record to update. + */ +class Replace extends Get { + + /** + * Array of records. + * + * @required + * @var array + */ + protected $records = []; + + /** + * Array of select elements + * + * @required + * @var array + */ + protected $select = ['id']; + + /** + * @inheritDoc + */ + public function _run(Result $result) { + // First run the parent action (get) + parent::_run($result); + + $toDelete = (array) $result->indexBy('id'); + $saved = []; + + // Save all items + foreach ($this->records as $idx => $record) { + $saved[] = $this->writeObject($record); + if (!empty($record['id'])) { + unset($toDelete[$record['id']]); + } + } + + if ($toDelete) { + civicrm_api4($this->getEntity(), 'Delete', ['where' => [['id', 'IN', array_keys($toDelete)]]]); + } + $result->deleted = array_keys($toDelete); + $result->exchangeArray($saved); + } + + /** + * @inheritDoc + */ + public function getParamInfo($param = NULL) { + $info = parent::getParamInfo($param); + if (!$param) { + // This action doesn't actually let you select fields. + unset($info['select']); + } + return $info; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Update.php b/civicrm/ext/api4/Civi/Api4/Action/Update.php new file mode 100644 index 0000000000000000000000000000000000000000..6d2222cb136f1660178d88f7fc44c169dba1a7f1 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Update.php @@ -0,0 +1,103 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Api4\Action; +use Civi\Api4\Generic\Result; + +/** + * Update one or more records with new values. + * + * Use the where clause (required) to select them. + * + * @method $this setValues(array $values) Set all field values from an array of key => value pairs. + * @method $this addValue($field, $value) Set field value to update. + */ +class Update extends Get { + + /** + * Criteria for get to fetch id against which the update will occur + * + * @var array + */ + protected $select = ['id']; + + /** + * Criteria for selecting items to update. + * + * @required + * @var array + */ + protected $where = []; + + /** + * Field values to update. + * + * @var array + */ + protected $values = []; + + /** + * @param $key + * + * @return mixed|null + */ + public function getValue($key) { + return isset($this->values[$key]) ? $this->values[$key] : NULL; + } + + /** + * @inheritDoc + */ + public function _run(Result $result) { + if (!empty($this->values['id'])) { + throw new \Exception('Cannot update the id of an existing object.'); + } + // For some reason the contact bao requires this + if ($this->getEntity() == 'Contact') { + $this->select[] = 'contact_type'; + } + parent::_run($result); + // Then act on the result + $updated_results = []; + foreach ($result as $item) { + $updated_results[] = $this->writeObject($this->values + $item); + } + $result->exchangeArray($updated_results); + } + + /** + * @inheritDoc + */ + public function getParamInfo($param = NULL) { + $info = parent::getParamInfo($param); + if (!$param) { + // Update doesn't actually let you select fields. + unset($info['select']); + } + return $info; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Activity.php b/civicrm/ext/api4/Civi/Api4/Activity.php new file mode 100644 index 0000000000000000000000000000000000000000..778c1c40141ab884f8c40e431e6dfc7052fcea35 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Activity.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Activity entity. + * + * @package Civi\Api4 + */ +class Activity extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Address.php b/civicrm/ext/api4/Civi/Api4/Address.php new file mode 100644 index 0000000000000000000000000000000000000000..6c2f03a2471d20e736049d72bddd04b834ebfd4b --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Address.php @@ -0,0 +1,19 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Address Entity. + * + * This entity holds the address informatiom of a contact. Each contact may hold + * one or more addresses but must have different location types respectively. + * + * Creating a new address requires at minimum a contact's ID and location type ID + * and other attributes (although optional) like street address, city, country etc. + * + * @package Civi\Api4 + */ +class Address extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Contact.php b/civicrm/ext/api4/Civi/Api4/Contact.php new file mode 100644 index 0000000000000000000000000000000000000000..e0cab7542adc1c4b5d5f125e25ad7f2299a9a44d --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Contact.php @@ -0,0 +1,18 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Contacts - Individuals, Organizations, Households. + * + * This is the central entity in the CiviCRM database, and links to + * many other entities (Email, Phone, Participant, etc.). + * + * Creating a new contact requires at minimum a name or email address. + * + * @package Civi\Api4 + */ +class Contact extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/ContactType.php b/civicrm/ext/api4/Civi/Api4/ContactType.php new file mode 100644 index 0000000000000000000000000000000000000000..f336f80a6fbd4b5b960e2d83f7f6b5c195ca146a --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/ContactType.php @@ -0,0 +1,19 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * ContactType entity. + * + * With this entity you can create or update any new or existing Contact type or a sub type + * In case of updating existing ContactType, id of that particular ContactType must + * be in $params array. + * + * Creating a new contact type requires at minimum a label and parent_id. + * + * @package Civi\Api4 + */ +class ContactType extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Contribution.php b/civicrm/ext/api4/Civi/Api4/Contribution.php new file mode 100644 index 0000000000000000000000000000000000000000..74d000bb805b8271127075d338daa063d4e38034 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Contribution.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Contribution entity. + * + * @package Civi\Api4 + */ +class Contribution extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/CustomField.php b/civicrm/ext/api4/Civi/Api4/CustomField.php new file mode 100644 index 0000000000000000000000000000000000000000..46ee41a30470966f9c426f768350d2875c661fdc --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/CustomField.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * CustomField entity. + * + * @package Civi\Api4 + */ +class CustomField extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/CustomGroup.php b/civicrm/ext/api4/Civi/Api4/CustomGroup.php new file mode 100644 index 0000000000000000000000000000000000000000..2e135b2e8c5248c5bc897cdbec48ef1edf4e3b7c --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/CustomGroup.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * CustomGroup entity. + * + * @package Civi\Api4 + */ +class CustomGroup extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/CustomValue.php b/civicrm/ext/api4/Civi/Api4/CustomValue.php new file mode 100644 index 0000000000000000000000000000000000000000..eca214df7a3644429b5e73e446bd8549f14ddd6b --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/CustomValue.php @@ -0,0 +1,26 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; +use Civi\Api4\Generic\AbstractAction; +use Civi\API\Exception\NotImplementedException; + +/** + * CustomGroup entity. + * + * @package Civi\Api4 + */ +class CustomValue extends AbstractEntity { + + /** + * @inheritDoc + */ + public static function permissions() { + $entity = 'contact'; + $permissions = \CRM_Core_Permission::getEntityActionPermissions(); + + // Merge permissions for this entity with the defaults + return \CRM_Utils_Array::value($entity, $permissions, []) + $permissions['default']; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Email.php b/civicrm/ext/api4/Civi/Api4/Email.php new file mode 100644 index 0000000000000000000000000000000000000000..d17f8faf1073f77a366c976ee788179822173250 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Email.php @@ -0,0 +1,17 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Email entity. + * + * This entity allows user to add, update, retrieve or delete emails address(es) of a contact. + * + * Creating a new email address requires at minimum a contact's ID and email + * + * @package Civi\Api4 + */ +class Email extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Entity.php b/civicrm/ext/api4/Civi/Api4/Entity.php new file mode 100644 index 0000000000000000000000000000000000000000..5e98fdd64810572ae698b5e95ae234214b6ad73f --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Entity.php @@ -0,0 +1,52 @@ +<?php + +namespace Civi\Api4; + +use Civi\Api4\Action\Entity\Get; +use Civi\Api4\Action\Entity\GetFields; +use Civi\Api4\Action\Entity\GetLinks; +use Civi\Api4\Action\GetActions; + +/** + * Retrieves information about all Api4 entities. + * + * @package Civi\Api4 + */ +class Entity { + + /** + * @return Get + */ + public static function get() { + return new Get('Entity'); + } + + /** + * @return GetActions + */ + public static function getActions() { + return new GetActions('Entity'); + } + + /** + * @return GetFields + */ + public static function getFields() { + return new GetFields('Entity'); + } + + /** + * @return GetFields + */ + public static function getLinks() { + return new GetLinks('Entity'); + } + + /** + * @return array + */ + public static function permissions() { + return []; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event.php b/civicrm/ext/api4/Civi/Api4/Event.php new file mode 100644 index 0000000000000000000000000000000000000000..237765583519f28af2bc73a8083ffc3113478c79 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Event entity. + * + * @package Civi\Api4 + */ +class Event extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Events.php b/civicrm/ext/api4/Civi/Api4/Event/Events.php new file mode 100644 index 0000000000000000000000000000000000000000..0bf4a99370ecdac2908e7863319765e86ccbe232 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Events.php @@ -0,0 +1,25 @@ +<?php + +namespace Civi\Api4\Event; + +class Events { + + /** + * Prepare the specification for a request. Fired from within a request to + * get fields. + * + * @see GetSpecEvent + */ + const GET_SPEC = 'civi.api.get_spec'; + + /** + * Build the database schema, allow adding of custom joins and tables. + */ + const SCHEMA_MAP_BUILD = 'api.schema_map.build'; + + /** + * Alter query results of APIv4 select query + */ + const POST_SELECT_QUERY = 'api.select_query.post'; + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/GetSpecEvent.php b/civicrm/ext/api4/Civi/Api4/Event/GetSpecEvent.php new file mode 100644 index 0000000000000000000000000000000000000000..cc24785377af8ccb181f13be9bc287794e43244d --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/GetSpecEvent.php @@ -0,0 +1,35 @@ +<?php + +namespace Civi\Api4\Event; + +use Civi\Api4\Generic\AbstractAction; +use Symfony\Component\EventDispatcher\Event as BaseEvent; + +class GetSpecEvent extends BaseEvent { + /** + * @var AbstractAction + */ + protected $request; + + /** + * @param AbstractAction $request + */ + public function __construct(AbstractAction $request) { + $this->request = $request; + } + + /** + * @return AbstractAction + */ + public function getRequest() { + return $this->request; + } + + /** + * @param $request + */ + public function setRequest(AbstractAction $request) { + $this->request = $request; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/PostSelectQueryEvent.php b/civicrm/ext/api4/Civi/Api4/Event/PostSelectQueryEvent.php new file mode 100644 index 0000000000000000000000000000000000000000..4489033b223d6448811ca478e5084f85bfa82cdd --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/PostSelectQueryEvent.php @@ -0,0 +1,64 @@ +<?php + +namespace Civi\Api4\Event; + +use Civi\Api4\Query\Api4SelectQuery; +use Symfony\Component\EventDispatcher\Event; + +class PostSelectQueryEvent extends Event { + + /** + * @var array + */ + protected $results; + + /** + * @var Api4SelectQuery + */ + protected $query; + + /** + * PostSelectQueryEvent constructor. + * @param array $results + * @param Api4SelectQuery $query + */ + public function __construct(array $results, Api4SelectQuery $query) { + $this->results = $results; + $this->query = $query; + } + + /** + * @return array + */ + public function getResults() { + return $this->results; + } + + /** + * @param array $results + * @return $this + */ + public function setResults($results) { + $this->results = $results; + + return $this; + } + + /** + * @return Api4SelectQuery + */ + public function getQuery() { + return $this->query; + } + + /** + * @param Api4SelectQuery $query + * @return $this + */ + public function setQuery($query) { + $this->query = $query; + + return $this; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/SchemaMapBuildEvent.php b/civicrm/ext/api4/Civi/Api4/Event/SchemaMapBuildEvent.php new file mode 100644 index 0000000000000000000000000000000000000000..f79f6b4be86a5f3a3410274a3b69a09688bb878e --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/SchemaMapBuildEvent.php @@ -0,0 +1,39 @@ +<?php + +namespace Civi\Api4\Event; + +use Civi\Api4\Service\Schema\SchemaMap; +use Symfony\Component\EventDispatcher\Event as BaseEvent; + +class SchemaMapBuildEvent extends BaseEvent { + /** + * @var SchemaMap + */ + protected $schemaMap; + + /** + * @param SchemaMap $schemaMap + */ + public function __construct(SchemaMap $schemaMap) { + $this->schemaMap = $schemaMap; + } + + /** + * @return SchemaMap + */ + public function getSchemaMap() { + return $this->schemaMap; + } + + /** + * @param SchemaMap $schemaMap + * + * @return $this + */ + public function setSchemaMap($schemaMap) { + $this->schemaMap = $schemaMap; + + return $this; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/AbstractPrepareSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/AbstractPrepareSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..d4725e0dc820bbf6d8b9826ac13d0de54cdd682e --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/AbstractPrepareSubscriber.php @@ -0,0 +1,24 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\API\Event\PrepareEvent; +use Civi\API\Events; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +abstract class AbstractPrepareSubscriber implements EventSubscriberInterface { + /** + * @return array + */ + public static function getSubscribedEvents() { + return [ + Events::PREPARE => 'onApiPrepare', + ]; + } + + /** + * @param PrepareEvent $event + */ + abstract public function onApiPrepare(PrepareEvent $event); + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..2067972ecb5aa443529ec260c79486674384f084 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php @@ -0,0 +1,40 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\Api4\Action\Create; +use Civi\Api4\OptionValue; + +class ActivityPreCreationSubscriber extends PreCreationSubscriber { + /** + * @param Create $request + * @throws \API_Exception + * @throws \Exception + */ + protected function modify(Create $request) { + $activityType = $request->getValue('activity_type'); + if ($activityType) { + $result = OptionValue::get() + ->setCheckPermissions(FALSE) + ->addWhere('name', '=', $activityType) + ->addWhere('option_group.name', '=', 'activity_type') + ->execute(); + + if ($result->count() !== 1) { + throw new \Exception('Activity type must match a *single* type'); + } + + $request->addValue('activity_type_id', $result->first()['id']); + } + } + + /** + * @param Create $request + * + * @return bool + */ + protected function applies(Create $request) { + return $request->getEntity() === 'Activity'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..52d58397d894c55ea1849709517f2dead814a76a --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php @@ -0,0 +1,40 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\Api4\Event\Events; +use Civi\Api4\Event\SchemaMapBuildEvent; +use Civi\Api4\Service\Schema\Joinable\ActivityToActivityContactAssigneesJoinable; +use Civi\Api4\Service\Schema\Joinable\BridgeJoinable; +use Civi\Api4\Service\Schema\Joinable\Joinable; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use \CRM_Utils_String as StringHelper; + +class ActivitySchemaMapSubscriber implements EventSubscriberInterface { + /** + * @return array + */ + public static function getSubscribedEvents() { + return [ + Events::SCHEMA_MAP_BUILD => 'onSchemaBuild', + ]; + } + + /** + * @param SchemaMapBuildEvent $event + */ + public function onSchemaBuild(SchemaMapBuildEvent $event) { + $schema = $event->getSchemaMap(); + $table = $schema->getTableByName('civicrm_activity'); + + $middleAlias = StringHelper::createRandom(10, implode(range('a', 'z'))); + $middleLink = new ActivityToActivityContactAssigneesJoinable($middleAlias); + + $bridge = new BridgeJoinable('civicrm_contact', 'id', 'assignees', $middleLink); + $bridge->setBaseTable('civicrm_activity_contact'); + $bridge->setJoinType(Joinable::JOIN_TYPE_ONE_TO_MANY); + + $table->addTableLink('contact_id', $bridge); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..edea3de6599a0420723e9fa2fd07174f104bf267 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php @@ -0,0 +1,54 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\Api4\Event\Events; +use Civi\Api4\Event\SchemaMapBuildEvent; +use Civi\Api4\Service\Schema\Joinable\Joinable; +use Civi\Api4\Service\Schema\Table; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +class ContactSchemaMapSubscriber implements EventSubscriberInterface { + /** + * @return array + */ + public static function getSubscribedEvents() { + return [ + Events::SCHEMA_MAP_BUILD => 'onSchemaBuild', + ]; + } + + /** + * @param SchemaMapBuildEvent $event + */ + public function onSchemaBuild(SchemaMapBuildEvent $event) { + $schema = $event->getSchemaMap(); + $table = $schema->getTableByName('civicrm_contact'); + $this->addCreatedActivitiesLink($table); + $this->fixPreferredLanguageAlias($table); + } + + /** + * @param Table $table + */ + private function addCreatedActivitiesLink($table) { + $alias = 'created_activities'; + $joinable = new Joinable('civicrm_activity_contact', 'contact_id', $alias); + $joinable->addCondition($alias . '.record_type_id = 1'); + $joinable->setJoinType($joinable::JOIN_TYPE_ONE_TO_MANY); + $table->addTableLink('id', $joinable); + } + + /** + * @param Table $table + */ + private function fixPreferredLanguageAlias($table) { + foreach ($table->getExternalLinks() as $link) { + if ($link->getAlias() === 'languages') { + $link->setAlias('preferred_language'); + return; + } + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/CustomFieldPreCreationSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/CustomFieldPreCreationSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..c5dee8124fdd8f0e4ad46ca1f11532e7d93ed218 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/CustomFieldPreCreationSubscriber.php @@ -0,0 +1,91 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\Api4\Action\Create; + +class CustomFieldPreCreationSubscriber extends PreCreationSubscriber { + + const OPTION_TYPE_NEW = 1; + const OPTION_STATUS_ACTIVE = 1; + + /** + * @param Create $request + */ + public function modify(Create $request) { + $this->formatOptionParams($request); + $this->setDefaults($request); + } + + /** + * @param Create $request + * + * @return bool + */ + protected function applies(Create $request) { + return $request->getEntity() === 'CustomField'; + } + + /** + * Sets defaults required for option group and value creation + * @see CRM_Core_BAO_CustomField::create() + * + * @param Create $request + */ + protected function formatOptionParams(Create $request) { + $options = $request->getValue('options'); + + if (!is_array($options)) { + return; + } + + $dataTypeKey = 'data_type'; + $optionLabelKey = 'option_label'; + $optionWeightKey = 'option_weight'; + $optionStatusKey = 'option_status'; + $optionValueKey = 'option_value'; + $optionTypeKey = 'option_type'; + + $dataType = $request->getValue($dataTypeKey); + $optionLabel = $request->getValue($optionLabelKey); + $optionWeight = $request->getValue($optionWeightKey); + $optionStatus = $request->getValue($optionStatusKey); + $optionValue = $request->getValue($optionValueKey); + $optionType = $request->getValue($optionTypeKey); + + if (!$optionType) { + $request->addValue($optionTypeKey, self::OPTION_TYPE_NEW); + } + + if (!$dataType) { + $request->addValue($dataTypeKey, 'String'); + } + + if (!$optionLabel) { + $request->addValue($optionLabelKey, array_values($options)); + } + + if (!$optionValue) { + $request->addValue($optionValueKey, array_keys($options)); + } + + if (!$optionStatus) { + $statuses = array_fill(0, count($options), self::OPTION_STATUS_ACTIVE); + $request->addValue($optionStatusKey, $statuses); + } + + if (!$optionWeight) { + $request->addValue($optionWeightKey, range(1, count($options))); + } + } + + /** + * @param Create $request + */ + private function setDefaults(Create $request) { + if (!$request->getValue('option_type')) { + $request->addValue('option_type', NULL); + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..bcbaf3959757acaca8eb236b96cbe05df8a7f667 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php @@ -0,0 +1,29 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\Api4\Action\Create; + +class CustomGroupPreCreationSubscriber extends PreCreationSubscriber { + /** + * @param Create $request + */ + protected function modify(Create $request) { + $extends = $request->getValue('extends'); + $title = $request->getValue('title'); + $name = $request->getValue('name'); + + if (is_string($extends)) { + $request->addValue('extends', [$extends]); + } + + if (NULL === $title && $name) { + $request->addValue('title', $name); + } + } + + protected function applies(Create $request) { + return $request->getEntity() === 'CustomGroup'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..7d3633c89966b73cb66e25fdc7ebba8716280d8b --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php @@ -0,0 +1,50 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\Api4\Action\Create; +use Civi\Api4\OptionGroup; + +class OptionValuePreCreationSubscriber extends PreCreationSubscriber { + + /** + * @param Create $request + */ + protected function modify(Create $request) { + $this->setOptionGroupId($request); + } + + /** + * @param Create $request + * + * @return bool + */ + protected function applies(Create $request) { + return $request->getEntity() === 'OptionValue'; + } + + /** + * @param Create $request + * @throws \API_Exception + * @throws \Exception + */ + private function setOptionGroupId(Create $request) { + $optionGroupName = $request->getValue('option_group'); + if (!$optionGroupName || $request->getValue('option_group_id')) { + return; + } + + $optionGroup = OptionGroup::get() + ->setCheckPermissions(FALSE) + ->addSelect('id') + ->addWhere('name', '=', $optionGroupName) + ->execute(); + + if ($optionGroup->count() !== 1) { + throw new \Exception('Option group name must match only a single group'); + } + + $request->addValue('option_group_id', $optionGroup->first()['id']); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..62d542d0e0cfc225a5b20a04f3323b3043ae048a --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php @@ -0,0 +1,65 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2017 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Event\Subscriber; + +use Civi\API\Events; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * For any API requests that correspond to a Doctrine entity + * ($apiRequest['doctrineClass']), check permissions specified in + * Civi\API\Annotation\Permission. + */ +class PermissionCheckSubscriber implements EventSubscriberInterface { + /** + * @return array + */ + public static function getSubscribedEvents() { + return [ + Events::AUTHORIZE => [ + ['onApiAuthorize', Events::W_LATE], + ], + ]; + } + + /** + * @param \Civi\API\Event\AuthorizeEvent $event + * API authorization event. + */ + public function onApiAuthorize(\Civi\API\Event\AuthorizeEvent $event) { + /* @var \Civi\Api4\Generic\AbstractAction $apiRequest */ + $apiRequest = $event->getApiRequest(); + if ($apiRequest['version'] == 4) { + if (!$apiRequest->getCheckPermissions() || $apiRequest->isAuthorized()) { + $event->authorize(); + $event->stopPropagation(); + } + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PostSelectQuerySubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PostSelectQuerySubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..ff7e6d20d61def5a89cd3da1d2ce277623cbf3cf --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PostSelectQuerySubscriber.php @@ -0,0 +1,369 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\Api4\Event\Events; +use Civi\Api4\Event\PostSelectQueryEvent; +use Civi\Api4\Query\Api4SelectQuery; +use Civi\Api4\Service\Schema\Joinable\Joinable; +use Civi\Api4\Utils\ArrayInsertionUtil; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * Changes the results of a select query, doing 1-n joins and unserializing data + */ +class PostSelectQuerySubscriber implements EventSubscriberInterface { + + /** + * @inheritdoc + */ + public static function getSubscribedEvents() { + return [ + Events::POST_SELECT_QUERY => 'onPostQuery' + ]; + } + + /** + * @param PostSelectQueryEvent $event + */ + public function onPostQuery(PostSelectQueryEvent $event) { + $results = $event->getResults(); + $event->setResults($this->postRun($results, $event->getQuery())); + } + + /** + * @param array $results + * @param Api4SelectQuery $query + * + * @return array + */ + protected function postRun(array $results, Api4SelectQuery $query) { + if (empty($results)) { + return $results; + } + + $fieldSpec = $query->getApiFieldSpec(); + $this->unserializeFields($results, $query->getEntity(), $fieldSpec); + + // Group the selects to avoid queries for each field + $groupedSelects = $this->getJoinedDotSelects($query); + foreach ($groupedSelects as $finalAlias => $selects) { + $joinPath = $this->getJoinPathInfo($selects[0], $query); + $selects = $this->formatSelects($finalAlias, $selects, $query); + $joinResults = $this->getJoinResults($query, $finalAlias, $selects); + $this->formatJoinResults($joinResults, $query, $finalAlias); + + // Insert join results into original result + foreach ($results as &$primaryResult) { + $baseId = $primaryResult['id']; + $filtered = array_filter($joinResults, function ($res) use ($baseId) { + return ($res['_base_id'] === $baseId); + }); + $filtered = array_values($filtered); + ArrayInsertionUtil::insert($primaryResult, $joinPath, $filtered); + } + } + + return array_values($results); + } + + /** + * @param array $joinResults + * @param Api4SelectQuery $query + * @param string $alias + */ + private function formatJoinResults(&$joinResults, $query, $alias) { + $join = $query->getJoinedTable($alias); + $fields = []; + foreach ($join->getEntityFields() as $field) { + $name = explode('.', $field->getName()); + $fields[array_pop($name)] = $field->toArray(); + } + if ($fields) { + $this->unserializeFields($joinResults, NULL, $fields); + } + } + + /** + * Unserialize values + * + * @param array $results + * @param string $entity + * @param array $fields + */ + protected function unserializeFields(&$results, $entity, $fields = []) { + if (empty($fields)) { + $params = ['action' => 'get', 'includeCustom' => FALSE]; + $fields = civicrm_api4($entity, 'getFields', $params)->indexBy('name'); + } + + foreach ($results as &$result) { + foreach ($result as $field => &$value) { + if (!empty($fields[$field]['serialize']) && is_string($value)) { + $serializationType = $fields[$field]['serialize']; + $value = \CRM_Core_DAO::unSerializeField($value, $serializationType); + } + } + } + } + + /** + * @param Api4SelectQuery $query + * + * @return array + */ + private function getJoinedDotSelects(Api4SelectQuery $query) { + // Remove selects that are not in a joined table + $fkAliases = $query->getFkSelectAliases(); + $joinedDotSelects = array_filter( + $query->getSelect(), + function ($select) use ($fkAliases) { + return isset($fkAliases[$select]); + } + ); + + $selects = []; + // group related selects by alias so they can be executed in one query + foreach ($joinedDotSelects as $select) { + $parts = explode('.', $select); + $finalAlias = $parts[count($parts) - 2]; + $selects[$finalAlias][] = $select; + } + + // sort by depth, e.g. email selects should be done before email.location + uasort($selects, function ($a, $b) { + $aFirst = $a[0]; + $bFirst = $b[0]; + return substr_count($aFirst, '.') > substr_count($bFirst, '.'); + }); + + return $selects; + } + + + /** + * @param array $selects + * @param $serializationType + * @param Api4SelectQuery $query + * + * @return array + */ + private function getResultsForSerializedField( + array $selects, + $serializationType, + Api4SelectQuery $query + ) { + // Get the alias (Selects are grouped and all target the same table) + $sampleField = current($selects); + $alias = strstr($sampleField, '.', TRUE); + + // Fetch the results with the serialized field + $selects['serialized'] = $query::MAIN_TABLE_ALIAS . '.' . $alias; + $serializedResults = $this->runWithNewSelects($selects, $query); + $newResults = []; + + // Create a new results array, with a separate entry for each option value + foreach ($serializedResults as $result) { + $optionValues = \CRM_Core_DAO::unSerializeField( + $result['serialized'], + $serializationType + ); + unset($result['serialized']); + foreach ($optionValues as $value) { + $newResults[] = array_merge($result, ['value' => $value]); + } + } + + $optionValueValues = array_unique(array_column($newResults, 'value')); + $optionValues = $this->getOptionValuesFromValues( + $selects, + $query, + $optionValueValues + ); + $valueField = $alias . '.value'; + + // Index by value + foreach ($optionValues as $key => $subResult) { + $optionValues[$subResult['value']] = $subResult; + unset($subResult[$key]); + + // Exclude 'value' if not in original selects + if (!in_array($valueField, $selects)) { + unset($optionValues[$subResult['value']]['value']); + } + } + + // Replace serialized with the sub-select results + foreach ($newResults as &$result) { + $result = array_merge($result, $optionValues[$result['value']]); + unset($result['value']); + } + + return $newResults; + } + + + /** + * Prepares selects for the subquery to fetch join results + * + * @param string $alias + * @param array $selects + * @param Api4SelectQuery $query + * + * @return array + */ + private function formatSelects($alias, $selects, Api4SelectQuery $query) { + $mainAlias = $query::MAIN_TABLE_ALIAS; + $selectFields = []; + + foreach ($selects as $select) { + $selectAlias = $query->getFkSelectAliases()[$select]; + $fieldAlias = substr($select, strrpos($select, '.') + 1); + $selectFields[$fieldAlias] = $selectAlias; + } + + $firstSelect = $selects[0]; + $pathParts = explode('.', $firstSelect); + $numParts = count($pathParts); + $parentAlias = $numParts > 2 ? $pathParts[$numParts - 3] : $mainAlias; + + $selectFields['id'] = sprintf('%s.id', $alias); + $selectFields['_parent_id'] = $parentAlias . '.id'; + $selectFields['_base_id'] = $mainAlias . '.id'; + + return $selectFields; + } + + /** + * @param array $selects + * @param Api4SelectQuery $query + * + * @return array + */ + private function runWithNewSelects(array $selects, Api4SelectQuery $query) { + $aliasedSelects = array_map(function ($field, $alias) { + return sprintf('%s as "%s"', $field, $alias); + }, $selects, array_keys($selects)); + + $newSelect = sprintf('SELECT DISTINCT %s', implode(", ", $aliasedSelects)); + $sql = str_replace("\n", ' ', $query->getQuery()->toSQL()); + $originalSelect = substr($sql, 0, strpos($sql, ' FROM')); + $sql = str_replace($originalSelect, $newSelect, $sql); + + $relatedResults = []; + $resultDAO = \CRM_Core_DAO::executeQuery($sql); + while ($resultDAO->fetch()) { + $relatedResult = []; + foreach ($selects as $alias => $column) { + $returnName = $alias; + $alias = str_replace('.', '_', $alias); + if (property_exists($resultDAO, $alias)) { + $relatedResult[$returnName] = $resultDAO->$alias; + } + }; + $relatedResults[] = $relatedResult; + } + + return $relatedResults; + } + + /** + * @param Api4SelectQuery $query + * @param $alias + * @param $selects + * @return array + */ + protected function getJoinResults(Api4SelectQuery $query, $alias, $selects) { + $apiFieldSpec = $query->getApiFieldSpec(); + if (!empty($apiFieldSpec[$alias]['serialize'])) { + $type = $apiFieldSpec[$alias]['serialize']; + $joinResults = $this->getResultsForSerializedField($selects, $type, $query); + } + else { + $joinResults = $this->runWithNewSelects($selects, $query); + } + + // Remove results with no matching entries + $joinResults = array_filter($joinResults, function ($result) { + return !empty($result['id']); + }); + + return $joinResults; + } + + /** + * Separates a string like 'emails.location_type.label' into an array, where + * each value in the array tells whether it is 1-1 or 1-n join type + * + * @param string $pathString + * Dot separated path to the field + * @param Api4SelectQuery $query + * + * @return array + * Index is table alias and value is boolean whether is 1-to-many join + */ + private function getJoinPathInfo($pathString, $query) { + $pathParts = explode('.', $pathString); + array_pop($pathParts); // remove field + $path = []; + $isMultipleChecker = function($alias) use ($query) { + foreach ($query->getJoinedTables() as $table) { + if ($table->getAlias() === $alias) { + return $table->getJoinType() === Joinable::JOIN_TYPE_ONE_TO_MANY; + } + } + return FALSE; + }; + + foreach ($pathParts as $part) { + $path[$part] = $isMultipleChecker($part); + } + + return $path; + } + + /** + * Get all the option_value values required in the query + * + * @param array $selects + * @param Api4SelectQuery $query + * @param array $values + * + * @return array + */ + private function getOptionValuesFromValues( + array $selects, + Api4SelectQuery $query, + array $values + ) { + $sampleField = current($selects); + $alias = strstr($sampleField, '.', TRUE); + + // Get the option value table that was joined + $relatedTable = NULL; + foreach ($query->getJoinedTables() as $joinedTable) { + if ($joinedTable->getAlias() === $alias) { + $relatedTable = $joinedTable; + } + } + + // We only want subselects related to the joined table + $subSelects = array_filter($selects, function ($select) use ($alias) { + return strpos($select, $alias) === 0; + }); + + // Fetch all related option_value entries + $valueField = $alias . '.value'; + $subSelects[] = $valueField; + $tableName = $relatedTable->getTargetTable(); + $conditions = $relatedTable->getExtraJoinConditions(); + $conditions[] = $valueField . ' IN ("' . implode('", "', $values) . '")'; + $subQuery = new \CRM_Utils_SQL_Select($tableName . ' ' . $alias); + $subQuery->where($conditions); + $subQuery->select($subSelects); + $subResults = $subQuery->execute()->fetchAll(); + + return $subResults; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PreCreationSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PreCreationSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..13f54a99c3ae9ba2e4f741fd41c318a3b5c827b6 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PreCreationSubscriber.php @@ -0,0 +1,53 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\API\Event\PrepareEvent; +use Civi\Api4\Action\Create; + +abstract class PreCreationSubscriber extends AbstractPrepareSubscriber { + /** + * @param PrepareEvent $event + */ + public function onApiPrepare(PrepareEvent $event) { + $apiRequest = $event->getApiRequest(); + if (!$apiRequest instanceof Create) { + return; + } + + $this->addDefaultCreationValues($apiRequest); + if ($this->applies($apiRequest)) { + $this->modify($apiRequest); + } + } + + /** + * Modify the request + * + * @param Create $request + * + * @return void + */ + abstract protected function modify(Create $request); + + /** + * Check if this subscriber should be applied to the request + * + * @param Create $request + * + * @return bool + */ + abstract protected function applies(Create $request); + + /** + * Sets default values common to all creation requests + * + * @param Create $request + */ + protected function addDefaultCreationValues(Create $request) { + if (NULL === $request->getValue('is_active')) { + $request->addValue('is_active', 1); + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ValidateFieldsSubscriber.php b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ValidateFieldsSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..f73edf46c7fad171009f425566cf45ed125fc0cc --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Event/Subscriber/ValidateFieldsSubscriber.php @@ -0,0 +1,97 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2017 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Event\Subscriber; + +use Civi\API\Event\PrepareEvent; + +/** + * Validate field inputs based on annotations in the action class + */ +class ValidateFieldsSubscriber extends AbstractPrepareSubscriber { + + /** + * @param PrepareEvent $event + * @throws \Exception + */ + public function onApiPrepare(PrepareEvent $event) { + /** @var \Civi\Api4\Generic\AbstractAction $apiRequest */ + $apiRequest = $event->getApiRequest(); + if (is_a($apiRequest, 'Civi\Api4\Generic\AbstractAction')) { + $paramInfo = $apiRequest->getParamInfo(); + foreach ($paramInfo as $param => $info) { + $getParam = 'get' . ucfirst($param); + $value = $apiRequest->$getParam(); + // Required fields + if (!empty($info['required']) && (!$value && $value !== 0 && $value !== '0')) { + throw new \API_Exception('Parameter "' . $param . '" is required.'); + } + if (!empty($info['type']) && !self::checkType($value, $info['type'])) { + throw new \API_Exception('Parameter "' . $param . '" is not of the correct type. Expecting ' . implode(' or ', $info['type']) . '.'); + } + } + } + } + + /** + * Validate variable type on input + * + * @param $value + * @param $types + * @return bool + * @throws \API_Exception + */ + public static function checkType($value, $types) { + if ($value === NULL) { + return TRUE; + } + foreach ($types as $type) { + switch ($type) { + case 'array': + case 'bool': + case 'string': + case 'object': + $tester = 'is_' . $type; + if ($tester($value)) { + return TRUE; + } + break; + + case 'int': + if (\CRM_Utils_Rule::integer($value)) { + return TRUE; + } + break; + + default: + throw new \API_Exception('Unknown paramater type: ' . $type); + } + } + return FALSE; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Generic/AbstractAction.php b/civicrm/ext/api4/Civi/Api4/Generic/AbstractAction.php new file mode 100644 index 0000000000000000000000000000000000000000..574b60ce71a6ce401a250f93b9255643bb9e3360 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Generic/AbstractAction.php @@ -0,0 +1,514 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Api4\Generic; + +use Civi\API\Exception\UnauthorizedException; +use Civi\API\Kernel; +use Civi\Api4\Utils\FormattingUtil; +use Civi\Api4\Utils\ReflectionUtils; +use CRM_Utils_Array as UtilsArray; + +/** + * Base class for all api actions. + * + * @method $this setCheckPermissions(bool $value) + * @method bool getCheckPermissions() + */ +abstract class AbstractAction implements \ArrayAccess { + + /** + * Api version number; cannot be changed. + * + * @var int + */ + protected $version = 4; + + /** + * Custom Group name if this is a CustomValue pseudo-entity. + * + * @var string + */ + private $customGroup; + + /* + * Todo: not implemented. + * + * @var array + * + protected $chain = []; + */ + + /** + * Whether to enforce acl permissions based on the current user. + * + * Setting to FALSE will disable permission checks and override ACLs. + * In REST/javascript this cannot be disabled. + * + * @var bool + */ + protected $checkPermissions = TRUE; + + /* @var string */ + private $entity; + + /* @var \ReflectionClass */ + private $thisReflection; + + /* @var array */ + private $thisParamInfo; + + /* @var array */ + private $thisArrayStorage; + + /* @var array */ + private $entityFields; + + /** + * Action constructor. + * @param string $entity + */ + public function __construct($entity) { + $this->entity = $entity; + $this->thisReflection = new \ReflectionClass($this); + } + + /** + * Strictly enforce api parameters + * @param $name + * @param $value + * @throws \Exception + */ + public function __set($name, $value) { + throw new \API_Exception('Unknown api parameter'); + } + + /** + * @throws \API_Exception + */ + public function setVersion() { + throw new \API_Exception('Cannot modify api version'); + } + + /** + * Magic function to provide addFoo, getFoo and setFoo for params. + * + * @param $name + * @param $arguments + * @return static|mixed + * @throws \API_Exception + */ + public function __call($name, $arguments) { + $param = lcfirst(substr($name, 3)); + $mode = substr($name, 0, 3); + // Handle plural when adding to e.g. $values with "addValue" method. + if ($mode == 'add' && $this->paramExists($param . 's')) { + $param .= 's'; + } + if ($this->paramExists($param)) { + switch ($mode) { + case 'get': + return $this->$param; + + case 'set': + if (is_array($this->$param)) { + // Don't overwrite any defaults + $this->$param = $arguments[0] + $this->$param; + } + else { + $this->$param = $arguments[0]; + } + return $this; + + case 'add': + if (!is_array($this->$param)) { + throw new \API_Exception('Cannot add to non-array param'); + } + if (array_key_exists(1, $arguments)) { + $this->{$param}[$arguments[0]] = $arguments[1]; + } + else { + $this->{$param}[] = $arguments[0]; + } + return $this; + } + } + throw new \API_Exception('Unknown api parameter: ' . $name); + } + + /** + * Invoke api call. + * + * At this point all the params have been sent in and we initiate the api call & return the result. + * This is basically the outer wrapper for api v4. + * + * @return Result|array + * @throws UnauthorizedException + */ + final public function execute() { + /** @var Kernel $kernel */ + $kernel = \Civi::service('civi_api_kernel'); + + return $kernel->runRequest($this); + } + + /** + * @param \Civi\Api4\Generic\Result $result + */ + abstract public function _run(Result $result); + + /** + * Serialize this object's params into an array + * @return array + */ + public function getParams() { + $params = []; + foreach ($this->thisReflection->getProperties(\ReflectionProperty::IS_PROTECTED) as $property) { + $name = $property->getName(); + $params[$name] = $this->$name; + } + return $params; + } + + /** + * @param $customGroup + * @return static + */ + public function setCustomGroup($customGroup) { + $this->customGroup = $customGroup; + return $this; + } + + /** + * @return string + */ + public function getCustomGroup() { + return $this->customGroup; + } + + /** + * Get documentation for one or all params + * + * @param string $param + * @return array of arrays [description, type, default, (comment)] + */ + public function getParamInfo($param = NULL) { + if (!isset($this->thisParamInfo)) { + $defaults = $this->getParamDefaults(); + foreach ($this->thisReflection->getProperties(\ReflectionProperty::IS_PROTECTED) as $property) { + $name = $property->getName(); + if ($name != 'version') { + $this->thisParamInfo[$name] = ReflectionUtils::getCodeDocs($property, 'Property'); + $this->thisParamInfo[$name]['default'] = $defaults[$name]; + } + } + } + return $param ? $this->thisParamInfo[$param] : $this->thisParamInfo; + } + + /** + * @return string + */ + public function getEntity() { + return $this->entity; + } + + /** + * + * @return string + */ + public function getAction() { + $name = get_class($this); + return lcfirst(substr($name, strrpos($name, '\\') + 1)); + } + + /** + * @param string $param + * @return bool + */ + protected function paramExists($param) { + return array_key_exists($param, $this->getParams()); + } + + /** + * @return array + */ + protected function getParamDefaults() { + return array_intersect_key($this->thisReflection->getDefaultProperties(), $this->getParams()); + } + + /** + * @return \CRM_Core_DAO|string + */ + protected function getBaoName() { + require_once 'api/v3/utils.php'; + return \_civicrm_api3_get_BAO($this->getEntity()); + } + + /** + * @inheritDoc + */ + public function offsetExists($offset) { + return in_array($offset, ['entity', 'action', 'params', 'version', 'check_permissions']) || isset($this->thisArrayStorage[$offset]); + } + + /** + * @inheritDoc + */ + public function &offsetGet($offset) { + $val = NULL; + if (in_array($offset, ['entity', 'action', 'params', 'version'])) { + $getter = 'get' . ucfirst($offset); + $val = $this->$getter(); + return $val; + } + if ($offset == 'check_permissions') { + return $this->checkPermissions; + } + if (isset ($this->thisArrayStorage[$offset])) { + return $this->thisArrayStorage[$offset]; + } + else { + return $val; + } + } + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value) { + if (in_array($offset, ['entity', 'action', 'params', 'version'])) { + throw new \API_Exception('Cannot modify api4 state via array access'); + } + if ($offset == 'check_permissions') { + $this->setCheckPermissions($value); + } + else { + $this->thisArrayStorage[$offset] = $value; + } + } + + /** + * @inheritDoc + */ + public function offsetUnset($offset) { + if (in_array($offset, ['entity', 'action', 'params', 'check_permissions', 'version'])) { + throw new \API_Exception('Cannot modify api4 state via array access'); + } + unset($this->thisArrayStorage[$offset]); + } + + /** + * Extract the true fields from a BAO + * + * (Used by create and update actions) + * @param object $bao + * @return array + */ + public static function baoToArray($bao) { + $fields = $bao->fields(); + $values = []; + foreach ($fields as $key => $field) { + $name = $field['name']; + if (property_exists($bao, $name)) { + $values[$name] = $bao->$name; + } + } + return $values; + } + + /** + * Is this api call permitted? + * + * This function is called if checkPermissions is set to true. + * + * @return bool + */ + public function isAuthorized() { + $permissions = $this->getPermissions(); + return \CRM_Core_Permission::check($permissions); + } + + public function getPermissions() { + $permissions = call_user_func(["\\Civi\\Api4\\" . $this->entity, 'permissions']); + $permissions += [ + // applies to getFields, getActions, etc. + 'meta' => ['access CiviCRM'], + // catch-all, applies to create, get, delete, etc. + 'default' => ['administer CiviCRM'], + ]; + $action = $this->getAction(); + if (isset($permissions[$action])) { + return $permissions[$action]; + } + elseif (in_array($action, ['getActions', 'getFields'])) { + return $permissions['meta']; + } + return $permissions['default']; + } + + /** + * Write a bao object as part of a create/update action. + * + * @param $params + * @return array + * @throws \API_Exception + */ + protected function writeObject($params) { + $entityId = UtilsArray::value('id', $params); + FormattingUtil::formatWriteParams($params, $this->getEntity(), $this->getEntityFields()); + $this->formatCustomParams($params, $entityId); + + $baoName = $this->getBaoName(); + $bao = new $baoName(); + + // For some reason the contact bao requires this + if ($entityId && $this->getEntity() == 'Contact') { + $params['contact_id'] = $entityId; + } + // Some BAOs are weird and don't support a straightforward "create" method. + $oddballs = [ + 'Website' => 'add', + 'Address' => 'add', + ]; + $method = UtilsArray::value($this->getEntity(), $oddballs, 'create'); + if (!method_exists($bao, $method)) { + $method = 'add'; + } + if (method_exists($bao, $method)) { + $createResult = $bao->$method($params); + } + else { + $createResult = $this->genericCreateMethod($params); + } + + if (!$createResult) { + $errMessage = sprintf('%s write operation failed', $this->getEntity()); + throw new \API_Exception($errMessage); + } + + // trim back the junk and just get the array: + return $this->baoToArray($createResult); + } + + /** + * Fallback when a BAO does not contain create or add functions + * + * @param $params + * @return mixed + */ + private function genericCreateMethod($params) { + $baoName = $this->getBaoName(); + $hook = empty($params['id']) ? 'create' : 'edit'; + + \CRM_Utils_Hook::pre($hook, $this->getEntity(), UtilsArray::value('id', $params), $params); + /** @var \CRM_Core_DAO $instance */ + $instance = new $baoName(); + $instance->copyValues($params, TRUE); + $instance->save(); + \CRM_Utils_Hook::post($hook, $this->getEntity(), $instance->id, $instance); + + return $instance; + } + + /** + * Returns schema fields for this entity & action. + * + * @return array + * @throws \API_Exception + */ + public function getEntityFields() { + if (!$this->entityFields) { + $this->entityFields = civicrm_api4($this->getEntity(), 'getFields', ['action' => $this->getAction(), 'includeCustom' => FALSE]) + ->indexBy('name'); + } + return $this->entityFields; + } + + /** + * @param $params + * @param $entityId + * @return mixed + */ + private function formatCustomParams(&$params, $entityId) { + $customParams = []; + + // $customValueID is the ID of the custom value in the custom table for this + // entity (i guess this assumes it's not a multi value entity) + foreach ($params as $name => $value) { + if (strpos($name, '.') === FALSE) { + continue; + } + + list($customGroup, $customField) = explode('.', $name); + + $customFieldId = \CRM_Core_BAO_CustomField::getFieldValue( + \CRM_Core_DAO_CustomField::class, + $customField, + 'id', + 'name' + ); + $customFieldType = \CRM_Core_BAO_CustomField::getFieldValue( + \CRM_Core_DAO_CustomField::class, + $customField, + 'html_type', + 'name' + ); + $customFieldExtends = \CRM_Core_BAO_CustomGroup::getFieldValue( + \CRM_Core_DAO_CustomGroup::class, + $customGroup, + 'extends', + 'name' + ); + + // todo are we sure we don't want to allow setting to NULL? need to test + if ($customFieldId && NULL !== $value) { + + if ($customFieldType == 'CheckBox') { + // this function should be part of a class + formatCheckBoxField($value, 'custom_' . $customFieldId, $this->getEntity()); + } + + \CRM_Core_BAO_CustomField::formatCustomField( + $customFieldId, + $customParams, + $value, + $customFieldExtends, + NULL, // todo check when this is needed + $entityId, + FALSE, + FALSE, + TRUE + ); + } + } + + if ($customParams) { + $params['custom'] = $customParams; + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Generic/AbstractEntity.php b/civicrm/ext/api4/Civi/Api4/Generic/AbstractEntity.php new file mode 100644 index 0000000000000000000000000000000000000000..3d21dd99300afecbfb593bbb4d6d138bf98a1419 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Generic/AbstractEntity.php @@ -0,0 +1,96 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ +namespace Civi\Api4\Generic; + +use Civi\API\Exception\NotImplementedException; +use Civi\Api4\Action\Create; +use Civi\Api4\Action\Delete; +use Civi\Api4\Action\Get; +use Civi\Api4\Action\GetActions; +use Civi\Api4\Action\GetFields; +use Civi\Api4\Action\Update; +use Civi\Api4\Action\Replace; + +/** + * Base class for all api entities. + * + * @method static Get get + * @method static GetFields getFields + * @method static GetActions getActions + * @method static Create create + * @method static Update update + * @method static Delete delete + * @method static Replace replace + */ +abstract class AbstractEntity { + + /** + * Magic method to return the action object for an api. + * + * @param string $action + * @param null $args + * @return AbstractAction + * @throws NotImplementedException + */ + public static function __callStatic($action, $args) { + // Get entity name from called class + $entity = substr(static::class, strrpos(static::class, '\\') + 1); + // Find class for this action + $entityAction = "\\Civi\\Api4\\Action\\$entity\\" . ucfirst($action); + $genericAction = '\Civi\Api4\Action\\' . ucfirst($action); + if (class_exists($entityAction)) { + $actionObject = new $entityAction($entity); + } + elseif (class_exists($genericAction)) { + $actionObject = new $genericAction($entity); + } + else { + throw new NotImplementedException("Api $entity $action version 4 does not exist."); + } + if ($entity === 'CustomValue' && !empty($args[0])) { + $actionObject->setCustomGroup($args[0]); + } + return $actionObject; + } + + /** + * Returns a list of permissions needed to access the various actions in this api. + * + * @return array + */ + public static function permissions() { + // Get entity name from called class + $entity = substr(static::class, strrpos(static::class, '\\') + 1); + $permissions = \CRM_Core_Permission::getEntityActionPermissions(); + + // For legacy reasons the permissions are keyed by lowercase entity name + $lcentity = _civicrm_api_get_entity_name_from_camel($entity); + // Merge permissions for this entity with the defaults + return \CRM_Utils_Array::value($lcentity, $permissions, []) + $permissions['default']; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Generic/Result.php b/civicrm/ext/api4/Civi/Api4/Generic/Result.php new file mode 100644 index 0000000000000000000000000000000000000000..fc855c7072dc54289bf68cc4d18a8b68f0e800a6 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Generic/Result.php @@ -0,0 +1,84 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Generic; + +/** + * Container for api results. + */ +class Result extends \ArrayObject { + /** + * @var string + */ + public $entity; + /** + * @var string + */ + public $action; + /** + * Api version + * @var int + */ + public $version = 4; + + /** + * Return first result. + * @return array|null + */ + public function first() { + foreach ($this as $values) { + return $values; + } + return NULL; + } + + /** + * Re-index the results array (which by default is non-associative) + * + * Drops any item from the results that does not contain the specified key + * + * @param string $key + * @return $this + * @throws \API_Exception + */ + public function indexBy($key) { + if (count($this)) { + $newResults = []; + foreach ($this as $values) { + if (isset($values[$key])) { + $newResults[$values[$key]] = $values; + } + } + if (!$newResults) { + throw new \API_Exception("Key $key not found in api results"); + } + $this->exchangeArray($newResults); + } + return $this; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Group.php b/civicrm/ext/api4/Civi/Api4/Group.php new file mode 100644 index 0000000000000000000000000000000000000000..97c6d4f584baea6ff367e4639aa8e54ebbf96fa3 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Group.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Group entity. + * + * @package Civi\Api4 + */ +class Group extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/IM.php b/civicrm/ext/api4/Civi/Api4/IM.php new file mode 100644 index 0000000000000000000000000000000000000000..63b8fe88a182e2aa4049b169719b67aad14dbaa8 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/IM.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * IM entity. + * + * @package Civi\Api4 + */ +class IM extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Navigation.php b/civicrm/ext/api4/Civi/Api4/Navigation.php new file mode 100644 index 0000000000000000000000000000000000000000..2cf800d97bffae7d9b7b6417a15f0378a79932b0 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Navigation.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Navigation entity. + * + * @package Civi\Api4 + */ +class Navigation extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/OpenID.php b/civicrm/ext/api4/Civi/Api4/OpenID.php new file mode 100644 index 0000000000000000000000000000000000000000..7a748970eee9c7f5f28b6533a0368854205ebbef --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/OpenID.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * OpenID entity. + * + * @package Civi\Api4 + */ +class OpenID extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/OptionGroup.php b/civicrm/ext/api4/Civi/Api4/OptionGroup.php new file mode 100644 index 0000000000000000000000000000000000000000..071e88359de37475d069dd58df5d96479ce831ce --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/OptionGroup.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * OptionGroup entity. + * + * @package Civi\Api4 + */ +class OptionGroup extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/OptionValue.php b/civicrm/ext/api4/Civi/Api4/OptionValue.php new file mode 100644 index 0000000000000000000000000000000000000000..f0bbc82fb39f92051160830900cdaf81b55cd396 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/OptionValue.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * OptionValue entity. + * + * @package Civi\Api4 + */ +class OptionValue extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Participant.php b/civicrm/ext/api4/Civi/Api4/Participant.php new file mode 100644 index 0000000000000000000000000000000000000000..a09f6a75c1ec2d3978330f3db2b4e98c04ee6a7e --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Participant.php @@ -0,0 +1,15 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Action\Participant\Get; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Participant entity. + * + * @method static Get get + * @package Civi\Api4 + */ +class Participant extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Phone.php b/civicrm/ext/api4/Civi/Api4/Phone.php new file mode 100644 index 0000000000000000000000000000000000000000..c5e12f27c96a94e6b16416f78ee17e9830f90fd3 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Phone.php @@ -0,0 +1,17 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Phone entity. + * + * This entity allows user to add, update, retrieve or delete phone number(s) of a contact. + * + * Creating a new phone of a contact, requires at minimum a contact's ID and phone number + * + * @package Civi\Api4 + */ +class Phone extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Provider/ActionObjectProvider.php b/civicrm/ext/api4/Civi/Api4/Provider/ActionObjectProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..2299488c7a29a953e0047b950728c6b9f4fdc017 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Provider/ActionObjectProvider.php @@ -0,0 +1,104 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Provider; + +use Civi\API\Event\ResolveEvent; +use Civi\API\Provider\ProviderInterface; +use Civi\Api4\Generic\AbstractAction; +use Civi\API\Events; +use Civi\Api4\Generic\Result; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * Accept $apiRequests based on \Civi\API\Action + */ +class ActionObjectProvider implements EventSubscriberInterface, ProviderInterface { + + /** + * @return array + */ + public static function getSubscribedEvents() { + // Using a high priority allows adhoc implementations + // to override standard implementations -- which is + // handy for testing/mocking. + return [ + Events::RESOLVE => [ + ['onApiResolve', Events::W_EARLY], + ], + ]; + } + /** + * @param ResolveEvent $event + * API resolution event. + */ + public function onApiResolve(ResolveEvent $event) { + $apiRequest = $event->getApiRequest(); + if ($apiRequest instanceof AbstractAction) { + $event->setApiRequest($apiRequest); + $event->setApiProvider($this); + $event->stopPropagation(); + } + } + + /** + * @inheritDoc + * + * @param array|AbstractAction $apiRequest + * + * @return array|mixed + */ + public function invoke($apiRequest) { + $result = new Result(); + $result->action = $apiRequest['action']; + $result->entity = $apiRequest['entity']; + $apiRequest->_run($result); + return $result; + } + + /** + * @inheritDoc + * @param int $version + * @return array + */ + public function getEntityNames($version) { + /** FIXME */ + return []; + } + + /** + * @inheritDoc + * @param int $version + * @param string $entity + * @return array + */ + public function getActionNames($version, $entity) { + /** FIXME Civi\API\V4\Action\GetActions */ + return []; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Query/Api4SelectQuery.php b/civicrm/ext/api4/Civi/Api4/Query/Api4SelectQuery.php new file mode 100644 index 0000000000000000000000000000000000000000..6cc30ad21beda8cb074faed5b361c6aebca27759 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Query/Api4SelectQuery.php @@ -0,0 +1,514 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Query; + +use Civi\API\SelectQuery; +use Civi\Api4\Event\Events; +use Civi\Api4\Event\PostSelectQueryEvent; +use Civi\Api4\Service\Schema\Joinable\CustomGroupJoinable; +use Civi\Api4\Service\Schema\Joinable\Joinable; +use Civi\Api4\Utils\FormattingUtil; +use Civi\Api4\Utils\CoreUtil; +use CRM_Core_DAO_AllCoreTables as TableHelper; +use CRM_Core_DAO_CustomField as CustomFieldDAO; +use CRM_Utils_Array as UtilsArray; + +/** + * A query `node` may be in one of three formats: + * + * * leaf: [$fieldName, $operator, $criteria] + * * negated: ['NOT', $node] + * * branch: ['OR|NOT', [$node, $node, ...]] + * + * Leaf operators are one of: + * + * * '=', '<=', '>=', '>', '<', 'LIKE', "<>", "!=", + * * "NOT LIKE", 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', + * * 'IS NOT NULL', or 'IS NULL'. + */ +class Api4SelectQuery extends SelectQuery { + + /** + * @var int + */ + protected $apiVersion = 4; + + /** + * @var array + * Maps select fields to [<table_alias>, <column_alias>] + */ + protected $fkSelectAliases = []; + + /** + * @var Joinable[] + * The joinable tables that have been joined so far + */ + protected $joinedTables = []; + + /** + * @param string $entity + * @param bool $checkPermissions + */ + public function __construct($entity, $checkPermissions) { + require_once 'api/v3/utils.php'; + $this->entity = $entity; + + $baoName = CoreUtil::getDAOFromApiName($entity); + $bao = new $baoName(); + + $this->entityFieldNames = _civicrm_api3_field_names(_civicrm_api3_build_fields_array($bao)); + $this->apiFieldSpec = $this->getFields(); + + \CRM_Utils_SQL_Select::from($this->getTableName($baoName) . ' ' . self::MAIN_TABLE_ALIAS); + + // Add ACLs first to avoid redundant subclauses + $this->checkPermissions = $checkPermissions; + $this->query->where($this->getAclClause(self::MAIN_TABLE_ALIAS, $baoName)); + } + + /** + * Why walk when you can + * + * @return array|int + */ + public function run() { + $this->preRun(); + $baseResults = parent::run(); + $event = new PostSelectQueryEvent($baseResults, $this); + \Civi::dispatcher()->dispatch(Events::POST_SELECT_QUERY, $event); + + return $event->getResults(); + } + + /** + * Gets all FK fields and does the required joins + */ + protected function preRun() { + $whereFields = array_column($this->where, 0); + $allFields = array_merge($whereFields, $this->select, $this->orderBy); + $dotFields = array_unique(array_filter($allFields, function ($field) { + return strpos($field, '.') !== FALSE; + })); + + foreach ($dotFields as $dotField) { + $this->joinFK($dotField); + } + } + + /** + * Populate $this->selectFields + * + * @throws \Civi\API\Exception\UnauthorizedException + */ + protected function buildSelectFields() { + $return_all_fields = (empty($this->select) || !is_array($this->select)); + $return = $return_all_fields ? $this->entityFieldNames : $this->select; + if ($return_all_fields || in_array('custom', $this->select)) { + foreach (array_keys($this->apiFieldSpec) as $fieldName) { + if (strpos($fieldName, 'custom_') === 0) { + $return[] = $fieldName; + } + } + } + + // Always select the ID if the table has one. + if (array_key_exists('id', $this->apiFieldSpec) || strstr($this->entity, 'Custom_')) { + $this->selectFields[self::MAIN_TABLE_ALIAS . ".id"] = "id"; + } + + // core return fields + foreach ($return as $fieldName) { + $field = $this->getField($fieldName); + if ($field && in_array($field['name'], $this->entityFieldNames)) { + $this->selectFields[self::MAIN_TABLE_ALIAS . "." . UtilsArray::value('column_name', $field, $field['name'])] = $field['name']; + } + elseif (strpos($fieldName, '.')) { + $fkField = $this->addFkField($fieldName, 'LEFT'); + if ($fkField) { + $this->selectFields[implode('.', $fkField)] = $fieldName; + } + } + elseif ($field && strpos($fieldName, 'custom_') === 0) { + list($table_name, $column_name) = $this->addCustomField($field, 'LEFT'); + + if ($field['data_type'] != 'ContactReference') { + // 'ordinary' custom field. We will select the value as custom_XX. + $this->selectFields["$table_name.$column_name"] = $fieldName; + } + else { + // contact reference custom field. The ID will be stored in custom_XX_id. + // custom_XX will contain the sort name of the contact. + $this->query->join("c_$fieldName", "LEFT JOIN civicrm_contact c_$fieldName ON c_$fieldName.id = `$table_name`.`$column_name`"); + $this->selectFields["$table_name.$column_name"] = $fieldName . "_id"; + // We will call the contact table for the join c_XX. + $this->selectFields["c_$fieldName.sort_name"] = $fieldName; + } + } + } + } + + /** + * @inheritDoc + */ + protected function buildWhereClause() { + foreach ($this->where as $clause) { + $sql_clause = $this->treeWalkWhereClause($clause); + $this->query->where($sql_clause); + } + } + + /** + * @inheritDoc + */ + protected function buildOrderBy() { + foreach ($this->orderBy as $field => $dir) { + if ($dir !== 'ASC' && $dir !== 'DESC') { + throw new \API_Exception("Invalid sort direction. Cannot order by $field $dir"); + } + if ($this->getField($field)) { + $this->query->orderBy(self::MAIN_TABLE_ALIAS . '.' . $field . " $dir"); + } + // TODO: Handle joined fields, custom fields, etc. + else { + throw new \API_Exception("Invalid sort field. Cannot order by $field $dir"); + } + } + } + + /** + * Recursively validate and transform a branch or leaf clause array to SQL. + * + * @param array $clause + * @return string SQL where clause + * + * @uses validateClauseAndComposeSql() to generate the SQL etc. + * @todo if an 'and' is nested within and 'and' (or or-in-or) then should + * flatten that to be a single list of clauses. + */ + protected function treeWalkWhereClause($clause) { + switch ($clause[0]) { + case 'OR': + case 'AND': + // handle branches + if (count($clause[1]) === 1) { + // a single set so AND|OR is immaterial + return $this->treeWalkWhereClause($clause[1][0]); + } + else { + $sql_subclauses = []; + foreach ($clause[1] as $subclause) { + $sql_subclauses[] = $this->treeWalkWhereClause($subclause); + } + return '(' . implode("\n" . $clause[0], $sql_subclauses) . ')'; + } + + case 'NOT': + // If we get a group of clauses with no operator, assume AND + if (!is_string($clause[1][0])) { + $clause[1] = ['AND', $clause[1]]; + } + return 'NOT (' . $this->treeWalkWhereClause($clause[1]) . ')'; + + default: + return $this->validateClauseAndComposeSql($clause); + } + } + + /** + * Validate and transform a leaf clause array to SQL. + * @param array $clause [$fieldName, $operator, $criteria] + * @return string SQL + * @throws \API_Exception + * @throws \Exception + */ + protected function validateClauseAndComposeSql($clause) { + // Pad array for unary operators + list($key, $operator, $value) = array_pad($clause, 3, NULL); + $fieldSpec = $this->getField($key); + // derive table and column: + $table_name = NULL; + $column_name = NULL; + if (in_array($key, $this->entityFieldNames)) { + $table_name = self::MAIN_TABLE_ALIAS; + $column_name = $key; + } + elseif (strpos($key, '.') && isset($this->fkSelectAliases[$key])) { + list($table_name, $column_name) = explode('.', $this->fkSelectAliases[$key]); + } + + if (!$table_name || !$column_name) { + throw new \API_Exception("Invalid field '$key' in where clause."); + } + + FormattingUtil::formatValue($value, $fieldSpec, $this->getEntity()); + + $sql_clause = \CRM_Core_DAO::createSQLFilter("`$table_name`.`$column_name`", [$operator => $value]); + if ($sql_clause === NULL) { + throw new \API_Exception("Invalid value in where clause for field '$key'"); + } + return $sql_clause; + } + + /** + * @inheritDoc + */ + protected function getFields() { + $fields = civicrm_api4($this->entity, 'getFields', ['action' => 'get', 'includeCustom' => FALSE])->indexBy('name'); + return (array) $fields; + } + + /** + * Fetch a field from the getFields list + * + * @param string $fieldName + * + * @return string|null + */ + protected function getField($fieldName) { + if ($fieldName) { + $fieldPath = explode('.', $fieldName); + if (count($fieldPath) > 1) { + $fieldName = implode('.', array_slice($fieldPath, -2)); + } + return UtilsArray::value($fieldName, $this->apiFieldSpec); + } + return NULL; + } + + /** + * @param $key + */ + protected function joinFK($key) { + $stack = explode('.', $key); + + if (count($stack) < 2) { + return; + } + + $joiner = \Civi::container()->get('joiner'); + $pathArray = explode('.', $key); + $field = array_pop($pathArray); + $pathString = implode('.', $pathArray); + + if (!$joiner->canJoin($this, $pathString)) { + return; + } + + $joinPath = $joiner->join($this, $pathString); + /** @var Joinable $lastLink */ + $lastLink = array_pop($joinPath); + + // Cache field info for retrieval by $this->getField() + $prefix = array_pop($pathArray) . '.'; + if (!isset($this->apiFieldSpec[$prefix . $field])) { + $joinEntity = $lastLink->getEntity(); + // Custom fields are already prefixed + if ($lastLink instanceof CustomGroupJoinable) { + $prefix = ''; + } + foreach ($lastLink->getEntityFields() as $fieldObject) { + $this->apiFieldSpec[$prefix . $fieldObject->getName()] = $fieldObject->toArray() + ['entity' => $joinEntity]; + } + } + + // custom groups use aliases for field names + if ($lastLink instanceof CustomGroupJoinable) { + $field = $lastLink->getSqlColumn(); + } + + $this->fkSelectAliases[$key] = sprintf('%s.%s', $lastLink->getAlias(), $field); + } + + /** + * @param Joinable $joinable + * + * @return $this + */ + public function addJoinedTable(Joinable $joinable) { + $this->joinedTables[] = $joinable; + + return $this; + } + + /** + * @return FALSE|string + */ + public function getFrom() { + return TableHelper::getTableForClass(TableHelper::getFullName($this->entity)); + } + + /** + * @return string + */ + public function getEntity() { + return $this->entity; + } + + /** + * @return array + */ + public function getSelect() { + return $this->select; + } + + /** + * @return array + */ + public function getWhere() { + return $this->where; + } + + /** + * @return array + */ + public function getOrderBy() { + return $this->orderBy; + } + + /** + * @return mixed + */ + public function getLimit() { + return $this->limit; + } + + /** + * @return mixed + */ + public function getOffset() { + return $this->offset; + } + + /** + * @return array + */ + public function getSelectFields() { + return $this->selectFields; + } + + /** + * @return bool + */ + public function isFillUniqueFields() { + return $this->isFillUniqueFields; + } + + /** + * @return \CRM_Utils_SQL_Select + */ + public function getQuery() { + return $this->query; + } + + /** + * @return array + */ + public function getJoins() { + return $this->joins; + } + + /** + * @return array + */ + public function getApiFieldSpec() { + return $this->apiFieldSpec; + } + + /** + * @return array + */ + public function getEntityFieldNames() { + return $this->entityFieldNames; + } + + /** + * @return array + */ + public function getAclFields() { + return $this->aclFields; + } + + /** + * @return bool|string + */ + public function getCheckPermissions() { + return $this->checkPermissions; + } + + /** + * @return int + */ + public function getApiVersion() { + return $this->apiVersion; + } + + /** + * @return array + */ + public function getFkSelectAliases() { + return $this->fkSelectAliases; + } + + /** + * @return Joinable[] + */ + public function getJoinedTables() { + return $this->joinedTables; + } + + /** + * @return Joinable + */ + public function getJoinedTable($alias) { + foreach ($this->joinedTables as $join) { + if ($join->getAlias() == $alias) { + return $join; + } + } + } + + /** + * Get table name on basis of entity + * + * @param string $baoName + * + * @return void + */ + public function getTableName($baoName) { + if (strstr($this->entity, 'Custom_')) { + $this->query = \CRM_Utils_SQL_Select::from(CoreUtil::getCustomTableByName(str_replace('Custom_', '', $this->entity)) . ' ' . self::MAIN_TABLE_ALIAS); + $this->entityFieldNames = array_keys($this->apiFieldSpec); + } + else { + $bao = new $baoName(); + $this->query = \CRM_Utils_SQL_Select::from($bao->tableName() . ' ' . self::MAIN_TABLE_ALIAS); + $bao->free(); + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Relationship.php b/civicrm/ext/api4/Civi/Api4/Relationship.php new file mode 100644 index 0000000000000000000000000000000000000000..f5156b6247f8300b8120bba9bfeba730cb6b5169 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Relationship.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Relationship entity. + * + * @package Civi\Api4 + */ +class Relationship extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/RelationshipType.php b/civicrm/ext/api4/Civi/Api4/RelationshipType.php new file mode 100644 index 0000000000000000000000000000000000000000..1d90600706e1821a79fd8c2caf264a71fdc7588c --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/RelationshipType.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * RelationshipType entity. + * + * @package Civi\Api4 + */ +class RelationshipType extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php new file mode 100644 index 0000000000000000000000000000000000000000..191f4389b886cc00a8cfcaafe60f1cde5b80ef07 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php @@ -0,0 +1,40 @@ +<?php + +namespace Civi\Api4\Service\Schema\Joinable; + +class ActivityToActivityContactAssigneesJoinable extends Joinable { + /** + * @var string + */ + protected $baseTable = 'civicrm_activity'; + + /** + * @var string + */ + protected $baseColumn = 'id'; + + /** + * @param $alias + */ + public function __construct($alias) { + $optionValueTable = 'civicrm_option_value'; + $optionGroupTable = 'civicrm_option_group'; + + $subSubSelect = sprintf( + 'SELECT id FROM %s WHERE name = "%s"', + $optionGroupTable, + 'activity_contacts' + ); + + $subSelect = sprintf( + 'SELECT value FROM %s WHERE name = "%s" AND option_group_id = (%s)', + $optionValueTable, + 'Activity Assignees', + $subSubSelect + ); + + $this->addCondition(sprintf('%s.record_type_id = (%s)', $alias, $subSelect)); + parent::__construct('civicrm_activity_contact', 'activity_id', $alias); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php new file mode 100644 index 0000000000000000000000000000000000000000..370c5898559a0accf0db68c751d34eeecb8c9c63 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php @@ -0,0 +1,23 @@ +<?php + +namespace Civi\Api4\Service\Schema\Joinable; + +class BridgeJoinable extends Joinable { + /** + * @var Joinable + */ + protected $middleLink; + + public function __construct($targetTable, $targetColumn, $alias, Joinable $middleLink) { + parent::__construct($targetTable, $targetColumn, $alias); + $this->middleLink = $middleLink; + } + + /** + * @return Joinable + */ + public function getMiddleLink() { + return $this->middleLink; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php new file mode 100644 index 0000000000000000000000000000000000000000..cf6c3c86a05ec91027bc9dc8a9934408e9866f58 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php @@ -0,0 +1,55 @@ +<?php + +namespace Civi\Api4\Service\Schema\Joinable; + +use Civi\Api4\CustomField; + +class CustomGroupJoinable extends Joinable { + + /** + * @var string + */ + protected $joinSide = self::JOIN_SIDE_LEFT; + + /** + * @var string + * + * Name of the custom field column. + */ + protected $sqlColumn; + + /** + * @param $targetTable + * @param $alias + * @param bool $isMultiRecord + * @param null $entity + */ + public function __construct($targetTable, $alias, $isMultiRecord, $entity, $columnName) { + $this->entity = $entity; + $this->sqlColumn = $columnName; + parent::__construct($targetTable, 'entity_id', $alias); + $this->joinType = $isMultiRecord ? + self::JOIN_TYPE_ONE_TO_MANY : self::JOIN_TYPE_ONE_TO_ONE; + } + + public function getEntityFields() { + if (!$this->entityFields) { + $fields = CustomField::get() + ->setSelect(['custom_group.name', 'custom_group_id', 'name', 'label', 'data_type', 'html_type', 'is_required', 'is_searchable', 'is_search_range', 'weight', 'is_active', 'is_view', 'option_group_id', 'default_value']) + ->addWhere('custom_group.table_name', '=', $this->getTargetTable()) + ->execute(); + foreach ($fields as $field) { + $this->entityFields[] = \Civi\Api4\Service\Spec\SpecFormatter::arrayToField($field, $this->getEntity()); + } + } + return $this->entityFields; + } + + /** + * @return string + */ + public function getSqlColumn() { + return $this->sqlColumn; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/Joinable.php b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/Joinable.php new file mode 100644 index 0000000000000000000000000000000000000000..25c2a3753b30c0d1cf0890b86896876eb2ed2cce --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/Joinable.php @@ -0,0 +1,265 @@ +<?php + +namespace Civi\Api4\Service\Schema\Joinable; + +use Civi\Api4\Service\Spec\FieldSpec; +use CRM_Core_DAO_AllCoreTables as Tables; + +class Joinable { + + const JOIN_SIDE_LEFT = 'LEFT'; + const JOIN_SIDE_INNER = 'INNER'; + + const JOIN_TYPE_ONE_TO_ONE = '1_to_1'; + const JOIN_TYPE_MANY_TO_ONE = 'n_to_1'; + const JOIN_TYPE_ONE_TO_MANY = '1_to_n'; + + /** + * @var string + */ + protected $baseTable; + + /** + * @var string + */ + protected $baseColumn; + + /** + * @var string + */ + protected $targetTable; + + /** + * @var string + * + * Name (or alias) of the target column) + */ + protected $targetColumn; + + /** + * @var string + */ + protected $alias; + + /** + * @var array + */ + protected $conditions = []; + + /** + * @var string + */ + protected $joinSide = self::JOIN_SIDE_LEFT; + + /** + * @var int + */ + protected $joinType = self::JOIN_TYPE_ONE_TO_ONE; + + /** + * @var string + */ + protected $entity; + + /** + * @var array + */ + protected $entityFields; + + /** + * @param $targetTable + * @param $targetColumn + * @param string|null $alias + */ + public function __construct($targetTable, $targetColumn, $alias = NULL) { + $this->targetTable = $targetTable; + $this->targetColumn = $targetColumn; + if (!$this->entity) { + $this->entity = Tables::getBriefName(Tables::getClassForTable($targetTable)); + } + $this->alias = $alias ?: str_replace('civicrm_', '', $targetTable); + } + + /** + * Gets conditions required when joining to a base table + * + * @param string|null $baseTableAlias + * Name of the base table, if aliased. + * + * @return array + */ + public function getConditionsForJoin($baseTableAlias = NULL) { + $baseCondition = sprintf( + '%s.%s = %s.%s', + $baseTableAlias ?: $this->baseTable, + $this->baseColumn, + $this->getAlias(), + $this->targetColumn + ); + + return array_merge([$baseCondition], $this->conditions); + } + + /** + * @return string + */ + public function getBaseTable() { + return $this->baseTable; + } + + /** + * @param string $baseTable + * + * @return $this + */ + public function setBaseTable($baseTable) { + $this->baseTable = $baseTable; + + return $this; + } + + /** + * @return string + */ + public function getBaseColumn() { + return $this->baseColumn; + } + + /** + * @param string $baseColumn + * + * @return $this + */ + public function setBaseColumn($baseColumn) { + $this->baseColumn = $baseColumn; + + return $this; + } + + /** + * @return string + */ + public function getAlias() { + return $this->alias; + } + + /** + * @param string $alias + * + * @return $this + */ + public function setAlias($alias) { + $this->alias = $alias; + + return $this; + } + + /** + * @return string + */ + public function getTargetTable() { + return $this->targetTable; + } + + /** + * @return string + */ + public function getTargetColumn() { + return $this->targetColumn; + } + + /** + * @return string + */ + public function getEntity() { + return $this->entity; + } + + /** + * @param $condition + * + * @return $this + */ + public function addCondition($condition) { + $this->conditions[] = $condition; + + return $this; + } + + /** + * @return array + */ + public function getExtraJoinConditions() { + return $this->conditions; + } + + /** + * @param array $conditions + * + * @return $this + */ + public function setConditions($conditions) { + $this->conditions = $conditions; + + return $this; + } + + /** + * @return string + */ + public function getJoinSide() { + return $this->joinSide; + } + + /** + * @param string $joinSide + * + * @return $this + */ + public function setJoinSide($joinSide) { + $this->joinSide = $joinSide; + + return $this; + } + + /** + * @return int + */ + public function getJoinType() { + return $this->joinType; + } + + /** + * @param int $joinType + * + * @return $this + */ + public function setJoinType($joinType) { + $this->joinType = $joinType; + + return $this; + } + + /** + * @return array + */ + public function toArray() { + return get_object_vars($this); + } + + /** + * @return FieldSpec[] + */ + public function getEntityFields() { + if (!$this->entityFields) { + $bao = Tables::getClassForTable($this->getTargetTable()); + if ($bao) { + foreach ($bao::fields() as $field) { + $this->entityFields[] = \Civi\Api4\Service\Spec\SpecFormatter::arrayToField($field, $this->getEntity()); + } + } + } + return $this->entityFields; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/OptionValueJoinable.php b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/OptionValueJoinable.php new file mode 100644 index 0000000000000000000000000000000000000000..96f654881279642651bbd7f8b45a2f376bfbb968 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joinable/OptionValueJoinable.php @@ -0,0 +1,61 @@ +<?php + +namespace Civi\Api4\Service\Schema\Joinable; + +class OptionValueJoinable extends Joinable { + /** + * @var string + */ + protected $optionGroupName; + + /** + * @param string $optionGroup + * Can be either the option group name or ID + * @param string|null $alias + * The join alias + * @param string $keyColumn + * Which column to use to join, defaults to "value" + */ + public function __construct($optionGroup, $alias = NULL, $keyColumn = 'value') { + $this->optionGroupName = $optionGroup; + $optionValueTable = 'civicrm_option_value'; + + // default join alias to option group name, e.g. activity_type + if (!$alias && !is_numeric($optionGroup)) { + $alias = $optionGroup; + } + + parent::__construct($optionValueTable, $keyColumn, $alias); + + if (!is_numeric($optionGroup)) { + $subSelect = 'SELECT id FROM civicrm_option_group WHERE name = "%s"'; + $subQuery = sprintf($subSelect, $optionGroup); + $condition = sprintf('%s.option_group_id = (%s)', $alias, $subQuery); + } + else { + $condition = sprintf('%s.option_group_id = %d', $alias, $optionGroup); + } + + $this->addCondition($condition); + } + + /** + * The existing condition must also be re-aliased + * + * @param string $alias + * + * @return $this + */ + public function setAlias($alias) { + foreach ($this->conditions as $index => $condition) { + $search = $this->alias . '.'; + $replace = $alias . '.'; + $this->conditions[$index] = str_replace($search, $replace, $condition); + } + + parent::setAlias($alias); + + return $this; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Schema/Joiner.php b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joiner.php new file mode 100644 index 0000000000000000000000000000000000000000..cb30ab5703c025e676bbbb59b7f609920e063956 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Schema/Joiner.php @@ -0,0 +1,98 @@ +<?php + +namespace Civi\Api4\Service\Schema; + +use Civi\Api4\Query\Api4SelectQuery; +use Civi\Api4\Service\Schema\Joinable\Joinable; + +class Joiner { + /** + * @var SchemaMap + */ + protected $schemaMap; + + /** + * @var Joinable[][] + */ + protected $cache = []; + + /** + * @param SchemaMap $schemaMap + */ + public function __construct(SchemaMap $schemaMap) { + $this->schemaMap = $schemaMap; + } + + /** + * @param Api4SelectQuery $query + * The query object to do the joins on + * @param string $joinPath + * A path of aliases in dot notation, e.g. contact.phone + * @param string $side + * Can be LEFT or INNER + * + * @throws \Exception + * @return Joinable[] + * The path used to make the join + */ + public function join(Api4SelectQuery $query, $joinPath, $side = 'LEFT') { + $fullPath = $this->getPath($query->getFrom(), $joinPath); + $baseTable = $query::MAIN_TABLE_ALIAS; + + foreach ($fullPath as $link) { + $target = $link->getTargetTable(); + $alias = $link->getAlias(); + $conditions = $link->getConditionsForJoin($baseTable); + + $query->join($side, $target, $alias, $conditions); + $query->addJoinedTable($link); + + $baseTable = $link->getAlias(); + } + + return $fullPath; + } + + /** + * @param Api4SelectQuery $query + * @param $joinPath + * + * @return bool + */ + public function canJoin(Api4SelectQuery $query, $joinPath) { + return !empty($this->getPath($query->getFrom(), $joinPath)); + } + + /** + * @param string $baseTable + * @param string $joinPath + * + * @return array + * @throws \Exception + */ + protected function getPath($baseTable, $joinPath) { + $cacheKey = sprintf('%s.%s', $baseTable, $joinPath); + if (!isset($this->cache[$cacheKey])) { + $stack = explode('.', $joinPath); + $fullPath = []; + + foreach ($stack as $key => $targetAlias) { + $links = $this->schemaMap->getPath($baseTable, $targetAlias); + + if (empty($links)) { + throw new \Exception(sprintf('Cannot join %s to %s', $baseTable, $targetAlias)); + } + else { + $fullPath = array_merge($fullPath, $links); + $lastLink = end($links); + $baseTable = $lastLink->getTargetTable(); + } + } + + $this->cache[$cacheKey] = $fullPath; + } + + return $this->cache[$cacheKey]; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Schema/SchemaMap.php b/civicrm/ext/api4/Civi/Api4/Service/Schema/SchemaMap.php new file mode 100644 index 0000000000000000000000000000000000000000..3989afeb4ec3fb95ebc0a3d3dd23082303ddec3f --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Schema/SchemaMap.php @@ -0,0 +1,140 @@ +<?php + +namespace Civi\Api4\Service\Schema; + +use Civi\Api4\Service\Schema\Joinable\BridgeJoinable; +use Civi\Api4\Service\Schema\Joinable\Joinable; + +class SchemaMap { + + const MAX_JOIN_DEPTH = 3; + + /** + * @var Table[] + */ + protected $tables = []; + + /** + * @param $baseTableName + * @param $targetTableAlias + * + * @return Joinable[] + * Array of links to the target table, empty if no path found + */ + public function getPath($baseTableName, $targetTableAlias) { + $table = $this->getTableByName($baseTableName); + $path = []; + + if (!$table) { + return $path; + } + + $this->findPaths($table, $targetTableAlias, 1, $path); + + foreach ($path as $index => $pathLink) { + if ($pathLink instanceof BridgeJoinable) { + $start = array_slice($path, 0, $index); + $middle = [$pathLink->getMiddleLink()]; + $end = array_slice($path, $index, count($path) - $index); + $path = array_merge($start, $middle, $end); + } + } + + return $path; + } + + /** + * @return Table[] + */ + public function getTables() { + return $this->tables; + } + + /** + * @param $name + * + * @return Table|null + */ + public function getTableByName($name) { + foreach ($this->tables as $table) { + if ($table->getName() === $name) { + return $table; + } + } + + return NULL; + } + + /** + * Adds a table to the schema map if it has not already been added + * + * @param Table $table + * + * @return $this + */ + public function addTable(Table $table) { + if (!$this->getTableByName($table->getName())) { + $this->tables[] = $table; + } + + return $this; + } + + /** + * @param array $tables + */ + public function addTables(array $tables) { + foreach ($tables as $table) { + $this->addTable($table); + } + } + + /** + * Recursive function to traverse the schema looking for a path + * + * @param Table $table + * The current table to base fromm + * @param string $target + * The target joinable table alias + * @param int $depth + * The current level of recursion which reflects the number of joins needed + * @param Joinable[] $path + * (By-reference) The possible paths to the target table + * @param Joinable[] $currentPath + * For internal use only to track the path to reach the target table + */ + private function findPaths(Table $table, $target, $depth, &$path, $currentPath = [] + ) { + static $visited = []; + + // reset if new call + if ($depth === 1) { + $visited = []; + } + + $canBeShorter = empty($path) || count($currentPath) + 1 < count($path); + $tooFar = $depth > self::MAX_JOIN_DEPTH; + $beenHere = in_array($table->getName(), $visited); + + if ($tooFar || $beenHere || !$canBeShorter) { + return; + } + + // prevent circular reference + $visited[] = $table->getName(); + + foreach ($table->getExternalLinks() as $link) { + if ($link->getAlias() === $target) { + $path = array_merge($currentPath, [$link]); + } + else { + $linkTable = $this->getTableByName($link->getTargetTable()); + if ($linkTable) { + $nextStep = array_merge($currentPath, [$link]); + $this->findPaths($linkTable, $target, $depth + 1, $path, $nextStep); + } + } + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/civicrm/ext/api4/Civi/Api4/Service/Schema/SchemaMapBuilder.php new file mode 100644 index 0000000000000000000000000000000000000000..aeb3f4c63f6546221f7e3872b0efa4646e1d0d10 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Schema/SchemaMapBuilder.php @@ -0,0 +1,208 @@ +<?php + +namespace Civi\Api4\Service\Schema; + +use Civi\Api4\Entity; +use Civi\Api4\Event\Events; +use Civi\Api4\Event\SchemaMapBuildEvent; +use Civi\Api4\Service\Schema\Joinable\CustomGroupJoinable; +use Civi\Api4\Service\Schema\Joinable\Joinable; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Civi\Api4\Service\Schema\Joinable\OptionValueJoinable; +use CRM_Core_DAO_AllCoreTables as TableHelper; +use CRM_Utils_Array as UtilsArray; + +class SchemaMapBuilder { + /** + * @var EventDispatcherInterface + */ + protected $dispatcher; + /** + * @var array + */ + protected $apiEntities; + + /** + * @param EventDispatcherInterface $dispatcher + */ + public function __construct(EventDispatcherInterface $dispatcher) { + $this->dispatcher = $dispatcher; + $this->apiEntities = array_keys((array) Entity::get()->addSelect('name')->execute()->indexBy('name')); + } + + /** + * @return SchemaMap + */ + public function build() { + $map = new SchemaMap(); + $this->loadTables($map); + + $event = new SchemaMapBuildEvent($map); + $this->dispatcher->dispatch(Events::SCHEMA_MAP_BUILD, $event); + + return $map; + } + + /** + * Add all tables and joins + * + * @param SchemaMap $map + */ + private function loadTables(SchemaMap $map) { + /** @var \CRM_Core_DAO $daoName */ + foreach (TableHelper::get() as $daoName => $data) { + $table = new Table($data['table']); + foreach ($daoName::fields() as $field => $fieldData) { + $this->addJoins($table, $field, $fieldData); + } + $map->addTable($table); + if (in_array($data['name'], $this->apiEntities)) { + $this->addCustomFields($map, $table, $data['name']); + } + } + + $this->addBackReferences($map); + } + + /** + * @param Table $table + * @param string $field + * @param array $data + */ + private function addJoins(Table $table, $field, array $data) { + $fkClass = UtilsArray::value('FKClassName', $data); + + // can there be multiple methods e.g. pseudoconstant and fkclass + if ($fkClass) { + $tableName = TableHelper::getTableForClass($fkClass); + $fkKey = UtilsArray::value('FKKeyColumn', $data, 'id'); + $alias = str_replace('_id', '', $field); + $joinable = new Joinable($tableName, $fkKey, $alias); + $joinable->setJoinType($joinable::JOIN_TYPE_MANY_TO_ONE); + $table->addTableLink($field, $joinable); + } + elseif (UtilsArray::value('pseudoconstant', $data)) { + $this->addPseudoConstantJoin($table, $field, $data); + } + } + + /** + * @param Table $table + * @param string $field + * @param array $data + */ + private function addPseudoConstantJoin(Table $table, $field, array $data) { + $pseudoConstant = UtilsArray::value('pseudoconstant', $data); + $tableName = UtilsArray::value('table', $pseudoConstant); + $optionGroupName = UtilsArray::value('optionGroupName', $pseudoConstant); + $keyColumn = UtilsArray::value('keyColumn', $pseudoConstant, 'id'); + + if ($tableName) { + $alias = str_replace('civicrm_', '', $tableName); + $joinable = new Joinable($tableName, $keyColumn, $alias); + $condition = UtilsArray::value('condition', $pseudoConstant); + if ($condition) { + $joinable->addCondition($condition); + } + $table->addTableLink($field, $joinable); + } + elseif ($optionGroupName) { + $keyColumn = UtilsArray::value('keyColumn', $pseudoConstant, 'value'); + $joinable = new OptionValueJoinable($optionGroupName, NULL, $keyColumn); + + if (!empty($data['serialize'])) { + $joinable->setJoinType($joinable::JOIN_TYPE_ONE_TO_MANY); + } + + $table->addTableLink($field, $joinable); + } + } + + /** + * Loop through existing links and provide link from the other side + * + * @param SchemaMap $map + */ + private function addBackReferences(SchemaMap $map) { + foreach ($map->getTables() as $table) { + foreach ($table->getTableLinks() as $link) { + // there are too many possible joins from option value so skip + if ($link instanceof OptionValueJoinable) { + continue; + } + + $target = $map->getTableByName($link->getTargetTable()); + $tableName = $link->getBaseTable(); + $plural = str_replace('civicrm_', '', $this->getPlural($tableName)); + $joinable = new Joinable($tableName, $link->getBaseColumn(), $plural); + $joinable->setJoinType($joinable::JOIN_TYPE_ONE_TO_MANY); + $target->addTableLink($link->getTargetColumn(), $joinable); + } + } + } + + /** + * Simple implementation of pluralization. + * Could be replaced with symfony/inflector + * + * @param string $singular + * + * @return string + */ + private function getPlural($singular) { + $last_letter = substr($singular, -1); + switch ($last_letter) { + case 'y': + return substr($singular, 0, -1) . 'ies'; + + case 's': + return $singular . 'es'; + + default: + return $singular . 's'; + } + } + + /** + * @param \Civi\Api4\Service\Schema\SchemaMap $map + * @param \Civi\Api4\Service\Schema\Table $baseTable + * @param string $entity + */ + private function addCustomFields(SchemaMap $map, Table $baseTable, $entity) { + // Don't be silly + if (!array_key_exists($entity, \CRM_Core_SelectValues::customGroupExtends())) { + return; + } + $queryEntity = (array) $entity; + if ($entity == 'Contact') { + $queryEntity = ['Contact', 'Individual', 'Organization', 'Household']; + } + $fieldData = \CRM_Utils_SQL_Select::from('civicrm_custom_field f') + ->join('custom_group', 'INNER JOIN civicrm_custom_group g ON g.id = f.custom_group_id') + ->select(['g.name as custom_group_name', 'g.table_name', 'g.is_multiple', 'f.name', 'label', 'column_name', 'option_group_id']) + ->where('g.extends IN (@entity)', ['@entity' => $queryEntity]) + ->where('g.is_active') + ->execute(); + + while ($fieldData->fetch()) { + $tableName = $fieldData->table_name; + + $customTable = $map->getTableByName($tableName); + if (!$customTable) { + $customTable = new Table($tableName); + } + + if (!empty($fieldData->option_group_id)) { + $optionValueJoinable = new OptionValueJoinable($fieldData->option_group_id, $fieldData->label); + $customTable->addTableLink($fieldData->column_name, $optionValueJoinable); + } + + $map->addTable($customTable); + $alias = $fieldData->custom_group_name; + $isMultiple = !empty($fieldData->is_multiple); + $joinable = new CustomGroupJoinable($tableName, $alias, $isMultiple, $entity, $fieldData->column_name); + $baseTable->addTableLink('id', $joinable); + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Schema/Table.php b/civicrm/ext/api4/Civi/Api4/Service/Schema/Table.php new file mode 100644 index 0000000000000000000000000000000000000000..1f464a45d2a5c26ad28d1cbf4843c45972acf5d4 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Schema/Table.php @@ -0,0 +1,128 @@ +<?php + +namespace Civi\Api4\Service\Schema; + +use Civi\Api4\Service\Schema\Joinable\Joinable; + +class Table { + + /** + * @var string + */ + protected $name; + + /** + * @var Joinable[] + * Array of links to other tables + */ + protected $tableLinks = []; + + /** + * @param $name + */ + public function __construct($name) { + $this->name = $name; + } + + /** + * @return string + */ + public function getName() { + return $this->name; + } + + /** + * @param string $name + * + * @return $this + */ + public function setName($name) { + $this->name = $name; + + return $this; + } + + /** + * @return Joinable[] + */ + public function getTableLinks() { + return $this->tableLinks; + } + + /** + * @return Joinable[] + * Only those links that are not joining the table to itself + */ + public function getExternalLinks() { + return array_filter($this->tableLinks, function (Joinable $joinable) { + return $joinable->getTargetTable() !== $this->getName(); + }); + } + + /** + * @param Joinable $linkToRemove + */ + public function removeLink(Joinable $linkToRemove) { + foreach ($this->tableLinks as $index => $link) { + if ($link === $linkToRemove) { + unset($this->tableLinks[$index]); + } + } + } + + /** + * @param string $baseColumn + * @param Joinable $joinable + * + * @return $this + */ + public function addTableLink($baseColumn, Joinable $joinable) { + $target = $joinable->getTargetTable(); + $targetCol = $joinable->getTargetColumn(); + $alias = $joinable->getAlias(); + + if (!$this->hasLink($target, $targetCol, $alias)) { + if (!$joinable->getBaseTable()) { + $joinable->setBaseTable($this->getName()); + } + if (!$joinable->getBaseColumn()) { + $joinable->setBaseColumn($baseColumn); + } + $this->tableLinks[] = $joinable; + } + + return $this; + } + + /** + * @param mixed $tableLinks + * + * @return $this + */ + public function setTableLinks($tableLinks) { + $this->tableLinks = $tableLinks; + + return $this; + } + + /** + * @param $target + * @param $targetCol + * @param $alias + * + * @return bool + */ + private function hasLink($target, $targetCol, $alias) { + foreach ($this->tableLinks as $link) { + if ($link->getTargetTable() === $target + && $link->getTargetColumn() === $targetCol + && $link->getAlias() === $alias + ) { + return TRUE; + } + } + + return FALSE; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/CustomFieldSpec.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/CustomFieldSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..2c68934426fae6579671f242f515f253c3056ca9 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/CustomFieldSpec.php @@ -0,0 +1,118 @@ +<?php + +namespace Civi\Api4\Service\Spec; + +class CustomFieldSpec extends FieldSpec { + /** + * @var int + */ + protected $customFieldId; + + /** + * @var int + */ + protected $customGroup; + + /** + * @var string + */ + protected $tableName; + + /** + * @var string + */ + protected $columnName; + + /** + * @inheritDoc + */ + public function setDataType($dataType) { + switch ($dataType) { + case 'ContactReference': + $this->setFkEntity('Contact'); + $dataType = 'Integer'; + break; + + case 'File': + case 'StateProvince': + case 'Country': + $this->setFkEntity($dataType); + $dataType = 'Integer'; + break; + } + return parent::setDataType($dataType); + } + + /** + * @return int + */ + public function getCustomFieldId() { + return $this->customFieldId; + } + + /** + * @param int $customFieldId + * + * @return $this + */ + public function setCustomFieldId($customFieldId) { + $this->customFieldId = $customFieldId; + + return $this; + } + + /** + * @return int + */ + public function getCustomGroupName() { + return $this->customGroup; + } + + /** + * @param string $customGroupName + * + * @return $this + */ + public function setCustomGroupName($customGroupName) { + $this->customGroup = $customGroupName; + + return $this; + } + + /** + * @return string + */ + public function getCustomTableName() { + return $this->tableName; + } + + /** + * @param string $customFieldColumnName + * + * @return $this + */ + public function setCustomTableName($customFieldColumnName) { + $this->tableName = $customFieldColumnName; + + return $this; + } + + /** + * @return string + */ + public function getCustomFieldColumnName() { + return $this->columnName; + } + + /** + * @param string $customFieldColumnName + * + * @return $this + */ + public function setCustomFieldColumnName($customFieldColumnName) { + $this->columnName = $customFieldColumnName; + + return $this; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/FieldSpec.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/FieldSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..943d7aebee59c402a36578e9f06a8da2869a601f --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/FieldSpec.php @@ -0,0 +1,297 @@ +<?php + +namespace Civi\Api4\Service\Spec; + +use Civi\Api4\Utils\CoreUtil; + +class FieldSpec { + /** + * @var mixed + */ + protected $defaultValue; + + /** + * @var string + */ + protected $name; + + /** + * @var string + */ + protected $title; + + /** + * @var string + */ + protected $entity; + + /** + * @var string + */ + protected $description; + + /** + * @var bool + */ + protected $required = FALSE; + + /** + * @var array|boolean + */ + protected $options; + + /** + * @var string + */ + protected $dataType; + + /** + * @var string + */ + protected $fkEntity; + + /** + * @var int + */ + protected $serialize; + + /** + * Aliases for the valid data types + * + * @var array + */ + public static $typeAliases = [ + 'Int' => 'Integer', + 'Link' => 'Url', + 'Memo' => 'Text', + ]; + + /** + * @param string $name + * @param string $entity + * @param string $dataType + */ + public function __construct($name, $entity, $dataType = 'String') { + $this->entity = $entity; + $this->setName($name); + $this->setDataType($dataType); + } + + /** + * @return mixed + */ + public function getDefaultValue() { + return $this->defaultValue; + } + + /** + * @param mixed $defaultValue + * + * @return $this + */ + public function setDefaultValue($defaultValue) { + $this->defaultValue = $defaultValue; + + return $this; + } + + /** + * @return string + */ + public function getName() { + return $this->name; + } + + /** + * @param string $name + * + * @return $this + */ + public function setName($name) { + $this->name = $name; + + return $this; + } + + /** + * @return string + */ + public function getTitle() { + return $this->title; + } + + /** + * @param string $title + * + * @return $this + */ + public function setTitle($title) { + $this->title = $title; + + return $this; + } + + /** + * @return string + */ + public function getEntity() { + return $this->entity; + } + + /** + * @return string + */ + public function getDescription() { + return $this->description; + } + + /** + * @param string $description + * + * @return $this + */ + public function setDescription($description) { + $this->description = $description; + + return $this; + } + + /** + * @return bool + */ + public function isRequired() { + return $this->required; + } + + /** + * @param bool $required + * + * @return $this + */ + public function setRequired($required) { + $this->required = $required; + + return $this; + } + + /** + * @return string + */ + public function getDataType() { + return $this->dataType; + } + + /** + * @param $dataType + * + * @return $this + * @throws \Exception + */ + public function setDataType($dataType) { + if (array_key_exists($dataType, self::$typeAliases)) { + $dataType = self::$typeAliases[$dataType]; + } + + if (!in_array($dataType, $this->getValidDataTypes())) { + throw new \Exception(sprintf('Invalid data type "%s', $dataType)); + } + + $this->dataType = $dataType; + + return $this; + } + + /** + * @return int + */ + public function getSerialize() { + return $this->serialize; + } + + /** + * @param int|null $serialize + */ + public function setSerialize($serialize) { + $this->serialize = $serialize; + } + + /** + * Add valid types that are not not part of \CRM_Utils_Type::dataTypes + * + * @return array + */ + private function getValidDataTypes() { + $extraTypes = ['Boolean', 'Text', 'Float', 'Url']; + $extraTypes = array_combine($extraTypes, $extraTypes); + + return array_merge(\CRM_Utils_Type::dataTypes(), $extraTypes); + } + + /** + * @return array + */ + public function getOptions() { + if (!isset($this->options) || $this->options === TRUE) { + $fieldName = $this->getName(); + + if ($this instanceof CustomFieldSpec) { + // buildOptions relies on the custom_* type of field names + $fieldName = sprintf('custom_%d', $this->getCustomFieldId()); + } + + $dao = CoreUtil::getDAOFromApiName($this->getEntity()); + $options = $dao::buildOptions($fieldName); + + if (!is_array($options) || !$options) { + $options = FALSE; + } + + $this->setOptions($options); + } + return $this->options; + } + + /** + * @param array|bool $options + * + * @return $this + */ + public function setOptions($options) { + $this->options = $options; + return $this; + } + + /** + * @return string + */ + public function getFkEntity() { + return $this->fkEntity; + } + + /** + * @param string $fkEntity + * + * @return $this + */ + public function setFkEntity($fkEntity) { + $this->fkEntity = $fkEntity; + + return $this; + } + + /** + * @param array $values + * @return array + */ + public function toArray($values = []) { + $ret = []; + foreach (get_object_vars($this) as $key => $val) { + $key = strtolower(preg_replace('/(?=[A-Z])/', '_$0', $key)); + if (!$values || in_array($key, $values)) { + $ret[$key] = $val; + } + } + return $ret; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..dc254342cb0dba1012bb50aa4ec97aa3b3a822cb --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php @@ -0,0 +1,27 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; + +class ActivityCreationSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $sourceContactField = new FieldSpec('source_contact_id', 'Activity', 'Integer'); + $sourceContactField->setRequired(TRUE); + $sourceContactField->setFkEntity('Contact'); + + $spec->addFieldSpec($sourceContactField); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Activity' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..afba9c79d64a5da877e0b9c2116048e68b371025 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php @@ -0,0 +1,29 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; + + +class AddressCreationSpecProvider implements SpecProviderInterface { + + /** + * @param RequestSpec $spec + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('contact_id')->setRequired(TRUE); + $spec->getFieldByName('location_type_id')->setRequired(TRUE); + } + + /** + * @param string $entity + * @param string $action + * + * @return bool + */ + public function applies($entity, $action) { + return $entity === 'Address' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..94c68d9d093a998988487619b125721d69976086 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php @@ -0,0 +1,32 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class ContactCreationSpecProvider implements SpecProviderInterface { + + /** + * @param RequestSpec $spec + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('contact_type') + ->setRequired(TRUE) + ->setDefaultValue('Individual'); + + $spec->getFieldByName('is_opt_out')->setRequired(FALSE); + $spec->getFieldByName('is_deleted')->setRequired(FALSE); + + } + + /** + * @param string $entity + * @param string $action + * + * @return bool + */ + public function applies($entity, $action) { + return $entity === 'Contact' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ContactTypeCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ContactTypeCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..f55deb1c1eaf04d1a9b2fa84587d405d6dc59fe6 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ContactTypeCreationSpecProvider.php @@ -0,0 +1,29 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class ContactTypeCreationSpecProvider implements SpecProviderInterface { + + /** + * @param RequestSpec $spec + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('label')->setRequired(TRUE); + $spec->getFieldByName('name')->setRequired(TRUE); + $spec->getFieldByName('parent_id')->setRequired(TRUE); + + } + + /** + * @param string $entity + * @param string $action + * + * @return bool + */ + public function applies($entity, $action) { + return $entity === 'ContactType' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..14861871e1c2bb02402634a98daff40454daa8e0 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php @@ -0,0 +1,23 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class ContributionCreationSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('financial_type_id')->setRequired(TRUE); + $spec->getFieldByName('receive_date')->setDefaultValue('now'); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Contribution' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..cd033754e9c47f9035149a9fa8338f64b6ef82f6 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php @@ -0,0 +1,22 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class CustomGroupCreationSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + return $spec->getFieldByName('extends')->setRequired(TRUE); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'CustomGroup' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..b69d6df11d70198228cf86e559e650b2d968872d --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php @@ -0,0 +1,49 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; + +class CustomValueSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $action = $spec->getAction(); + $extraFields = [ + 'id' => [ + 'required' => ($action === 'update'), + 'title' => ts('Custom Table Unique ID'), + 'fk_entity' => NULL, + ], + 'entity_id' => [ + 'required' => ($action === 'create'), + 'title' => ts('Entity ID'), + 'fk_entity' => 'Contact', + ], + ]; + foreach ($extraFields as $name => $field) { + // Do not add id field on create action + if ('create' === $action && 'id' === $name) { + continue; + } + $fieldSpec = new FieldSpec($name, $spec->getEntity(), 'Integer'); + $fieldSpec->setTitle($field['title']); + $fieldSpec->setRequired($field['required']); + if (!empty($field['fk_entity'])) { + $fieldSpec->setFkEntity($field['fk_entity']); + } + + $spec->addFieldSpec($fieldSpec); + } + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return strstr($entity, 'Custom_'); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..136b0e54025a8fbf82b6bb1d117c1427caec0d85 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php @@ -0,0 +1,25 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class EmailCreationSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('contact_id')->setRequired(TRUE); + $spec->getFieldByName('email')->setRequired(TRUE); + $spec->getFieldByName('on_hold')->setRequired(FALSE); + $spec->getFieldByName('is_bulkmail')->setRequired(FALSE); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Email' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..42b74a6f7502aba7494ffc02905d89693f83dc63 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php @@ -0,0 +1,22 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class EventCreationSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('is_template')->setRequired(FALSE); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Event' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/GroupCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/GroupCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..8af69a0a5335699cbeea565fd2848fc53987c61a --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/GroupCreationSpecProvider.php @@ -0,0 +1,22 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class GroupCreationSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('title')->setRequired(TRUE); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Group' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/NavigationCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/NavigationCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..7d5fc2707f2c2facf800d221bbce43ce211e0fb7 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/NavigationCreationSpecProvider.php @@ -0,0 +1,22 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class NavigationCreationSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('domain_id')->setRequired(FALSE); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Navigation' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/OptionValueCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/OptionValueCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..4ea634c189e48980f7a26f343d9b9b01833d149f --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/OptionValueCreationSpecProvider.php @@ -0,0 +1,23 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class OptionValueCreationSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('weight')->setRequired(FALSE); + $spec->getFieldByName('value')->setRequired(FALSE); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'OptionValue' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/PhoneCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/PhoneCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..bb757d439076166565263f3f498b5cdfe67cf971 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/PhoneCreationSpecProvider.php @@ -0,0 +1,24 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +class PhoneCreationSpecProvider implements SpecProviderInterface { + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('contact_id')->setRequired(TRUE); + $spec->getFieldByName('location_type_id')->setRequired(TRUE); + $spec->getFieldByName('phone')->setRequired(TRUE); + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'Phone' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/SpecProviderInterface.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/SpecProviderInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..8be77e68bed253c6ee6407c3ca1faf06e8513165 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/SpecProviderInterface.php @@ -0,0 +1,23 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + +interface SpecProviderInterface { + /** + * @param RequestSpec $spec + * + * @return void + */ + public function modifySpec(RequestSpec $spec); + + /** + * @param string $entity + * @param string $action + * + * @return bool + */ + public function applies($entity, $action); + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/RequestSpec.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/RequestSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..2f497ef5e849af6254459987f3f07c17b2952304 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/RequestSpec.php @@ -0,0 +1,101 @@ +<?php + +namespace Civi\Api4\Service\Spec; + +class RequestSpec { + + /** + * @var string + */ + protected $entity; + + /** + * @var string + */ + protected $action; + + /** + * @var FieldSpec[] + */ + protected $fields = []; + + /** + * @param string $entity + * @param string $action + */ + public function __construct($entity, $action) { + $this->entity = $entity; + $this->action = $action; + } + + public function addFieldSpec(FieldSpec $field) { + $this->fields[] = $field; + } + + /** + * @param $name + * + * @return FieldSpec|null + */ + public function getFieldByName($name) { + foreach ($this->fields as $field) { + if ($field->getName() === $name) { + return $field; + } + } + + return NULL; + } + + /** + * @return array + * Gets all the field names currently part of the specification + */ + public function getFieldNames() { + return array_map(function(FieldSpec $field) { + return $field->getName(); + }, $this->fields); + } + + /** + * @return array|FieldSpec[] + */ + public function getRequiredFields() { + return array_filter($this->fields, function (FieldSpec $field) { + return $field->isRequired(); + }); + } + + /** + * @param array $fieldNames + * Optional array of fields to return + * @return FieldSpec[] + */ + public function getFields($fieldNames = NULL) { + if (!$fieldNames) { + return $this->fields; + } + $fields = []; + foreach ($this->fields as $field) { + if (in_array($field->getName(), $fieldNames)) { + $fields[] = $field; + } + } + return $fields; + } + + /** + * @return string + */ + public function getEntity() { + return $this->entity; + } + + /** + * @return string + */ + public function getAction() { + return $this->action; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/SpecFormatter.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/SpecFormatter.php new file mode 100644 index 0000000000000000000000000000000000000000..474e20d81891cda8229ff5e6555e23a775edbcc1 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/SpecFormatter.php @@ -0,0 +1,118 @@ +<?php + +namespace Civi\Api4\Service\Spec; + +use CRM_Utils_Array as ArrayHelper; +use CRM_Core_DAO_AllCoreTables as TableHelper; + +class SpecFormatter { + /** + * @param FieldSpec[] $fields + * @param array $return + * @param bool $includeFieldOptions + * + * @return array + */ + public static function specToArray($fields, $return = [], $includeFieldOptions = FALSE) { + $fieldArray = []; + + foreach ($fields as $field) { + if ($includeFieldOptions || in_array('options', $return)) { + $field->getOptions(); + } + $fieldArray[$field->getName()] = $field->toArray($return); + } + + return $fieldArray; + } + + /** + * @param array $data + * @param string $entity + * + * @return FieldSpec + */ + public static function arrayToField(array $data, $entity) { + $dataTypeName = self::getDataType($data); + + if (!empty($data['custom_group_id'])) { + $field = new CustomFieldSpec($data['name'], $entity, $dataTypeName); + if (strpos($entity, 'Custom_') !== 0) { + $field->setName($data['custom_group']['name'] . '.' . $data['name']); + } + else { + $field->setCustomTableName($data['custom_group']['table_name']); + $field->setCustomFieldColumnName($data['column_name']); + } + $field->setCustomFieldId(ArrayHelper::value('id', $data)); + $field->setCustomGroupName($data['custom_group']['name']); + $field->setRequired((bool) ArrayHelper::value('is_required', $data, FALSE)); + $field->setTitle(ArrayHelper::value('label', $data)); + $field->setOptions(self::customFieldHasOptions($data)); + if (\CRM_Core_BAO_CustomField::isSerialized($data)) { + $field->setSerialize(\CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND); + } + } + else { + $name = ArrayHelper::value('name', $data); + $field = new FieldSpec($name, $entity, $dataTypeName); + $field->setRequired((bool) ArrayHelper::value('required', $data, FALSE)); + $field->setTitle(ArrayHelper::value('title', $data)); + $field->setOptions(!empty($data['pseudoconstant'])); + $field->setSerialize(ArrayHelper::value('serialize', $data)); + } + + $field->setDefaultValue(ArrayHelper::value('default', $data)); + $field->setDescription(ArrayHelper::value('description', $data)); + + $fkAPIName = ArrayHelper::value('FKApiName', $data); + $fkClassName = ArrayHelper::value('FKClassName', $data); + if ($fkAPIName || $fkClassName) { + $field->setFkEntity($fkAPIName ?: TableHelper::getBriefName($fkClassName)); + } + + return $field; + } + + /** + * Does this custom field have options + * + * @param array $field + * @return bool + */ + private static function customFieldHasOptions($field) { + // This will include boolean fields with Yes/No options. + if (in_array($field['html_type'], ['Radio', 'CheckBox'])) { + return TRUE; + } + // Do this before the "Select" string search because date fields have a "Select Date" html_type + // and contactRef fields have an "Autocomplete-Select" html_type - contacts are an FK not an option list. + if (in_array($field['data_type'], ['ContactReference', 'Date'])) { + return FALSE; + } + if (strpos($field['html_type'], 'Select')) { + return TRUE; + } + return !empty($field['option_group_id']); + } + + /** + * Get the data type from an array. Defaults to 'data_type' with fallback to + * mapping for the integer value 'type' + * + * @param array $data + * + * @return string + */ + private static function getDataType(array $data) { + if (isset($data['data_type'])) { + return $data['data_type']; + } + + $dataTypeInt = ArrayHelper::value('type', $data); + $dataTypeName = \CRM_Utils_Type::typeToString($dataTypeInt); + + return $dataTypeName; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/SpecGatherer.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/SpecGatherer.php new file mode 100644 index 0000000000000000000000000000000000000000..b845c886fc317a11f5e368c826bed8c2c4bb9f3f --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/SpecGatherer.php @@ -0,0 +1,125 @@ +<?php + +namespace Civi\Api4\Service\Spec; + +use Civi\Api4\CustomField; +use Civi\Api4\Service\Spec\Provider\SpecProviderInterface; +use Civi\Api4\Utils\CoreUtil; + +class SpecGatherer { + + /** + * @var SpecProviderInterface[] + */ + protected $specProviders = []; + + /** + * A cache of DAOs based on entity + * + * @var \CRM_Core_DAO[] + */ + protected $DAONames; + + /** + * Returns a RequestSpec with all the fields available. Uses spec providers + * to add or modify field specifications. + * For an example @see CustomFieldSpecProvider. + * + * @param string $entity + * @param string $action + * @param $includeCustom + * + * @return \Civi\Api4\Service\Spec\RequestSpec + */ + public function getSpec($entity, $action, $includeCustom) { + $specification = new RequestSpec($entity, $action); + + // Real entities + if (strpos($entity, 'Custom_') !== 0) { + $this->addDAOFields($entity, $action, $specification); + if ($includeCustom && array_key_exists($entity, \CRM_Core_SelectValues::customGroupExtends())) { + $this->addCustomFields($entity, $specification); + } + } + // Custom pseudo-entities + else { + $this->getCustomGroupFields(substr($entity, 7), $specification); + } + + foreach ($this->specProviders as $provider) { + if ($provider->applies($entity, $action)) { + $provider->modifySpec($specification); + } + } + + return $specification; + } + + /** + * @param SpecProviderInterface $provider + */ + public function addSpecProvider(SpecProviderInterface $provider) { + $this->specProviders[] = $provider; + } + + /** + * @param string $entity + * @param RequestSpec $specification + */ + private function addDAOFields($entity, $action, RequestSpec $specification) { + $DAOFields = $this->getDAOFields($entity); + + foreach ($DAOFields as $DAOField) { + if ($DAOField['name'] == 'id' && $action == 'create') { + continue; + } + $field = SpecFormatter::arrayToField($DAOField, $entity); + $specification->addFieldSpec($field); + } + } + + /** + * @param string $entity + * @param RequestSpec $specification + */ + private function addCustomFields($entity, RequestSpec $specification) { + $extends = ($entity == 'Contact') ? ['Contact', 'Individual', 'Organization', 'Household'] : [$entity]; + $customFields = CustomField::get() + ->addWhere('custom_group.extends', 'IN', $extends) + ->setSelect(['custom_group.name', 'custom_group_id', 'name', 'label', 'data_type', 'html_type', 'is_required', 'is_searchable', 'is_search_range', 'weight', 'is_active', 'is_view', 'option_group_id', 'default_value']) + ->execute(); + + foreach ($customFields as $fieldArray) { + $field = SpecFormatter::arrayToField($fieldArray, $entity); + $specification->addFieldSpec($field); + } + } + + /** + * @param string $customGroup + * @param RequestSpec $specification + */ + private function getCustomGroupFields($customGroup, RequestSpec $specification) { + $customFields = CustomField::get() + ->addWhere('custom_group.name', '=', $customGroup) + ->setSelect(['custom_group.name', 'custom_group_id', 'name', 'label', 'data_type', 'html_type', 'is_required', 'is_searchable', 'is_search_range', 'weight', 'is_active', 'is_view', 'option_group_id', 'default_value', 'custom_group.table_name', 'column_name']) + ->execute(); + + foreach ($customFields as $fieldArray) { + $field = SpecFormatter::arrayToField($fieldArray, 'Custom_' . $customGroup); + $specification->addFieldSpec($field); + } + } + + /** + * @param string $entityName + * + * @return array + */ + private function getDAOFields($entityName) { + $dao = CoreUtil::getDAOFromApiName($entityName); + + return $dao::fields(); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/UFGroup.php b/civicrm/ext/api4/Civi/Api4/UFGroup.php new file mode 100644 index 0000000000000000000000000000000000000000..b2d78f654bd5cd5b84f0c7ca6e95ad8e90db9bac --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/UFGroup.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * UFGroup entity - AKA profiles. + * + * @package Civi\Api4 + */ +class UFGroup extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/UFJoin.php b/civicrm/ext/api4/Civi/Api4/UFJoin.php new file mode 100644 index 0000000000000000000000000000000000000000..919f1b1e5111f591b95109e9e20ac8768cf9ddb2 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/UFJoin.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * UFJoin entity - links profiles to the components/extensions they are used for. + * + * @package Civi\Api4 + */ +class UFJoin extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Utils/ArrayInsertionUtil.php b/civicrm/ext/api4/Civi/Api4/Utils/ArrayInsertionUtil.php new file mode 100644 index 0000000000000000000000000000000000000000..54e3944b00e63cadd36c120cbda02cdccd5c160c --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Utils/ArrayInsertionUtil.php @@ -0,0 +1,73 @@ +<?php + +namespace Civi\Api4\Utils; + +use CRM_Utils_Array as UtilsArray; + +class ArrayInsertionUtil { + /** + * If the values to be inserted contain a key _parent_id they will only be + * inserted if the parent node ID matches their ID + * + * @param $array + * The array to insert the value in + * @param array $parts + * Path to insertion point with structure: + * [[ name => is_multiple ], ..] + * @param mixed $values + * The value to be inserted + */ + public static function insert(&$array, $parts, $values) { + $key = key($parts); + $isMulti = array_shift($parts); + if (!isset($array[$key])) { + $array[$key] = $isMulti ? [] : NULL; + } + if (empty($parts)) { + $values = self::filterValues($array, $isMulti, $values); + $array[$key] = $values; + } + else { + if ($isMulti) { + foreach ($array[$key] as &$subArray) { + self::insert($subArray, $parts, $values); + } + } + else { + self::insert($array[$key], $parts, $values); + } + } + } + + /** + * @param $parentArray + * @param $isMulti + * @param $values + * + * @return array|mixed + */ + private static function filterValues($parentArray, $isMulti, $values) { + $parentID = UtilsArray::value('id', $parentArray); + + if ($parentID) { + $values = array_filter($values, function ($value) use ($parentID) { + return UtilsArray::value('_parent_id', $value) == $parentID; + }); + } + + $unsets = ['_parent_id', '_base_id']; + array_walk($values, function (&$value) use ($unsets) { + foreach ($unsets as $unset) { + if (isset($value[$unset])) { + unset($value[$unset]); + } + } + }); + + if (!$isMulti) { + $values = array_shift($values); + } + return $values; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Utils/CoreUtil.php b/civicrm/ext/api4/Civi/Api4/Utils/CoreUtil.php new file mode 100644 index 0000000000000000000000000000000000000000..b43e62ca26d4b803271feb4577631665ce78696f --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Utils/CoreUtil.php @@ -0,0 +1,42 @@ +<?php + +namespace Civi\Api4\Utils; + +use Civi\Api4\CustomGroup; + +require_once 'api/v3/utils.php'; + +class CoreUtil { + + /** + * todo this class should not rely on api3 code + * + * @param $entityName + * + * @return \CRM_Core_DAO|string + * The DAO name for use in static calls. Return doc block is hacked to allow + * auto-completion of static methods + */ + public static function getDAOFromApiName($entityName) { + if ($entityName === 'CustomValue' || strpos($entityName, 'Custom_') === 0) { + return 'CRM_Contact_BAO_Contact'; + } + return \_civicrm_api3_get_DAO($entityName); + } + + /** + * Get table name of given Custom group + * + * @param string $customGroupName + * + * @return string + */ + public static function getCustomTableByName($customGroupName) { + return CustomGroup::get() + ->addSelect('table_name') + ->addWhere('name', '=', $customGroupName) + ->execute() + ->first()['table_name']; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Utils/FormattingUtil.php b/civicrm/ext/api4/Civi/Api4/Utils/FormattingUtil.php new file mode 100644 index 0000000000000000000000000000000000000000..4b5fbd5fb91d105853c0f2eeb2f85fe1b6ad6a3d --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Utils/FormattingUtil.php @@ -0,0 +1,101 @@ +<?php + +namespace Civi\Api4\Utils; + +use CRM_Utils_Array as UtilsArray; + +require_once 'api/v3/utils.php'; + +class FormattingUtil { + + /** + * Massage values into the format the BAO expects for a write operation + * + * @param $params + * @param $entity + * @param $fields + * @throws \API_Exception + */ + public static function formatWriteParams(&$params, $entity, $fields) { + foreach ($fields as $name => $field) { + if (!empty($params[$name])) { + $value =& $params[$name]; + // Hack for null values -- see comment below + if ($value === 'null') { + $value = 'Null'; + } + FormattingUtil::formatValue($value, $field, $entity); + // Ensure we have an array for serialized fields + if (!empty($field['serialize'] && !is_array($value))) { + $value = (array) $value; + } + } + /* + * Because of the wacky way that database values are saved we need to format + * some of the values here. In this strange world the string 'null' is used to + * unset values. Hence if we encounter true null we change it to string 'null'. + * + * If we encounter the string 'null' then we assume the user actually wants to + * set the value to string null. However since the string null is reserved for + * unsetting values we must change it. Another quirk of the DB_DataObject is + * that it allows 'Null' to be set, but any other variation of string 'null' + * will be converted to true null, e.g. 'nuLL', 'NUlL' etc. so we change it to + * 'Null'. + */ + elseif (array_key_exists($name, $params) && $params[$name] === NULL) { + $params[$name] = 'null'; + } + + if (strstr($entity, 'Custom_')) { + if ($name == 'entity_id') { + $params['entityID'] = $params['entity_id']; + unset($params['entity_id']); + } + elseif (!empty($field['custom_field_id'])) { + $params['custom_' . $field['custom_field_id']] = $params[$name]; + unset($params[$name]); + } + } + } + } + + /** + * Transform raw api input to appropriate format for use in a SQL query. + * + * This is used by read AND write actions (Get, Create, Update, Replace) + * + * @param $value + * @param $fieldSpec + * @throws \API_Exception + */ + public static function formatValue(&$value, $fieldSpec, $entity) { + if (is_array($value)) { + foreach ($value as &$val) { + self::formatValue($val, $fieldSpec, $entity); + } + return; + } + $fk = UtilsArray::value('fk_entity', $fieldSpec); + if ($fieldSpec['name'] == 'id') { + $fk = $entity; + } + $dataType = UtilsArray::value('data_type', $fieldSpec); + + if ($fk === 'Domain' && $value === 'current_domain') { + $value = \CRM_Core_Config::domainID(); + } + + if ($fk === 'Contact' && !is_numeric($value)) { + $value = \_civicrm_api3_resolve_contactID($value); + if ('unknown-user' === $value) { + throw new \API_Exception("\"{$fieldSpec['name']}\" \"{$value}\" cannot be resolved to a contact ID", 2002, array('error_field' => $fieldSpec['name'], "type" => "integer")); + } + } + + switch ($dataType) { + case 'Timestamp': + $value = date('Y-m-d H:i:s', strtotime($value)); + } + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Utils/ReflectionUtils.php b/civicrm/ext/api4/Civi/Api4/Utils/ReflectionUtils.php new file mode 100644 index 0000000000000000000000000000000000000000..4796419e1d12caa9c6f78f37079134e310786656 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Utils/ReflectionUtils.php @@ -0,0 +1,119 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2015 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Api4\Utils; + +/** + * Just another place to put static functions... + */ +class ReflectionUtils { + /** + * @param \Reflector|\ReflectionClass $reflection + * @param string $type + * If we are not reflecting the class itself, specify "Method", "Property", etc. + * + * @return array + */ + public static function getCodeDocs($reflection, $type = NULL) { + $docs = self::parseDocBlock($reflection->getDocComment()); + + // Recurse into parent functions + if (isset($docs['inheritDoc'])) { + unset($docs['inheritDoc']); + $newReflection = NULL; + try { + if ($type) { + $name = $reflection->getName(); + $reflectionClass = $reflection->getDeclaringClass()->getParentClass(); + if ($reflectionClass) { + $getItem = "get$type"; + $newReflection = $reflectionClass->$getItem($name); + } + } + else { + $newReflection = $reflection->getParentClass(); + } + } + catch (\ReflectionException $e) {} + if ($newReflection) { + // Mix in + $additionalDocs = self::getCodeDocs($newReflection, $type); + if (!empty($docs['comment']) && !empty($additionalDocs['comment'])) { + $docs['comment'] .= "\n\n" . $additionalDocs['comment']; + } + $docs += $additionalDocs; + } + } + return $docs; + } + + /** + * @param string $comment + * @return array + */ + public static function parseDocBlock($comment) { + $info = []; + foreach (preg_split("/((\r?\n)|(\r\n?))/", $comment) as $num => $line) { + if (!$num || strpos($line, '*/') !== FALSE) { + continue; + } + $line = ltrim(trim($line), '* '); + if (strpos($line, '@') === 0) { + $words = explode(' ', $line); + $key = substr($words[0], 1); + if ($key == 'var') { + $info['type'] = explode('|', $words[1]); + } + elseif ($key == 'options') { + $val = str_replace(', ', ',', implode(' ', array_slice($words, 1))); + $info['options'] = explode(',', $val); + } + else { + // Unrecognized annotation, but we'll duly add it to the info array + $val = implode(' ', array_slice($words, 1)); + $info[$key] = strlen($val) ? $val : TRUE; + } + } + elseif ($num == 1) { + $info['description'] = $line; + } + elseif (!$line) { + if (isset($info['comment'])) { + $info['comment'] .= "\n"; + } + } + else { + $info['comment'] = isset($info['comment']) ? "{$info['comment']}\n$line" : $line; + } + } + if (isset($info['comment'])) { + $info['comment'] = trim($info['comment']); + } + return $info; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Website.php b/civicrm/ext/api4/Civi/Api4/Website.php new file mode 100644 index 0000000000000000000000000000000000000000..5cf1ed040a6e8e7ada9fd88ac30872e7dc4b30ff --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Website.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Website entity. + * + * @package Civi\Api4 + */ +class Website extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/LICENSE.txt b/civicrm/ext/api4/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..6a5653f49a24f7047c6814e7dc80532be5fbd9a7 --- /dev/null +++ b/civicrm/ext/api4/LICENSE.txt @@ -0,0 +1,667 @@ +Package: org.civicrm.api4 +Copyright (C) 2016, Coleman Watts <coleman@civicrm.org> +Licensed under the GNU Affero Public License 3.0 (below). + +------------------------------------------------------------------------------- + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +<http://www.gnu.org/licenses/>. diff --git a/civicrm/ext/api4/ang/api4.ang.php b/civicrm/ext/api4/ang/api4.ang.php new file mode 100644 index 0000000000000000000000000000000000000000..51a5da068152af61a9016b9fe3b15dfd8b93cd1a --- /dev/null +++ b/civicrm/ext/api4/ang/api4.ang.php @@ -0,0 +1,20 @@ +<?php +// Autoloader data for Api4 angular module. +$vars = [ + 'operators' => \CRM_Core_DAO::acceptedSQLOperators(), +]; +\Civi::resources()->addVars('api4', $vars); +return [ + 'js' => [ + 'ang/api4.js', + 'ang/api4/*.js', + 'ang/api4/*/*.js', + ], + 'css' => [ + 'css/explorer.css', + ], + 'partials' => [ + 'ang/api4', + ], + 'requires' => ['crmUi', 'crmUtil', 'ngRoute', 'crmRouteBinder'], +]; diff --git a/civicrm/ext/api4/ang/api4.js b/civicrm/ext/api4/ang/api4.js new file mode 100644 index 0000000000000000000000000000000000000000..42070394de50d0290e650f76c65fe4c3d191e24a --- /dev/null +++ b/civicrm/ext/api4/ang/api4.js @@ -0,0 +1,6 @@ +(function(angular, $, _) { + // Declare a list of dependencies. + angular.module('api4', [ + 'crmUi', 'crmUtil', 'ngRoute', 'ui.sortable' + ]); +})(angular, CRM.$, CRM._); diff --git a/civicrm/ext/api4/ang/api4/Explorer.html b/civicrm/ext/api4/ang/api4/Explorer.html new file mode 100644 index 0000000000000000000000000000000000000000..ca0986841542bbb63ba8fac162e5bf33bded85fd --- /dev/null +++ b/civicrm/ext/api4/ang/api4/Explorer.html @@ -0,0 +1,122 @@ +<div id="bootstrap-theme" class="api4-explorer-page"> + <div crm-ui-debug="availableParams"></div> + + <h1 crm-page-title> + {{ ts('CiviCRM API v4') }}{{ entity ? (' (' + entity + '::' + action + ')') : '' }} + </h1> + + <div class="row"> + <div class="col-md-8"> + <form name="api4-explorer" class="panel panel-default explorer-params-panel"> + <div class="panel-heading"> + <div class="form-inline"> + <input class="collapsible-optgroups form-control" ng-model="entity" ng-disabled="!entities.length" ng-class="{loading: !entities.length}" crm-ui-select="{placeholder: ts('Entity'), data: entities}" /> + <input class="collapsible-optgroups form-control" ng-model="action" ng-disabled="!entity || !actions.length" ng-class="{loading: entity && !actions.length}" crm-ui-select="{placeholder: ts('Action'), data: actions}" /> + <button class="btn btn-success pull-right" crm-icon="fa-bolt" ng-disabled="!entity || !action || loading" ng-click="execute()">{{ ts('Execute') }}</button> + </div> + </div> + <div class="panel-body"> + <div class="api4-input form-inline"> + <div class="form-control" ng-mouseenter="help(name, param)" ng-mouseleave="help()" ng-class="{'api4-option-selected': params[name]}" ng-repeat="(name, param) in availableParams" ng-if="param.type[0] === 'bool'"> + <input type="checkbox" id="api4-param-{{ name }}" ng-model="params[name]"/> + <label for="api4-param-{{ name }}">{{ name }}<span class="crm-marker" ng-if="param.required"> *</span></label> + </div> + </div> + <div class="api4-input form-inline" ng-mouseenter="help('select', availableParams.select)" ng-mouseleave="help()" ng-if="availableParams.select"> + <label for="api4-param-select">select<span class="crm-marker" ng-if="availableParams.select.required"> *</span></label> + <input class="collapsible-optgroups form-control" ng-list crm-ui-select="{data: selectOptions(), multiple: true}" id="api4-param-select" ng-model="params.select" style="width: 85%;"/> + </div> + <div class="api4-input form-inline" ng-mouseenter="help('fields', availableParams.fields)" ng-mouseleave="help()"ng-if="availableParams.fields"> + <label for="api4-param-fields">fields<span class="crm-marker" ng-if="availableParams.fields.required"> *</span></label> + <input class="form-control" ng-list crm-ui-select="{data: fields, multiple: true}" id="api4-param-fields" ng-model="params.fields" style="width: 85%;"/> + </div> + <div class="api4-input form-inline" ng-mouseenter="help('action', availableParams.action)" ng-mouseleave="help()"ng-if="availableParams.action"> + <label for="api4-param-action">action<span class="crm-marker" ng-if="availableParams.action.required"> *</span></label> + <input class="form-control" crm-ui-select="{data: actions, allowClear: true, placeholder: 'None'}" id="api4-param-action" ng-model="params.action"/> + </div> + <div class="api4-input form-inline" ng-mouseenter="help(name, param)" ng-mouseleave="help()" ng-repeat="(name, param) in availableParams" ng-if="name !== 'action' && (param.type[0] === 'string' || param.type[0] === 'int')"> + <label for="api4-param-{{ name }}">{{ name }}<span class="crm-marker" ng-if="param.required"> *</span></label> + <input class="form-control" type="{{ param.type[0] === 'int' ? 'number' : 'text' }}" id="api4-param-{{ name }}" ng-model="params[name]"/> + </div> + <fieldset ng-if="availableParams.where" class="api4-where-fieldset" ng-mouseenter="help('where', availableParams.where)" ng-mouseleave="help()" crm-api4-where-clause="{where: params.where, required: availableParams.where.required, op: 'AND', label: 'where', fields: fieldsAndJoins, operators: operators}"> + </fieldset> + <fieldset ng-if="availableParams.values" ng-mouseenter="help('values', availableParams.values)" ng-mouseleave="help()"> + <legend>values<span class="crm-marker" ng-if="availableParams.values.required"> *</span></legend> + <div class="api4-input form-inline" ng-repeat="(index, clause) in params.values"> + <input class="collapsible-optgroups form-control" ng-model="clause[0]" crm-ui-select="{formatResult: formatSelect2Item, formatSelection: formatSelect2Item, data: valuesFields(), allowClear: true, placeholder: 'Field'}" /> + <input class="form-control" ng-model="clause[1]" /> + </div> + <div class="api4-input form-inline"> + <input class="collapsible-optgroups form-control" ng-model="controls.values" crm-ui-select="{formatResult: formatSelect2Item, formatSelection: formatSelect2Item, data: valuesFields()}" placeholder="Add value" /> + </div> + </fieldset> + <fieldset ng-if="availableParams.orderBy" ng-mouseenter="help('orderBy', availableParams.orderBy)" ng-mouseleave="help()"> + <legend>orderBy<span class="crm-marker" ng-if="availableParams.orderBy.required"> *</span></legend> + <div class="api4-input form-inline" ng-repeat="(index, clause) in params.orderBy"> + <input class="collapsible-optgroups form-control" ng-model="clause[0]" crm-ui-select="{data: fieldsAndJoins, allowClear: true, placeholder: 'Field'}" /> + <select class="form-control" ng-model="clause[1]"> + <option value="ASC">ASC</option> + <option value="DESC">DESC</option> + </select> + </div> + <div class="api4-input form-inline"> + <input class="collapsible-optgroups form-control" ng-model="controls.orderBy" crm-ui-select="{data: fieldsAndJoins}" placeholder="Add orderBy" /> + </div> + </fieldset> + <!--<input class="form-control" ng-repeat="(name, param) in availableParams" placeholder="{{ name }}" ng-model="params[name]"/>--> + </div> + </form> + </div> + <div class="col-md-4"> + <div class="panel panel-info explorer-help-panel"> + <div class="panel-heading"> + <h3 class="panel-title" crm-icon="fa-info-circle">{{ helpTitle }}</h3> + </div> + <div class="panel-body"> + <h4>{{ helpContent.description }}</h4> + <div ng-if="helpContent.comment"> + <p ng-repeat='text in helpContent.comment.split("\n\n")'>{{ text }}</p> + </div> + <p ng-repeat="(key, item) in helpContent" ng-if="key !== 'description' && key !== 'comment'"> + <strong>{{ key }}:</strong> {{ item }} + </p> + </div> + </div> + </div> + </div> + <div class="row"> + <div class="col-md-6"> + <div class="panel panel-warning explorer-code-panel"> + <div class="panel-heading"> + <h3 class="panel-title" crm-icon="fa-code">{{ ts('Code') }}</h3> + </div> + <div class="panel-body"> + <table> + <tr ng-repeat="(type, item) in code"> + <td>{{ type }}</td> + <td><pre>{{ item }}</pre></td> + </tr> + </table> + </div> + </div> + </div> + <div class="col-md-6"> + <div class="panel explorer-result-panel panel-{{ status }}" > + <div class="panel-heading"> + <h3 class="panel-title"> + <i class="fa fa-circle-o" ng-if="status === 'default'"></i> + <i class="fa fa-check-circle" ng-if="status === 'success'"></i> + <i class="fa fa-minus-circle" ng-if="status === 'danger'"></i> + <i class="fa fa-spinner fa-pulse" ng-if="status === 'warning'"></i> + {{ ts('Result') }} + </h3> + </div> + <div class="panel-body"> + <pre ng-repeat="code in result">{{ code }}</pre> + </div> + </div> + </div> + </div> + + +</div> diff --git a/civicrm/ext/api4/ang/api4/Explorer.js b/civicrm/ext/api4/ang/api4/Explorer.js new file mode 100644 index 0000000000000000000000000000000000000000..8bd2e7425cd7368d1b8a244631d22083fb320ce3 --- /dev/null +++ b/civicrm/ext/api4/ang/api4/Explorer.js @@ -0,0 +1,467 @@ +(function(angular, $, _, undefined) { + + // Cache schema metadata + var schema = []; + // Cache fk schema data + var links = []; + // Cache list of entities + var entities = []; + // Cache list of actions + var actions = []; + + angular.module('api4').config(function($routeProvider) { + $routeProvider.when('/api4/:api4entity?/:api4action?', { + controller: 'Api4Explorer', + templateUrl: '~/api4/Explorer.html', + reloadOnSearch: false + }); + } + ); + + angular.module('api4').controller('Api4Explorer', function($scope, $routeParams, $location, $timeout, crmUiHelp, crmApi4) { + var ts = $scope.ts = CRM.ts('api4'); + $scope.entities = entities; + $scope.operators = arrayToSelect2(CRM.vars.api4.operators); + $scope.actions = actions; + $scope.fields = []; + $scope.fieldsAndJoins = []; + $scope.availableParams = {}; + $scope.params = {}; + var getMetaParams = schema.length ? {} : {schema: ['Entity', 'getFields'], links: ['Entity', 'getLinks']}, + objectParams = {orderBy: 'ASC', values: ''}, + helpTitle = '', + helpContent = {}; + $scope.helpTitle = ''; + $scope.helpContent = {}; + $scope.entity = $routeParams.api4entity; + $scope.result = []; + $scope.status = 'default'; + $scope.loading = false; + $scope.controls = {}; + $scope.code = { + php: '', + javascript: '' + }; + + function ucfirst(str) { + return str[0].toUpperCase() + str.slice(1); + } + + function lcfirst(str) { + return str[0].toLowerCase() + str.slice(1); + } + + function pluralize(str) { + switch (str[str.length-1]) { + case 's': + return str + 'es'; + case 'y': + return str.slice(0, -1) + 'ies'; + default: + return str + 's'; + } + } + + // Turn a flat array into a select2 array + function arrayToSelect2(array) { + var out = []; + _.each(array, function(item) { + out.push({id: item, text: item}); + }); + return out; + } + + // Reformat an existing array of objects for compatibility with select2 + function formatForSelect2(input, container, key, extra, prefix) { + _.each(input, function(item) { + var id = (prefix || '') + item[key]; + var formatted = {id: id, text: id}; + if (extra) { + _.merge(formatted, _.pick(item, extra)); + } + container.push(formatted); + }); + return container; + } + + function entityFields(entity) { + return _.result(_.findWhere(schema, {name: entity}), 'fields'); + } + + function getFieldList() { + var fields = []; + formatForSelect2(entityFields($scope.entity), fields, 'name', ['description', 'required', 'default_value']); + return fields; + } + + function addJoins(fieldList) { + var fields = _.cloneDeep(fieldList), + fks = _.findWhere(links, {entity: $scope.entity}) || {}; + _.each(fks.links, function(link) { + var linkFields = entityFields(link.entity); + if (linkFields) { + fields.push({ + text: link.alias, + description: 'Join to ' + link.entity, + children: formatForSelect2(linkFields, [], 'name', ['description'], link.alias + '.') + }); + } + }); + return fields; + } + + $scope.help = function(title, param) { + if (!param) { + $scope.helpTitle = helpTitle; + $scope.helpContent = helpContent; + } else { + $scope.helpTitle = title; + $scope.helpContent = param; + } + }; + + $scope.valuesFields = function() { + var fields = []; + _.each(_.cloneDeep($scope.fields), function(field, index) { + if ((field.id === 'id' && $scope.action === 'create') || field.children) { + return; + } + if ($scope.params.values && typeof $scope.params.values[field.id] !== 'undefined') { + field.disabled = true; + } + fields.push(field); + }); + return fields; + }; + + $scope.selectOptions = function() { + if ($scope.availableParams.select.options) { + return arrayToSelect2($scope.availableParams.select.options); + } else { + return $scope.fieldsAndJoins; + } + }; + + $scope.formatSelect2Item = function(row) { + return _.escape(row.text) + + (isFieldRequiredForCreate(row) ? '<span class="crm-marker"> *</span>' : '') + + (row.description ? '<div class="crm-select2-row-description"><p>' + _.escape(row.description) + '</p></div>' : ''); + }; + + function isFieldRequiredForCreate(field) { + return field.required && !field.default_value; + } + + // Get all params that have been set + function getParams() { + var params = {}; + _.each($scope.params, function(param, key) { + if (param != $scope.availableParams[key].default && !(typeof param === 'object' && _.isEmpty(param))) { + params[key] = param; + } + }); + _.each(objectParams, function(defaultVal, key) { + if (params[key]) { + var newParam = {}; + _.each(params[key], function(item) { + newParam[item[0]] = item[1]; + }); + params[key] = newParam; + } + }); + return params; + } + + function selectAction() { + $scope.action = $routeParams.api4action; + $scope.fields = getFieldList(); + $scope.fieldsAndJoins = addJoins($scope.fields); + if ($scope.action) { + var actionInfo = _.findWhere(actions, {id: $scope.action}); + _.each(actionInfo.params, function (param, name) { + var format, + defaultVal = _.cloneDeep(param.default); + if (param.type) { + switch (param.type[0]) { + case 'int': + case 'bool': + format = param.type[0]; + break; + + case 'array': + case 'object': + format = 'json'; + break; + + default: + format = 'raw'; + } + if (name == 'limit') { + defaultVal = 25; + } + $scope.$bindToRoute({ + expr: 'params["' + name + '"]', + param: name, + format: format, + default: defaultVal, + deep: name === 'where' + }); + } + if (typeof objectParams[name] !== 'undefined') { + $scope.$watch('params.' + name, function(values) { + // Remove empty values + _.each(values, function(clause, index) { + if (!clause[0]) { + $scope.params[name].splice(index, 1); + } + }); + }, true); + $scope.$watch('controls.' + name, function(value) { + var field = value; + $timeout(function() { + if (field) { + var defaultOp = objectParams[name]; + if (_.isEmpty($scope.params[name])) { + $scope.params[name] = [[field, defaultOp]]; + } else { + $scope.params[name].push([field, defaultOp]); + } + $scope.controls[name] = null; + } + }); + }); + } + }); + $scope.availableParams = actionInfo.params; + } + writeCode(); + } + + function stringify(value, trim) { + var str = JSON.stringify(value).replace(/,/g, ', '); + if (trim) { + str = str.slice(1, -1); + } + return str.trim(); + } + + function writeCode() { + var code = { + php: ts('Select an entity and action'), + javascript: '' + }, + entity = $scope.entity, + action = $scope.action, + params = getParams(), + result = 'result'; + if ($scope.entity && $scope.action) { + if (action.slice(0, 3) === 'get') { + result = lcfirst(action.replace(/s$/, '').slice(3) || entity); + } + var results = lcfirst(pluralize(result)), + paramCount = _.size(params), + i = 0; + code.javascript = "CRM.api4('" + entity + "', '" + action + "', {"; + _.each(params, function(param, key) { + code.javascript += "\n " + key + ': ' + stringify(param) + + (++i < paramCount ? ',' : ''); + if (key === 'checkPermissions') { + code.javascript += ' // IGNORED: permissions are always enforced from client-side requests'; + } + }); + code.javascript += "\n}).done(function(" + results + ") {\n // do something with " + results + " array\n});"; + if (entity.substr(0, 7) !== 'Custom_') { + code.php = '$' + results + " = \\Civi\\Api4\\" + entity + '::' + action + '()'; + } else { + code.php = '$' + results + " = \\Civi\\Api4\\CustomValue()::" + action + "('" + entity.substr(7) + "')"; + } + _.each(params, function(param, key) { + var val = ''; + if (typeof objectParams[key] !== 'undefined') { + _.each(param, function(item, index) { + val = stringify(index) + ', ' + stringify(item); + code.php += "\n ->add" + ucfirst(key).replace(/s$/, '') + '(' + val + ')'; + }); + } else if (key === 'where') { + _.each(param, function (clause) { + if (clause[0] === 'AND' || clause[0] === 'OR' || clause[0] === 'NOT') { + code.php += "\n ->addClause('" + clause[0] + "', " + stringify(clause[1], true) + ')'; + } else { + code.php += "\n ->addWhere(" + stringify(clause, true) + ")"; + } + }); + } else { + code.php += "\n ->set" + ucfirst(key) + '(' + stringify(param) + ')'; + } + }); + code.php += "\n ->execute();\nforeach ($" + results + ' as $' + result + ') {\n // do something\n}'; + } + $scope.code = code; + } + + $scope.execute = function() { + $scope.status = 'warning'; + $scope.loading = true; + crmApi4($scope.entity, $scope.action, getParams()) + .then(function(data) { + var meta = {length: data.length}, + result = JSON.stringify(data, null, 2); + data.length = 0; + _.assign(meta, data); + $scope.loading = false; + $scope.status = 'success'; + $scope.result = [JSON.stringify(meta).replace('{', '').replace(/}$/, ''), result]; + }, function(data) { + $scope.loading = false; + $scope.status = 'danger'; + $scope.result = [JSON.stringify(data, null, 2)]; + }); + }; + + function fetchMeta() { + crmApi4(getMetaParams) + .then(function(data) { + if (data.schema) { + schema = data.schema; + entities.length = 0; + formatForSelect2(schema, entities, 'name', ['description']); + if ($scope.entity && !$scope.action) { + showEntityHelp($scope.entity); + } + } + if (data.links) { + links = data.links; + } + if (data.actions) { + formatForSelect2(data.actions, actions, 'name', ['description', 'params']); + selectAction(); + } + }); + } + + // Help for an entity with no action selected + function showEntityHelp(entity) { + var entityInfo = _.findWhere(schema, {name: entity}); + $scope.helpTitle = helpTitle = $scope.entity; + $scope.helpContent = helpContent = { + description: entityInfo.description, + comment: entityInfo.comment + }; + } + + if (!$scope.entity) { + $scope.helpTitle = helpTitle = ts('Help'); + $scope.helpContent = helpContent = {description: ts('Welcome to the api explorer.'), comment: ts('Select an entity to begin.')}; + if (getMetaParams.schema) { + fetchMeta(); + } + } else if (!actions.length) { + if (getMetaParams.schema) { + entities.push({id: $scope.entity, text: $scope.entity}); + } + getMetaParams.actions = [$scope.entity, 'getActions']; + fetchMeta(); + } else { + selectAction(); + } + + if ($scope.entity && schema.length) { + showEntityHelp($scope.entity); + } + + // Update route when changing entity + $scope.$watch('entity', function(newVal, oldVal) { + if (oldVal !== newVal) { + // Flush actions cache to re-fetch for new entity + actions = []; + $location.url('/api4/' + newVal); + } + }); + + // Update route when changing actions + $scope.$watch('action', function(newVal, oldVal) { + if ($scope.entity && $routeParams.api4action !== newVal && !_.isUndefined(newVal)) { + $location.url('/api4/' + $scope.entity + '/' + newVal); + } else if (newVal) { + $scope.helpTitle = helpTitle = $scope.entity + '::' + newVal; + $scope.helpContent = helpContent = _.pick(_.findWhere(actions, {id: newVal}), ['description', 'comment']); + } + }); + + $scope.$watch('params', writeCode, true); + writeCode(); + + }); + + angular.module('api4').directive('crmApi4WhereClause', function($timeout) { + return { + scope: { + data: '=crmApi4WhereClause' + }, + templateUrl: '~/api4/WhereClause.html', + link: function (scope, element, attrs) { + var ts = scope.ts = CRM.ts('api4'); + scope.newClause = ''; + scope.conjunctions = ['AND', 'OR', 'NOT']; + + scope.addGroup = function(op) { + scope.data.where.push([op, []]); + }; + + scope.removeGroup = function() { + scope.data.groupParent.splice(scope.data.groupIndex, 1); + }; + + scope.onSort = function(event, ui) { + $('.api4-where-fieldset').toggleClass('api4-sorting', event.type === 'sortstart'); + $('.api4-input.form-inline').css('margin-left', ''); + }; + + // Indent clause while dragging between nested groups + scope.onSortOver = function(event, ui) { + var offset = 0; + if (ui.sender) { + offset = $(ui.placeholder).offset().left - $(ui.sender).offset().left; + } + $('.api4-input.form-inline.ui-sortable-helper').css('margin-left', '' + offset + 'px'); + }; + + scope.$watch('newClause', function(value) { + var field = value; + $timeout(function() { + if (field) { + scope.data.where.push([field, '=', '']); + scope.newClause = null; + } + }); + }); + scope.$watch('data.where', function(values) { + // Remove empty values + _.each(values, function(clause, index) { + if (typeof clause !== 'undefined' && !clause[0]) { + values.splice(index, 1); + } + }); + }, true); + } + }; + }); + + // Collapsible optgroups for select2 + $(function() { + $('body') + .on('select2-open', function(e) { + if ($(e.target).hasClass('collapsible-optgroups')) { + $('#select2-drop') + .off('.collapseOptionGroup') + .addClass('collapsible-optgroups-enabled') + .on('click.collapseOptionGroup', '.select2-result-with-children > .select2-result-label', function() { + $(this).parent().toggleClass('optgroup-expanded'); + }); + } + }) + .on('select2-close', function() { + $('#select2-drop').off('.collapseOptionGroup').removeClass('collapsible-optgroups-enabled'); + }); + }); +})(angular, CRM.$, CRM._); diff --git a/civicrm/ext/api4/ang/api4/Utils.js b/civicrm/ext/api4/ang/api4/Utils.js new file mode 100644 index 0000000000000000000000000000000000000000..b0d3ec69938e0ab2fa017416f6e4694f8e5039b3 --- /dev/null +++ b/civicrm/ext/api4/ang/api4/Utils.js @@ -0,0 +1,37 @@ +(function(angular, $, _) { + + angular.module('api4').factory('crmApi4', function($q) { + var crmApi4 = function(entity, action, params, message) { + // JSON serialization in CRM.api4 is not aware of Angular metadata like $$hash, so use angular.toJson() + var deferred = $q.defer(); + var p; + var backend = crmApi4.backend || CRM.api4; + if (_.isObject(entity)) { + // eval content is locally generated. + /*jshint -W061 */ + p = backend(eval('('+angular.toJson(entity)+')'), action); + } else { + // eval content is locally generated. + /*jshint -W061 */ + p = backend(entity, action, eval('('+angular.toJson(params)+')'), message); + } + p.then( + function(result) { + deferred.resolve(result); + }, + function(error) { + deferred.reject(error); + } + ); + return deferred.promise; + }; + crmApi4.backend = null; + crmApi4.val = function(value) { + var d = $.Deferred(); + d.resolve(value); + return d.promise(); + }; + return crmApi4; + }); + +})(angular, CRM.$, CRM._); diff --git a/civicrm/ext/api4/ang/api4/WhereClause.html b/civicrm/ext/api4/ang/api4/WhereClause.html new file mode 100644 index 0000000000000000000000000000000000000000..c2b06ab52b1a8230cc23360f61585865d40c91a1 --- /dev/null +++ b/civicrm/ext/api4/ang/api4/WhereClause.html @@ -0,0 +1,39 @@ +<legend>{{ data.label || data.op + ' group' }}<span class="crm-marker" ng-if="data.required"> *</span></legend> +<div class="btn-group btn-group-xs" ng-if="data.groupParent"> + <button class="btn btn-danger-outline" ng-click="removeGroup()" title="{{ ts('Remove group') }}"> + <i class="crm-i fa-trash"></i> + </button> +</div> +<div class="api4-where-group-sortable" ng-model="data.where" ui-sortable="{axis: 'y', connectWith: '.api4-where-group-sortable', containment: '.api4-where-fieldset', over: onSortOver, start: onSort, stop: onSort}"> + <div class="api4-input form-inline clearfix" ng-repeat="(index, clause) in data.where"> + <div class="api4-clause-badge" title="{{ ts('Drag to reposition') }}"> + <span class="badge badge-info"> + <span ng-if="!index && !data.groupParent">Where</span> + <span ng-if="index || data.groupParent">{{ data.op }}</span> + <i class="crm-i fa-arrows"></i> + </span> + </div> + <div ng-if="clause[0] !== 'AND' && clause[0] !== 'OR' && clause[0] !== 'NOT'" class="api4-input-group"> + <input class="collapsible-optgroups form-control" ng-model="clause[0]" crm-ui-select="{data: data.fields, allowClear: true, placeholder: 'Field'}" /> + <input class="form-control api4-operator" ng-model="clause[1]" crm-ui-select="{data: data.operators}" /> + <input class="form-control" ng-model="clause[2]" /> + </div> + <fieldset class="clearfix" ng-if="clause[0] === 'AND' || clause[0] === 'OR' || clause[0] === 'NOT'" crm-api4-where-clause="{where: clause[1], op: clause[0], fields: data.fields, operators: data.operators, groupParent: data.where, groupIndex: index}"> + </fieldset> + </div> +</div> +<div class="api4-input form-inline"> + <div class="api4-clause-badge"> + <div class="btn-group btn-group-xs" title="{{ data.groupParent ? ts('Add a subgroup of clauses') : ts('Add a group of clauses') }}"> + <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> + {{ data.op }} <span class="caret"></span> + </button> + <ul class="dropdown-menu api4-add-where-group-menu"> + <li ng-repeat="con in conjunctions" ng-if="data.op !== con"> + <a href ng-click="addGroup(con)">{{ con }}</a> + </li> + </ul> + </div> + </div> + <input class="collapsible-optgroups form-control" ng-model="newClause" title="Add a single clause" crm-ui-select="{data: data.fields, placeholder: 'Add clause'}" /> +</div> \ No newline at end of file diff --git a/civicrm/ext/api4/api4.civix.php b/civicrm/ext/api4/api4.civix.php new file mode 100644 index 0000000000000000000000000000000000000000..bf2acf221daeb90605669b66f8397fb229064c42 --- /dev/null +++ b/civicrm/ext/api4/api4.civix.php @@ -0,0 +1,368 @@ +<?php + +// AUTO-GENERATED FILE -- Civix may overwrite any changes made to this file + +/** + * (Delegated) Implements hook_civicrm_config(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config + */ +function _api4_civix_civicrm_config(&$config = NULL) { + static $configured = FALSE; + if ($configured) { + return; + } + $configured = TRUE; + + $template =& CRM_Core_Smarty::singleton(); + + $extRoot = dirname(__FILE__) . DIRECTORY_SEPARATOR; + $extDir = $extRoot . 'templates'; + + if (is_array($template->template_dir)) { + array_unshift($template->template_dir, $extDir); + } + else { + $template->template_dir = [$extDir, $template->template_dir]; + } + + $include_path = $extRoot . PATH_SEPARATOR . get_include_path(); + set_include_path($include_path); +} + +/** + * (Delegated) Implements hook_civicrm_xmlMenu(). + * + * @param $files array(string) + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu + */ +function _api4_civix_civicrm_xmlMenu(&$files) { + foreach (_api4_civix_glob(__DIR__ . '/xml/Menu/*.xml') as $file) { + $files[] = $file; + } +} + +/** + * Implements hook_civicrm_install(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install + */ +function _api4_civix_civicrm_install() { + _api4_civix_civicrm_config(); + if ($upgrader = _api4_civix_upgrader()) { + $upgrader->onInstall(); + } +} + +/** + * Implements hook_civicrm_postInstall(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_postInstall + */ +function _api4_civix_civicrm_postInstall() { + _api4_civix_civicrm_config(); + if ($upgrader = _api4_civix_upgrader()) { + if (is_callable([$upgrader, 'onPostInstall'])) { + $upgrader->onPostInstall(); + } + } +} + +/** + * Implements hook_civicrm_uninstall(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall + */ +function _api4_civix_civicrm_uninstall() { + _api4_civix_civicrm_config(); + if ($upgrader = _api4_civix_upgrader()) { + $upgrader->onUninstall(); + } +} + +/** + * (Delegated) Implements hook_civicrm_enable(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable + */ +function _api4_civix_civicrm_enable() { + _api4_civix_civicrm_config(); + if ($upgrader = _api4_civix_upgrader()) { + if (is_callable([$upgrader, 'onEnable'])) { + $upgrader->onEnable(); + } + } +} + +/** + * (Delegated) Implements hook_civicrm_disable(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable + * @return mixed + */ +function _api4_civix_civicrm_disable() { + _api4_civix_civicrm_config(); + if ($upgrader = _api4_civix_upgrader()) { + if (is_callable([$upgrader, 'onDisable'])) { + $upgrader->onDisable(); + } + } +} + +/** + * (Delegated) Implements hook_civicrm_upgrade(). + * + * @param $op string, the type of operation being performed; 'check' or 'enqueue' + * @param $queue CRM_Queue_Queue, (for 'enqueue') the modifiable list of pending up upgrade tasks + * + * @return mixed based on op. for 'check', returns array(boolean) (TRUE if upgrades are pending) + * for 'enqueue', returns void + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_upgrade + */ +function _api4_civix_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) { + if ($upgrader = _api4_civix_upgrader()) { + return $upgrader->onUpgrade($op, $queue); + } +} + +/** + * @return CRM_Api4_Upgrader + */ +function _api4_civix_upgrader() { + if (!file_exists(__DIR__ . '/CRM/Api4/Upgrader.php')) { + return NULL; + } + else { + return CRM_Api4_Upgrader_Base::instance(); + } +} + +/** + * Search directory tree for files which match a glob pattern + * + * Note: Dot-directories (like "..", ".git", or ".svn") will be ignored. + * Note: In Civi 4.3+, delegate to CRM_Utils_File::findFiles() + * + * @param $dir string, base dir + * @param $pattern string, glob pattern, eg "*.txt" + * @return array(string) + */ +function _api4_civix_find_files($dir, $pattern) { + if (is_callable(['CRM_Utils_File', 'findFiles'])) { + return CRM_Utils_File::findFiles($dir, $pattern); + } + + $todos = [$dir]; + $result = []; + while (!empty($todos)) { + $subdir = array_shift($todos); + foreach (_api4_civix_glob("$subdir/$pattern") as $match) { + if (!is_dir($match)) { + $result[] = $match; + } + } + if ($dh = opendir($subdir)) { + while (FALSE !== ($entry = readdir($dh))) { + $path = $subdir . DIRECTORY_SEPARATOR . $entry; + if ($entry{0} == '.') { + } + elseif (is_dir($path)) { + $todos[] = $path; + } + } + closedir($dh); + } + } + return $result; +} +/** + * (Delegated) Implements hook_civicrm_managed(). + * + * Find any *.mgd.php files, merge their content, and return. + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_managed + */ +function _api4_civix_civicrm_managed(&$entities) { + $mgdFiles = _api4_civix_find_files(__DIR__, '*.mgd.php'); + foreach ($mgdFiles as $file) { + $es = include $file; + foreach ($es as $e) { + if (empty($e['module'])) { + $e['module'] = 'org.civicrm.api4'; + } + $entities[] = $e; + if (empty($e['params']['version'])) { + $e['params']['version'] = '3'; + } + } + } +} + +/** + * (Delegated) Implements hook_civicrm_caseTypes(). + * + * Find any and return any files matching "xml/case/*.xml" + * + * Note: This hook only runs in CiviCRM 4.4+. + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_caseTypes + */ +function _api4_civix_civicrm_caseTypes(&$caseTypes) { + if (!is_dir(__DIR__ . '/xml/case')) { + return; + } + + foreach (_api4_civix_glob(__DIR__ . '/xml/case/*.xml') as $file) { + $name = preg_replace('/\.xml$/', '', basename($file)); + if ($name != CRM_Case_XMLProcessor::mungeCaseType($name)) { + $errorMessage = sprintf("Case-type file name is malformed (%s vs %s)", $name, CRM_Case_XMLProcessor::mungeCaseType($name)); + CRM_Core_Error::fatal($errorMessage); + // throw new CRM_Core_Exception($errorMessage); + } + $caseTypes[$name] = [ + 'module' => 'org.civicrm.api4', + 'name' => $name, + 'file' => $file, + ]; + } +} + +/** + * (Delegated) Implements hook_civicrm_angularModules(). + * + * Find any and return any files matching "ang/*.ang.php" + * + * Note: This hook only runs in CiviCRM 4.5+. + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_angularModules + */ +function _api4_civix_civicrm_angularModules(&$angularModules) { + if (!is_dir(__DIR__ . '/ang')) { + return; + } + + $files = _api4_civix_glob(__DIR__ . '/ang/*.ang.php'); + foreach ($files as $file) { + $name = preg_replace(':\.ang\.php$:', '', basename($file)); + $module = include $file; + if (empty($module['ext'])) { + $module['ext'] = 'org.civicrm.api4'; + } + $angularModules[$name] = $module; + } +} + +/** + * Glob wrapper which is guaranteed to return an array. + * + * The documentation for glob() says, "On some systems it is impossible to + * distinguish between empty match and an error." Anecdotally, the return + * result for an empty match is sometimes array() and sometimes FALSE. + * This wrapper provides consistency. + * + * @link http://php.net/glob + * @param string $pattern + * @return array, possibly empty + */ +function _api4_civix_glob($pattern) { + $result = glob($pattern); + return is_array($result) ? $result : []; +} + +/** + * Inserts a navigation menu item at a given place in the hierarchy. + * + * @param array $menu - menu hierarchy + * @param string $path - path where insertion should happen (ie. Administer/System Settings) + * @param array $item - menu you need to insert (parent/child attributes will be filled for you) + */ +function _api4_civix_insert_navigation_menu(&$menu, $path, $item) { + // If we are done going down the path, insert menu + if (empty($path)) { + $menu[] = [ + 'attributes' => array_merge([ + 'label' => CRM_Utils_Array::value('name', $item), + 'active' => 1, + ], $item), + ]; + return TRUE; + } + else { + // Find an recurse into the next level down + $found = FALSE; + $path = explode('/', $path); + $first = array_shift($path); + foreach ($menu as $key => &$entry) { + if ($entry['attributes']['name'] == $first) { + if (!isset($entry['child'])) { + $entry['child'] = []; + } + $found = _api4_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item, $key); + } + } + return $found; + } +} + +/** + * (Delegated) Implements hook_civicrm_navigationMenu(). + */ +function _api4_civix_navigationMenu(&$nodes) { + if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) { + _api4_civix_fixNavigationMenu($nodes); + } +} + +/** + * Given a navigation menu, generate navIDs for any items which are + * missing them. + */ +function _api4_civix_fixNavigationMenu(&$nodes) { + $maxNavID = 1; + array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) { + if ($key === 'navID') { + $maxNavID = max($maxNavID, $item); + } + }); + _api4_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL); +} + +function _api4_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'])) { + _api4_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']); + } + } +} + +/** + * (Delegated) Implements hook_civicrm_alterSettingsFolders(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders + */ +function _api4_civix_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { + static $configured = FALSE; + if ($configured) { + return; + } + $configured = TRUE; + + $settingsDir = __DIR__ . DIRECTORY_SEPARATOR . 'settings'; + if (is_dir($settingsDir) && !in_array($settingsDir, $metaDataFolders)) { + $metaDataFolders[] = $settingsDir; + } +} diff --git a/civicrm/ext/api4/api4.php b/civicrm/ext/api4/api4.php new file mode 100644 index 0000000000000000000000000000000000000000..4278dc04d9dfb2c49d9a011668cdd53e1546bef3 --- /dev/null +++ b/civicrm/ext/api4/api4.php @@ -0,0 +1,174 @@ +<?php + +require_once 'api4.civix.php'; + +use Symfony\Component\DependencyInjection\Reference; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; +use Symfony\Component\Config\FileLocator; + +/** + * Procedural wrapper for the OO api version 4. + * + * @param $entity + * @param $action + * @param array $params + * + * @return \Civi\Api4\Generic\Result + */ +function civicrm_api4($entity, $action, $params = []) { + $params['version'] = 4; + // For custom pseudo-entities + if (strpos($entity, 'Custom_') === 0) { + $params['customGroup'] = substr($entity, 7); + $entity = 'CustomValue'; + } + $request = \Civi\API\Request::create($entity, $action, $params); + return \Civi::service('civi_api_kernel')->runRequest($request); +} + +/** + * @param ContainerBuilder $container + */ +function api4_civicrm_container($container) { + $loader = new XmlFileLoader($container, new FileLocator(__DIR__)); + $loader->load('services.xml'); + + $container->getDefinition('civi_api_kernel')->addMethodCall( + 'registerApiProvider', + [new Reference('action_object_provider')] + ); + + // add event subscribers$container->get( + $dispatcher = $container->getDefinition('dispatcher'); + $subscribers = $container->findTaggedServiceIds('event_subscriber'); + + foreach (array_keys($subscribers) as $subscriber) { + $dispatcher->addMethodCall( + 'addSubscriber', + [new Reference($subscriber)] + ); + } + + // add spec providers + $providers = $container->findTaggedServiceIds('spec_provider'); + $gatherer = $container->getDefinition('spec_gatherer'); + + foreach (array_keys($providers) as $provider) { + $gatherer->addMethodCall( + 'addSpecProvider', + [new Reference($provider)] + ); + } + + if (defined('CIVICRM_UF') && CIVICRM_UF === 'UnitTests') { + $loader->load('tests/services.xml'); + } +} + +/** + * Implements hook_civicrm_coreResourceList(). + */ +function api4_civicrm_coreResourceList(&$list, $region) { + if ($region == 'html-header') { + Civi::resources()->addScriptFile('org.civicrm.api4', 'js/api4.js', -9000, $region); + } +} + +/** + * Implements hook_civicrm_config(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config + */ +function api4_civicrm_config(&$config) { + _api4_civix_civicrm_config($config); +} + +/** + * Implements hook_civicrm_xmlMenu(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_xmlMenu + */ +function api4_civicrm_xmlMenu(&$files) { + _api4_civix_civicrm_xmlMenu($files); +} + +/** + * Implements hook_civicrm_install(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install + */ +function api4_civicrm_install() { + _api4_civix_civicrm_install(); +} + +/** + * Implements hook_civicrm_uninstall(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_uninstall + */ +function api4_civicrm_uninstall() { + _api4_civix_civicrm_uninstall(); +} + +/** + * Implements hook_civicrm_enable(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable + */ +function api4_civicrm_enable() { + _api4_civix_civicrm_enable(); +} + +/** + * Implements hook_civicrm_disable(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_disable + */ +function api4_civicrm_disable() { + _api4_civix_civicrm_disable(); +} + +/** + * Implements hook_civicrm_upgrade(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_upgrade + */ +function api4_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) { + return _api4_civix_civicrm_upgrade($op, $queue); +} + +/** + * Implements hook_civicrm_managed(). + * + * Generate a list of entities to create/deactivate/delete when this module + * is installed, disabled, uninstalled. + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_managed + */ +function api4_civicrm_managed(&$entities) { + _api4_civix_civicrm_managed($entities); +} + +/** + * Implements hook_civicrm_angularModules(). + * + * Generate a list of Angular modules. + * + * Note: This hook only runs in CiviCRM 4.5+. It may + * use features only available in v4.6+. + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_caseTypes + */ +function api4_civicrm_angularModules(&$angularModules) { + _api4_civix_civicrm_angularModules($angularModules); +} + +/** + * Implements hook_civicrm_alterSettingsFolders(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_alterSettingsFolders + */ +function api4_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) { + _api4_civix_civicrm_alterSettingsFolders($metaDataFolders); +} diff --git a/civicrm/ext/api4/css/explorer.css b/civicrm/ext/api4/css/explorer.css new file mode 100644 index 0000000000000000000000000000000000000000..9af359c51f4bb213836857f432f116bbe1f420a9 --- /dev/null +++ b/civicrm/ext/api4/css/explorer.css @@ -0,0 +1,156 @@ +/* Style rules for Api4 Explorer */ + +#bootstrap-theme.api4-explorer-page .panel-heading { + height: 50px; +} +#bootstrap-theme.api4-explorer-page .explorer-params-panel .panel-heading { + padding-top: 12px; +} +#bootstrap-theme.api4-explorer-page .explorer-params-panel .panel-heading button { + position: relative; + top: -5px; +} +#bootstrap-theme.api4-explorer-page .row .panel-body { + min-height: 400px; + overflow-x: auto; +} +#bootstrap-theme.api4-explorer-page .row .explorer-help-panel .panel-body { + max-height: 400px; + overflow: auto; +} +/* Fix weird shorditch style */ +#bootstrap-theme.api4-explorer-page .row .panel-heading { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + margin-bottom: 0; +} +#bootstrap-theme.api4-explorer-page .explorer-code-panel table td:first-child { + width: 5em; +} + +#bootstrap-theme.api4-explorer-page .explorer-params-panel > .panel-body > div.api4-input { + margin-bottom: 10px; +} + +#bootstrap-theme.api4-explorer-page form label { + text-transform: capitalize; +} + +#bootstrap-theme.api4-explorer-page fieldset { + padding: 6px; + border: 1px solid lightgrey; + margin-bottom: 10px; + position: relative; +} + +#bootstrap-theme.api4-explorer-page fieldset legend { + background-color: white; + font-size: 13px; + margin: 0; + width: auto; + border: 0 none; + padding: 2px 5px; + text-transform: capitalize; +} +#bootstrap-theme.api4-explorer-page fieldset > .btn-group { + position: absolute; + right: 0; + top: 11px; +} +#bootstrap-theme.api4-explorer-page fieldset > .btn-group .btn { + border: 0 none; +} + +#bootstrap-theme.api4-explorer-page fieldset div.api4-input { + margin-bottom: 10px; +} + +#bootstrap-theme.api4-explorer-page fieldset div.api4-input.ui-sortable-helper { + background-color: rgba(255, 255, 255, .9); +} + +#bootstrap-theme.api4-explorer-page fieldset div.api4-input.ui-sortable-helper { + background-color: rgba(255, 255, 255, .9); +} + +#bootstrap-theme.api4-explorer-page div.api4-input.form-inline .form-control { + margin-right: 6px; +} + +#bootstrap-theme.api4-explorer-page div.api4-input.form-inline .form-control:not(.api4-option-selected) { + transition: none; + box-shadow: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; +} + +#bootstrap-theme.api4-explorer-page div.api4-input.form-inline .form-control label { + font-weight: normal; + position: relative; + top: -2px; +} + +#bootstrap-theme.api4-explorer-page .api4-where-fieldset fieldset { + float: right; + width: calc(100% - 58px); + margin-top: -8px; +} + +#bootstrap-theme.api4-explorer-page .api4-where-fieldset.api4-sorting fieldset .api4-where-group-sortable { + min-height: 3.5em; +} + +#bootstrap-theme.api4-explorer-page .api4-input-group { + display: inline-block; +} + +#bootstrap-theme.api4-explorer-page .api4-clause-badge { + width: 55px; + display: inline-block; + cursor: move; +} +#bootstrap-theme.api4-explorer-page .api4-clause-badge .badge { + opacity: .5; + position: relative; +} +#bootstrap-theme.api4-explorer-page .api4-clause-badge .caret { + margin: 0; +} +#bootstrap-theme.api4-explorer-page .api4-clause-badge .crm-i { + display: none; + padding: 0 6px; +} +#bootstrap-theme.api4-explorer-page .ui-sortable-helper .api4-clause-badge .badge span { + display: none; +} +#bootstrap-theme.api4-explorer-page .ui-sortable-helper .api4-clause-badge .crm-i { + display: inline-block; +} + +#bootstrap-theme.api4-explorer-page .api4-operator { + width: 70px; +} + +#bootstrap-theme.api4-explorer-page .api4-add-where-group-menu { + min-width: 80px; + background-color: rgba(186, 225, 251, 0.94); +} +#bootstrap-theme.api4-explorer-page .api4-add-where-group-menu a { + padding: 5px 10px; +} + +/* Collapsible optgroups for select2 */ +div.select2-drop.collapsible-optgroups-enabled .select2-result-with-children:not(.optgroup-expanded) > .select2-result-sub > li.select2-result { + display: none; +} +div.select2-drop.collapsible-optgroups-enabled .select2-result-with-children > .select2-result-label:before { + font-family: FontAwesome; + content: "\f0da"; + display: inline-block; + padding-right: 3px; + vertical-align: middle; + font-weight: normal; +} +div.select2-drop.collapsible-optgroups-enabled .select2-result-with-children.optgroup-expanded > .select2-result-label:before { + content: "\f0d7"; +} diff --git a/civicrm/ext/api4/images/ApiExplorer.png b/civicrm/ext/api4/images/ApiExplorer.png new file mode 100644 index 0000000000000000000000000000000000000000..093cf2a6b2ebd93ee90670f4cdedec8edad9966c Binary files /dev/null and b/civicrm/ext/api4/images/ApiExplorer.png differ diff --git a/civicrm/ext/api4/info.xml b/civicrm/ext/api4/info.xml new file mode 100644 index 0000000000000000000000000000000000000000..afe7956acee6298c56f53699eba8054fe675dda6 --- /dev/null +++ b/civicrm/ext/api4/info.xml @@ -0,0 +1,29 @@ +<?xml version="1.0"?> +<extension key="org.civicrm.api4" type="module"> + <file>api4</file> + <name>API v4</name> + <description>Makes version 4 of the CiviCRM API available to other extensions.</description> + <license>AGPL-3.0</license> + <maintainer> + <author>Coleman Watts</author> + <email>coleman@civicrm.org</email> + </maintainer> + <urls> + <url desc="Main Extension Page">https://github.com/civicrm/api4</url> + <url desc="Documentation">https://wiki.civicrm.org/confluence/display/CRM/API+v4+Spec</url> + <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> + </urls> + <releaseDate>2018-09-05</releaseDate> + <version>4.0.0</version> + <develStage>stable</develStage> + <compatibility> + <ver>5.0</ver> + </compatibility> + <comments>This extension does nothing on its own. Install it if other extensions require you to do so.</comments> + <classloader> + <psr4 prefix="Civi\" path="Civi" /> + </classloader> + <civix> + <namespace>CRM/Api4</namespace> + </civix> +</extension> diff --git a/civicrm/ext/api4/js/api4.js b/civicrm/ext/api4/js/api4.js new file mode 100644 index 0000000000000000000000000000000000000000..bde57c27e49b4bf8f2f53ec817e9ee7c4241005a --- /dev/null +++ b/civicrm/ext/api4/js/api4.js @@ -0,0 +1,41 @@ +(function($, _) { + + // result is an array, but in js, an array is also an object + // Assign all the metadata properties to it, mirroring the results arrayObject in php + function arrayObject(data) { + var result = data.values || []; + delete(data.values); + _.assign(result, data); + return result; + } + + CRM.api4 = function(entity, action, params) { + var deferred = $.Deferred(); + if (typeof entity === 'string') { + $.post(CRM.url('civicrm/ajax/api4/' + entity + '/' + action), { + params: JSON.stringify(params) + }) + .done(function (data) { + deferred.resolve(arrayObject(data)); + }) + .fail(function (data) { + deferred.reject(data.responseJSON); + }); + } else { + $.post(CRM.url('civicrm/ajax/api4'), { + calls: JSON.stringify(entity) + }) + .done(function(data) { + _.each(data, function(item, index) { + data[index] = arrayObject(item); + }); + deferred.resolve(data); + }) + .fail(function (data) { + deferred.reject(data.responseJSON); + }); + } + + return deferred; + }; +})(CRM.$, CRM._); \ No newline at end of file diff --git a/civicrm/ext/api4/phpunit.xml.dist b/civicrm/ext/api4/phpunit.xml.dist new file mode 100644 index 0000000000000000000000000000000000000000..bf600a87c9e3cc153a59498bc7bfefcef52535ab --- /dev/null +++ b/civicrm/ext/api4/phpunit.xml.dist @@ -0,0 +1,29 @@ +<phpunit backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + syntaxCheck="false" + bootstrap="tests/phpunit/bootstrap.php" +> + <testsuites> + <testsuite name="My Test Suite"> + <directory>./tests/phpunit</directory> + </testsuite> + </testsuites> + + <filter> + <whitelist> + <directory suffix=".php">./</directory> + </whitelist> + </filter> + + <listeners> + <listener class="Civi\Test\CiviTestListener"> + <arguments></arguments> + </listener> + </listeners> +</phpunit> diff --git a/civicrm/ext/api4/readme.md b/civicrm/ext/api4/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..1efc8b5194ff1ec956519ff956cec3e7ac4ef96d --- /dev/null +++ b/civicrm/ext/api4/readme.md @@ -0,0 +1,94 @@ +CiviCRM API Version 4 +===================== + +Welcome +------- + +This is the latest version of the API (Application Programming Interface) for CiviCRM. If you are here because you're trying to install an extension that requires this, just install this and you're done! + +If you are a developer, read on... + +Using Api4 +---------- + +Once installed you can navigate to **Support -> Developer -> Api4 Explorer** in the menu. This gives a live, interactive code generator in which you can build and test api calls: + + + +Output +------ + +The php binding returns an [arrayObject](http://php.net/manual/en/class.arrayobject.php). This gives immediate access to the results, plus allows returning additional metadata properties. + + +```php +$result = \Civi\Api4\Contact::get()->execute(); + +// you can loop through the results directly +foreach ($result as $contact) {} + +// you can just grab the first one +$contact1 = $result->first(); + +// reindex results on-the-fly (replacement for sequential=1 in v3) +$result->indexBy('id'); + +// or fetch some metadata about the call +$entity = $result->entity; // "Contact" +``` + +We can do the something very similar in javascript thanks to js arrays also being objects: + +```javascript +CRM.api4('Contact', 'get', params).done(function(result) { + // you can loop through the results + result.forEach(function(contact, n) {}); + + // you can just grab the first one + var contact1 = result[0]; + + // or fetch some metadata about the call + var entity = result.entity; // "Contact" +}); +``` + +Notable changes from Version 3: +------------------------------- + +* Instead of a single `$params` array, each api action has multiple methods to set various parameters. +* Output is an array with object properties rather than a nested array. +* Use the `Update` action to update an entity rather than `Create` with an id. +* Use `$result->indexBy('id');` rather than `sequential => 0`. +* `getSingle` is gone, use `$result->first()`. +* Custom fields are refered to by name rather than id. E.g. use `constituent_information.Most_Important_Issue` instead of `custom_4`. + +Creating Apis for an Extension +------------------------------ + +If your extension creates one or more entities (sql tables with a DAO object) you can expose it to the api simply by creating a class (e.g. `\Civi\Api4\MyEntity`), and optionally declare permissions, set default values, and add custom actions. + + +Architecture +------------ + +* A series of **action classes** inherit from the base [`Action`](Civi/Api4/Action.php) class, e.g. [`Create`](Civi/Api4/Action/Create.php). +* Each entity may extend the generic action class to provide extra parameters or functionality. +* [`Update`](Civi/Api4/Action/Update.php), [`Replace`](Civi/Api4/Action/Replace.php) and [`Delete`](Civi/Api4/Action/Delete.php) actions extend the [`Get`](Civi/Api4/Action/Get.php) class allowing them to perform bulk operations. +* The `Action` class uses the magic [__call()](http://php.net/manual/en/language.oop5.overloading.php#object.call) method to `set`, `add` and `get` parameters. +* The base action `execute()` method calls the core [`civi_api_kernel`](https://github.com/civicrm/civicrm-core/blob/master/Civi/API/Kernel.php) +service `runRequest()` method. Action objects find their business access objects via [V3 API code](https://github.com/civicrm/civicrm-core/blob/master/api/v3/utils.php#L381). +* Each action object has a `_run()` method that accepts a decorated [arrayobject](http://php.net/manual/en/class.arrayobject.php) ([`Result`](Civi/API/Result.php)) as a parameter and is accessed by the action's `execute()` method. +* The **get** action class uses a [`Api4SelectQuery`](Civi/API/Api4SelectQuery.php) object +(based on the core +[SelectQuery](https://github.com/civicrm/civicrm-core/blob/master/Civi/API/SelectQuery.php) object. + +Security +-------- + +Each `action` object has a `$checkPermissions` property. This always defaults to `TRUE`, and for calls from REST it cannot be disabled. + +Tests +----- + +Tests are located in the `tests` directory (surprise!) +To run the entire Api4 test suite go to the api4 extension directory and type `phpunit4` from the command line. diff --git a/civicrm/ext/api4/services.xml b/civicrm/ext/api4/services.xml new file mode 100644 index 0000000000000000000000000000000000000000..95de18ec265cdf0a2f9c732652e64247acb142da --- /dev/null +++ b/civicrm/ext/api4/services.xml @@ -0,0 +1,113 @@ +<container xmlns="http://symfony.com/schema/dic/services" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> + + <services> + + <service id="spec_gatherer" class="Civi\Api4\Service\Spec\SpecGatherer"/> + + <service id="schema_map_builder" class="Civi\Api4\Service\Schema\SchemaMapBuilder" public="false"> + <argument type="service" id="dispatcher" /> + </service> + + <!-- factory service is deprecated but for now we're stuck with v2.5 --> + <service id="schema_map" class="Civi\Api4\Service\Schema\SchemaMap" factory-service="schema_map_builder" factory-method="build"/> + + <service id="joiner" class="Civi\Api4\Service\Schema\Joiner"> + <argument type="service" id="schema_map"/> + </service> + + <service id="action_object_provider" class="Civi\Api4\Provider\ActionObjectProvider"> + <tag name="event_subscriber"/> + </service> + + <service id="contact_creation.spec_provider" class="Civi\Api4\Service\Spec\Provider\ContactCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\ContactTypeCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\AddressCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service id="option_value_creation.spec_provider" class="Civi\Api4\Service\Spec\Provider\OptionValueCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\ActivityCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\EmailCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\PhoneCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\EventCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\ContributionCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\CustomGroupCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\GroupCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\NavigationCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + + <service id="custom_group.pre_creation.subscriber" class="Civi\Api4\Event\Subscriber\CustomGroupPreCreationSubscriber"> + <tag name="event_subscriber"/> + </service> + + <service id="custom_field.pre_creation.subsciber" class="Civi\Api4\Event\Subscriber\CustomFieldPreCreationSubscriber"> + <tag name="event_subscriber"/> + </service> + + <service id="option_value.pre_creation.subscriber" class="Civi\Api4\Event\Subscriber\OptionValuePreCreationSubscriber"> + <tag name="event_subscriber"/> + </service> + + <service id="activity.pre_creation.subscriber" class="Civi\Api4\Event\Subscriber\ActivityPreCreationSubscriber"> + <tag name="event_subscriber"/> + </service> + + <service id="contact.schema_map.subscriber" class="Civi\Api4\Event\Subscriber\ContactSchemaMapSubscriber"> + <tag name="event_subscriber"/> + </service> + + <service id="activity.schema_map.subscriber" class="Civi\Api4\Event\Subscriber\ActivitySchemaMapSubscriber"> + <tag name="event_subscriber"/> + </service> + + <service id="api4.permission_check.subscriber" class="Civi\Api4\Event\Subscriber\PermissionCheckSubscriber"> + <tag name="event_subscriber"/> + </service> + + <service id="api4.required_fields.subscriber" class="Civi\Api4\Event\Subscriber\ValidateFieldsSubscriber"> + <tag name="event_subscriber"/> + </service> + + <service id="api4.post_select_query.subscriber" class="Civi\Api4\Event\Subscriber\PostSelectQuerySubscriber"> + <tag name="event_subscriber"/> + </service> + + <service class="Civi\Api4\Service\Spec\Provider\CustomValueSpecProvider"> + <tag name="spec_provider"/> + </service> + + </services> +</container> diff --git a/civicrm/ext/api4/tests/phpunit/Action/BaseCustomValueTest.php b/civicrm/ext/api4/tests/phpunit/Action/BaseCustomValueTest.php new file mode 100644 index 0000000000000000000000000000000000000000..0ec465105286bbb2e3e20ceb1c97fe673d269a8e --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/BaseCustomValueTest.php @@ -0,0 +1,30 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Test\Api4\UnitTestCase; +use Civi\Test\Api4\Traits\TableDropperTrait; + +abstract class BaseCustomValueTest extends UnitTestCase { + + use TableDropperTrait; + + /** + * Set up baseline for testing + */ + public function setUp() { + $cleanup_params = [ + 'tablesToTruncate' => [ + 'civicrm_custom_group', + 'civicrm_custom_field', + 'civicrm_contact', + 'civicrm_option_group', + 'civicrm_option_value' + ], + ]; + + $this->dropByPrefix('civicrm_value_mycontact'); + $this->cleanup($cleanup_params); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/BasicCustomFieldTest.php b/civicrm/ext/api4/tests/phpunit/Action/BasicCustomFieldTest.php new file mode 100644 index 0000000000000000000000000000000000000000..080273301b490e9c6204f88796ca7bcea7de1a8c --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/BasicCustomFieldTest.php @@ -0,0 +1,70 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; + +/** + * @group headless + */ +class BasicCustomFieldTest extends BaseCustomValueTest { + + public function testWithSingleField() { + + $customGroup = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'MyContactFields') + ->addValue('extends', 'Contact') + ->execute() + ->first(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavColor') + ->addValue('custom_group_id', $customGroup['id']) + ->addValue('html_type', 'Text') + ->addValue('data_type', 'String') + ->execute(); + + $contactId = Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Johann') + ->addValue('last_name', 'Tester') + ->addValue('contact_type', 'Individual') + ->addValue('MyContactFields.FavColor', 'Red') + ->execute() + ->first()['id']; + + $contact = Contact::get() + ->setCheckPermissions(FALSE) + ->addSelect('first_name') + ->addSelect('MyContactFields.FavColor') + ->addWhere('id', '=', $contactId) + ->addWhere('MyContactFields.FavColor', '=', 'Red') + ->execute() + ->first(); + + $this->assertArrayHasKey('MyContactFields', $contact); + $contactFields = $contact['MyContactFields']; + $this->assertArrayHasKey('FavColor', $contactFields); + $this->assertEquals('Red', $contactFields['FavColor']); + + Contact::update() + ->addWhere('id', '=', $contactId) + ->addValue('MyContactFields.FavColor', 'Blue') + ->execute(); + + $contact = Contact::get() + ->setCheckPermissions(FALSE) + ->addSelect('MyContactFields.FavColor') + ->addWhere('id', '=', $contactId) + ->execute() + ->first(); + + $contactFields = $contact['MyContactFields']; + $this->assertEquals('Blue', $contactFields['FavColor']); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/ComplexQueryTest.php b/civicrm/ext/api4/tests/phpunit/Action/ComplexQueryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..dcc14ddd8c5b84feff5513cdd739c0331a9f27b6 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/ComplexQueryTest.php @@ -0,0 +1,90 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Test\Api4\UnitTestCase; +use Civi\Api4\Activity; + +/** + * @group headless + * + * This class tests a series of complex query situations described in the + * initial APIv4 specification + */ +class ComplexQueryTest extends UnitTestCase { + + public function setUpHeadless() { + $relatedTables = [ + 'civicrm_contact', + 'civicrm_option_group', + 'civicrm_option_value', + 'civicrm_activity', + 'civicrm_activity_contact', + ]; + $this->cleanup(['tablesToTruncate' => $relatedTables]); + $this->loadDataSet('DefaultDataSet'); + + return parent::setUpHeadless(); + } + + /** + * Fetch all activities for housing support cases. Expects a single activity + * loaded from the data set. + */ + public function testGetAllHousingSupportActivities() { + $results = Activity::get() + ->setCheckPermissions(FALSE) + ->addWhere('activity_type.name', '=', 'housing_support') + ->execute(); + + $this->assertCount(1, $results); + } + + /** + * Fetch all activities with a blue tag; and return all tags on the activities + */ + public function testGetAllTagsForBlueTaggedActivities() { + + } + + /** + * Fetch contacts named 'Bob' and all of their blue activities + */ + public function testGetAllBlueActivitiesForBobs() { + + } + + /** + * Get all contacts in a zipcode and return their Home or Work email addresses + */ + public function testGetHomeOrWorkEmailsForContactsWithZipcode() { + + } + + /** + * Fetch all activities where Bob is the assignee or source + */ + public function testGetActivitiesWithBobAsAssigneeOrSource() { + + } + + /** + * Get all contacts which + * (a) have address in zipcode 94117 or 94118 or in city "San Francisco","LA" + * and + * (b) are not deceased and + * (c) have a custom-field "most_important_issue=Environment". + */ + public function testAWholeLotOfConditions() { + + } + + /** + * Get participants who attended CiviCon 2012 but not CiviCon 2013. + * Return their name and email. + */ + public function testGettingNameAndEmailOfAttendeesOfCiviCon2012Only() { + + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/CreateCustomValueTest.php b/civicrm/ext/api4/tests/phpunit/Action/CreateCustomValueTest.php new file mode 100644 index 0000000000000000000000000000000000000000..762b46173c22f465b26720146853d54733af37c9 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/CreateCustomValueTest.php @@ -0,0 +1,64 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; +use Civi\Api4\OptionGroup; +use Civi\Api4\OptionValue; + +/** + * @group headless + */ +class CreateCustomValueTest extends BaseCustomValueTest { + + public function testGetWithCustomData() { + $optionValues = ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue']; + + $customGroup = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'MyContactFields') + ->addValue('extends', 'Contact') + ->execute() + ->first(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'Color') + ->addValue('options', $optionValues) + ->addValue('custom_group_id', $customGroup['id']) + ->addValue('html_type', 'Select') + ->addValue('data_type', 'String') + ->execute(); + + $customField = CustomField::get() + ->setCheckPermissions(FALSE) + ->addWhere('label', '=', 'Color') + ->execute() + ->first(); + + $this->assertNotNull($customField['option_group_id']); + $optionGroupId = $customField['option_group_id']; + + $optionGroup = OptionGroup::get() + ->setCheckPermissions(FALSE) + ->addWhere('id', '=', $optionGroupId) + ->execute() + ->first(); + + $this->assertEquals('Color', $optionGroup['title']); + + $createdOptionValues = OptionValue::get() + ->setCheckPermissions(FALSE) + ->addWhere('option_group_id', '=', $optionGroupId) + ->execute() + ->getArrayCopy(); + + $values = array_column($createdOptionValues, 'value'); + $labels = array_column($createdOptionValues, 'label'); + $createdOptionValues = array_combine($values, $labels); + + $this->assertEquals($optionValues, $createdOptionValues); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/CreateWithOptionGroupTest.php b/civicrm/ext/api4/tests/phpunit/Action/CreateWithOptionGroupTest.php new file mode 100644 index 0000000000000000000000000000000000000000..ffb86c88905436fb33066050f05ca161ebefb6cf --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/CreateWithOptionGroupTest.php @@ -0,0 +1,178 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; +use Civi\Api4\Contact; + +/** + * @group headless + */ +class CreateWithOptionGroupTest extends BaseCustomValueTest { + + /** + * Remove the custom tables + */ + public function setUp() { + $this->dropByPrefix('civicrm_value_financial'); + $this->dropByPrefix('civicrm_value_favorite'); + parent::setUp(); + } + + public function testGetWithCustomData() { + $customGroupId = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'FavoriteThings') + ->addValue('extends', 'Contact') + ->execute() + ->first()['id']; + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavColor') + ->addValue('options', ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue']) + ->addValue('custom_group_id', $customGroupId) + ->addValue('html_type', 'Select') + ->addValue('data_type', 'String') + ->execute(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavFood') + ->addValue('options', ['1' => 'Corn', '2' => 'Potatoes', '3' => 'Cheese']) + ->addValue('custom_group_id', $customGroupId) + ->addValue('html_type', 'Select') + ->addValue('data_type', 'String') + ->execute(); + + $customGroupId = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'FinancialStuff') + ->addValue('extends', 'Contact') + ->execute() + ->first()['id']; + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'Salary') + ->addValue('custom_group_id', $customGroupId) + ->addValue('html_type', 'Number') + ->addValue('data_type', 'Money') + ->execute(); + + Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Jerome') + ->addValue('last_name', 'Tester') + ->addValue('contact_type', 'Individual') + ->addValue('FavoriteThings.FavColor', 'r') + ->addValue('FavoriteThings.FavFood', '1') + ->addValue('FinancialStuff.Salary', 50000) + ->execute(); + + $result = Contact::get() + ->setCheckPermissions(FALSE) + ->addSelect('first_name') + ->addSelect('FavoriteThings.FavColor.label') + ->addSelect('FavoriteThings.FavFood.label') + ->addSelect('FinancialStuff.Salary') + ->addWhere('FavoriteThings.FavFood.label', 'IN', ['Corn', 'Potatoes']) + ->addWhere('FinancialStuff.Salary', '>', '10000') + ->execute() + ->first(); + + $this->assertArrayHasKey('FavoriteThings', $result); + $favoriteThings = $result['FavoriteThings']; + $favoriteFood = $favoriteThings['FavFood']; + $favoriteColor = $favoriteThings['FavColor']; + $financialStuff = $result['FinancialStuff']; + $this->assertEquals('Red', $favoriteColor['label']); + $this->assertEquals('Corn', $favoriteFood['label']); + $this->assertEquals(50000, $financialStuff['Salary']); + } + + public function testWithCustomDataForMultipleContacts() { + $customGroupId = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'FavoriteThings') + ->addValue('extends', 'Contact') + ->execute() + ->first()['id']; + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavColor') + ->addValue('options', ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue']) + ->addValue('custom_group_id', $customGroupId) + ->addValue('html_type', 'Select') + ->addValue('data_type', 'String') + ->execute(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavFood') + ->addValue('options', ['1' => 'Corn', '2' => 'Potatoes', '3' => 'Cheese']) + ->addValue('custom_group_id', $customGroupId) + ->addValue('html_type', 'Select') + ->addValue('data_type', 'String') + ->execute(); + + $customGroupId = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'FinancialStuff') + ->addValue('extends', 'Contact') + ->execute() + ->first()['id']; + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'Salary') + ->addValue('custom_group_id', $customGroupId) + ->addValue('html_type', 'Number') + ->addValue('data_type', 'Money') + ->execute(); + + Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Red') + ->addValue('last_name', 'Corn') + ->addValue('contact_type', 'Individual') + ->addValue('FavoriteThings.FavColor', 'r') + ->addValue('FavoriteThings.FavFood', '1') + ->addValue('FinancialStuff.Salary', 10000) + ->execute(); + + Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Blue') + ->addValue('last_name', 'Cheese') + ->addValue('contact_type', 'Individual') + ->addValue('FavoriteThings.FavColor', 'b') + ->addValue('FavoriteThings.FavFood', '3') + ->addValue('FinancialStuff.Salary', 500000) + ->execute(); + + $result = Contact::get() + ->setCheckPermissions(FALSE) + ->addSelect('first_name') + ->addSelect('last_name') + ->addSelect('FavoriteThings.FavColor.label') + ->addSelect('FavoriteThings.FavFood.label') + ->addSelect('FinancialStuff.Salary') + ->addWhere('FavoriteThings.FavFood.label', 'IN', ['Corn', 'Cheese']) + ->execute(); + + $blueCheese = NULL; + foreach ($result as $contact) { + if ($contact['first_name'] === 'Blue') { + $blueCheese = $contact; + } + } + + $this->assertEquals('Blue', $blueCheese['FavoriteThings']['FavColor']['label']); + $this->assertEquals('Cheese', $blueCheese['FavoriteThings']['FavFood']['label']); + $this->assertEquals(500000, $blueCheese['FinancialStuff']['Salary']); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/CustomValuePerformanceTest.php b/civicrm/ext/api4/tests/phpunit/Action/CustomValuePerformanceTest.php new file mode 100644 index 0000000000000000000000000000000000000000..bd669d3e8988ced5d2181c39309ff611302ef3fd --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/CustomValuePerformanceTest.php @@ -0,0 +1,94 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; +use Civi\Test\Api4\Traits\QueryCounterTrait; + +/** + * @group headless + */ +class CustomValuePerformanceTest extends BaseCustomValueTest { + + use QueryCounterTrait; + + public function testQueryCount() { + + $customGroupId = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'MyContactFields') + ->addValue('title', 'MyContactFields') + ->addValue('extends', 'Contact') + ->execute() + ->first()['id']; + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavColor') + ->addValue('custom_group_id', $customGroupId) + ->addValue('options', ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue']) + ->addValue('html_type', 'Select') + ->addValue('data_type', 'String') + ->execute(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavAnimal') + ->addValue('custom_group_id', $customGroupId) + ->addValue('html_type', 'Text') + ->addValue('data_type', 'String') + ->execute(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavLetter') + ->addValue('custom_group_id', $customGroupId) + ->addValue('html_type', 'Text') + ->addValue('data_type', 'String') + ->execute(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavFood') + ->addValue('custom_group_id', $customGroupId) + ->addValue('html_type', 'Text') + ->addValue('data_type', 'String') + ->execute(); + + $this->beginQueryCount(); + + Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Red') + ->addValue('last_name', 'Tester') + ->addValue('contact_type', 'Individual') + ->addValue('MyContactFields.FavColor', 'r') + ->addValue('MyContactFields.FavAnimal', 'Sheep') + ->addValue('MyContactFields.FavLetter', 'z') + ->addValue('MyContactFields.FavFood', 'Coconuts') + ->execute(); + + Contact::get() + ->setCheckPermissions(FALSE) + ->addSelect('display_name') + ->addSelect('MyContactFields.FavColor.label') + ->addSelect('MyContactFields.FavColor.weight') + ->addSelect('MyContactFields.FavColor.is_default') + ->addSelect('MyContactFields.FavAnimal') + ->addSelect('MyContactFields.FavLetter') + ->addWhere('MyContactFields.FavColor', '=', 'r') + ->addWhere('MyContactFields.FavFood', '=', 'Coconuts') + ->addWhere('MyContactFields.FavAnimal', '=', 'Sheep') + ->addWhere('MyContactFields.FavLetter', '=', 'z') + ->execute() + ->first(); + + // FIXME: This count is artificially high due to the line + // $this->entity = Tables::getBriefName(Tables::getClassForTable($targetTable)); + // In class Joinable. TODO: Investigate why. + $this->markTestIncomplete("Query count: " . $this->getQueryCount()); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/CustomValueTest.php b/civicrm/ext/api4/tests/phpunit/Action/CustomValueTest.php new file mode 100644 index 0000000000000000000000000000000000000000..0391806d097308dbc72e391afe42cf6a43b3331a --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/CustomValueTest.php @@ -0,0 +1,194 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; +use Civi\Api4\CustomValue; +use Civi\Api4\Contact; + +/** + * @group headless + */ +class CustomValueTest extends BaseCustomValueTest { + + protected $contactID; + + /** + * Create dummy Custom group, custom field and contact for testing + */ + public function createCustomData() { + $optionValues = ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue']; + + $customGroup = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'MyContactFields') + ->addValue('extends', 'Contact') + ->addValue('is_multiple', TRUE) + ->execute() + ->first(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'Color') + ->addValue('options', $optionValues) + ->addValue('custom_group_id', $customGroup['id']) + ->addValue('html_type', 'Select') + ->addValue('data_type', 'String') + ->execute(); + + $customField = CustomField::get() + ->setCheckPermissions(FALSE) + ->addWhere('label', '=', 'Color') + ->execute() + ->first(); + + $this->contactID = Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Johann') + ->addValue('last_name', 'Tester') + ->addValue('contact_type', 'Individual') + ->execute() + ->first()['id']; + } + + /** + * Test CustomValue::getFields + */ + public function testGetFields() { + // Create custom group and its field + $this->createCustomData(); + + // Retrieve and check the fields of CustomValue = Custom_MyContactFields + $fields = CustomValue::getFields('MyContactFields')->execute(); + $expectedResult = [ + [ + 'custom_field_id' => 1, + 'custom_group' => 'MyContactFields', + 'table_name' => 'civicrm_value_mycontactfiel_1', + 'column_name' => 'color_1', + 'name' => 'Color', + 'title' => ts('Color'), + 'entity' => 'Custom_MyContactFields', + 'data_type' => 'String', + 'fk_entity' => NULL, + ], + [ + 'name' => 'id', + 'title' => ts('Custom Table Unique ID'), + 'entity' => 'Custom_MyContactFields', + 'data_type' => 'Integer', + 'fk_entity' => NULL, + ], + [ + 'name' => 'entity_id', + 'title' => ts('Entity ID'), + 'entity' => 'Custom_MyContactFields', + 'data_type' => 'Integer', + 'fk_entity' => 'Contact', + ], + ]; + + foreach ($expectedResult as $key => $field) { + foreach ($field as $attr => $value) { + $this->assertEquals($expectedResult[$key][$attr], $fields[$key][$attr]); + } + } + } + + /** + * Test CustomValue::Get/Create/Update/Replace/Delete + */ + public function testCRUD() { + $this->createCustomData(); + + // CASE 1: Test CustomValue::create + // Create two records for a single contact and using CustomValue::get ensure that two records are created + CustomValue::create('MyContactFields') + ->addValue("Color", 'Green') + ->addValue("entity_id", $this->contactID) + ->execute(); + CustomValue::create('MyContactFields') + ->addValue("Color", 'Red') + ->addValue("entity_id", $this->contactID) + ->execute(); + // fetch custom values using API4 CustomValue::get + $result = CustomValue::get('MyContactFields')->execute(); + + // check if two custom values are created + $this->assertEquals(2, count($result)); + $expectedResult = [ + [ + 'id' => 1, + 'Color' => 'Green', + 'entity_id' => $this->contactID, + ], + [ + 'id' => 2, + 'Color' => 'Red', + 'entity_id' => $this->contactID, + ], + ]; + // match the data + foreach ($expectedResult as $key => $field) { + foreach ($field as $attr => $value) { + $this->assertEquals($expectedResult[$key][$attr], $result[$key][$attr]); + } + } + + // CASE 2: Test CustomValue::update + // Update a records whose id is 1 and change the custom field (name = Color) value to 'White' from 'Green' + CustomValue::update('MyContactFields') + ->addWhere("id", "=", 1) + ->addValue("Color", 'White') + ->execute(); + + // ensure that the value is changed for id = 1 + $color = CustomValue::get('MyContactFields') + ->addWhere("id", "=", 1) + ->execute() + ->first()['Color']; + $this->assertEquals('White', $color); + + // CASE 3: Test CustomValue::replace + // create a second contact which will be used to replace the custom values, created earlier + $secondContactID = Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Adam') + ->addValue('last_name', 'Tester') + ->addValue('contact_type', 'Individual') + ->execute() + ->first()['id']; + // Replace all the records which was created earlier with entity_id = first contact + // with custom record ['Color' => 'Rainbow', 'entity_id' => $secondContactID] + CustomValue::replace('MyContactFields') + ->setRecords([['Color' => 'Rainbow', 'entity_id' => $secondContactID]]) + ->addWhere('entity_id', '=', $this->contactID) + ->execute(); + + // Check the two records created earlier is replaced by new contact + $result = CustomValue::get('MyContactFields')->execute(); + $this->assertEquals(1, count($result)); + + $expectedResult = [ + [ + 'id' => 3, + 'Color' => 'Rainbow', + 'entity_id' => $secondContactID, + ], + ]; + foreach ($expectedResult as $key => $field) { + foreach ($field as $attr => $value) { + $this->assertEquals($expectedResult[$key][$attr], $result[$key][$attr]); + } + } + + // CASE 4: Test CustomValue::delete + // There is only record left whose id = 3, delete that record on basis of criteria id = 3 + CustomValue::delete('MyContactFields')->addWhere("id", "=", 3)->execute(); + $result = CustomValue::get('MyContactFields')->execute(); + // check that there are no custom values present + $this->assertEquals(0, count($result)); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/ExtendFromIndividualTest.php b/civicrm/ext/api4/tests/phpunit/Action/ExtendFromIndividualTest.php new file mode 100644 index 0000000000000000000000000000000000000000..2d3be50ca3c903914906879dd12e4d88a8916d52 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/ExtendFromIndividualTest.php @@ -0,0 +1,54 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; + +/** + * @group headless + */ +class ExtendFromIndividualTest extends BaseCustomValueTest { + + public function testGetWithNonStandardExtends() { + + $customGroup = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'MyContactFields') + ->addValue('extends', 'Individual') // not Contact + ->execute() + ->first(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavColor') + ->addValue('custom_group_id', $customGroup['id']) + ->addValue('html_type', 'Text') + ->addValue('data_type', 'String') + ->execute(); + + $contactId = Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Johann') + ->addValue('last_name', 'Tester') + ->addValue('contact_type', 'Individual') + ->addValue('MyContactFields.FavColor', 'Red') + ->execute() + ->first()['id']; + + $contact = Contact::get() + ->setCheckPermissions(FALSE) + ->addSelect('display_name') + ->addSelect('MyContactFields.FavColor') + ->addWhere('id', '=', $contactId) + ->execute() + ->first(); + + $this->assertArrayHasKey('MyContactFields', $contact); + $contactFields = $contact['MyContactFields']; + $favColor = $contactFields['FavColor']; + $this->assertEquals('Red', $favColor); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/FkJoinTest.php b/civicrm/ext/api4/tests/phpunit/Action/FkJoinTest.php new file mode 100644 index 0000000000000000000000000000000000000000..20ec50dcf65c43bee1728e7de443f46fca4be7fd --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/FkJoinTest.php @@ -0,0 +1,78 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Test\Api4\UnitTestCase; +use Civi\Api4\Activity; +use Civi\Api4\Contact; + +/** + * @group headless + */ +class FkJoinTest extends UnitTestCase { + + public function setUpHeadless() { + $relatedTables = [ + 'civicrm_contact', + 'civicrm_option_group', + 'civicrm_option_value', + 'civicrm_activity', + 'civicrm_phone', + 'civicrm_activity_contact', + ]; + $this->cleanup(['tablesToTruncate' => $relatedTables]); + $this->loadDataSet('DefaultDataSet'); + + return parent::setUpHeadless(); + } + + /** + * Fetch all activities for housing support cases. Expects a single activity + * loaded from the data set. + */ + public function testThreeLevelJoin() { + $results = Activity::get() + ->setCheckPermissions(FALSE) + ->addWhere('activity_type.name', '=', 'housing_support') + ->execute(); + + $this->assertCount(1, $results); + } + + public function testActivityContactJoin() { + $results = Activity::get() + ->setCheckPermissions(FALSE) + ->addSelect('assignees.id') + ->addSelect('assignees.first_name') + ->addSelect('assignees.display_name') + ->addWhere('assignees.first_name', '=', 'Test') + ->execute(); + + $firstResult = $results->first(); + + $this->assertCount(1, $results); + $this->assertTrue(is_array($firstResult['assignees'])); + + $firstAssignee = array_shift($firstResult['assignees']); + $this->assertEquals($firstAssignee['first_name'], 'Test'); + } + + public function testContactPhonesJoin() { + $testContact = $this->getReference('test_contact_1'); + $testPhone = $this->getReference('test_phone_1'); + + $results = Contact::get() + ->setCheckPermissions(FALSE) + ->addSelect('phones.phone') + ->addWhere('id', '=', $testContact['id']) + ->addWhere('phones.location_type.name', '=', 'Home') + ->execute() + ->first(); + + $this->assertArrayHasKey('phones', $results); + $this->assertCount(1, $results['phones']); + $firstPhone = array_shift($results['phones']); + $this->assertEquals($testPhone['phone'], $firstPhone['phone']); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/GetExtraFieldsTest.php b/civicrm/ext/api4/tests/phpunit/Action/GetExtraFieldsTest.php new file mode 100644 index 0000000000000000000000000000000000000000..bc9b10e7ade312ebc4860320b6d4c4f4b5b52f34 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/GetExtraFieldsTest.php @@ -0,0 +1,26 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Test\Api4\UnitTestCase; +use Civi\Api4\Contact; + +/** + * @group headless + */ +class GetExtraFieldsTest extends UnitTestCase { + + public function testBAOFieldsWillBeReturned() { + $returnedFields = Contact::getFields() + ->execute() + ->getArrayCopy(); + + $baseFields = \CRM_Contact_BAO_Contact::fields(); + $baseFieldNames = array_column($baseFields, 'name'); + $returnedFieldNames = array_column($returnedFields, 'name'); + $notReturned = array_diff($baseFieldNames, $returnedFieldNames); + + $this->assertEmpty($notReturned); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/NullValueTest.php b/civicrm/ext/api4/tests/phpunit/Action/NullValueTest.php new file mode 100644 index 0000000000000000000000000000000000000000..dc4f656aadf500c5daf4e6ec8b6ebf6adfe0ea14 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/NullValueTest.php @@ -0,0 +1,55 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\Contact; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class NullValueTest extends UnitTestCase { + + public function setUpHeadless() { + $format = '{contact.first_name}{ }{contact.last_name}'; + \Civi::settings()->set('display_name_format', $format); + return parent::setUpHeadless(); + } + + public function testStringNull() { + $contact = Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Joseph') + ->addValue('last_name', 'null') + ->addValue('contact_type', 'Individual') + ->execute() + ->first(); + + $this->assertSame('Null', $contact['last_name']); + $this->assertSame('Joseph Null', $contact['display_name']); + } + + public function testSettingToNull() { + $contact = Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'ILoveMy') + ->addValue('last_name', 'LastName') + ->addValue('contact_type', 'Individual') + ->execute() + ->first(); + + $this->assertSame('ILoveMy LastName', $contact['display_name']); + $contactId = $contact['id']; + + $contact = Contact::update() + ->setCheckPermissions(FALSE) + ->addWhere('id', '=', $contactId) + ->addValue('last_name', NULL) + ->execute() + ->first(); + + $this->assertSame(NULL, $contact['last_name']); + $this->assertSame('ILoveMy', $contact['display_name']); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/ReplaceTest.php b/civicrm/ext/api4/tests/phpunit/Action/ReplaceTest.php new file mode 100644 index 0000000000000000000000000000000000000000..5306c75159fd3df04d8da9cb84eafdae6beb212e --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/ReplaceTest.php @@ -0,0 +1,70 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\Email; +use Civi\Test\Api4\UnitTestCase; +use Civi\Api4\Contact; + +/** + * @group headless + */ +class ReplaceTest extends UnitTestCase { + + public function testEmailReplace() { + $cid1 = Contact::create() + ->addValue('first_name', 'Lotsa') + ->addValue('last_name', 'Emails') + ->execute() + ->first()['id']; + $cid2 = Contact::create() + ->addValue('first_name', 'Notso') + ->addValue('last_name', 'Many') + ->execute() + ->first()['id']; + $e0 = Email::create() + ->setValues(['contact_id' => $cid2, 'email' => 'nosomany@example.com', 'location_type_id' => 1]) + ->execute() + ->first()['id']; + $e1 = Email::create() + ->setValues(['contact_id' => $cid1, 'email' => 'first@example.com', 'location_type_id' => 1]) + ->execute() + ->first()['id']; + $e2 = Email::create() + ->setValues(['contact_id' => $cid1, 'email' => 'second@example.com', 'location_type_id' => 1]) + ->execute() + ->first()['id']; + $replacement = [ + ['email' => 'firstedited@example.com', 'id' => $e1], + ['contact_id' => $cid1, 'email' => 'third@example.com', 'location_type_id' => 1] + ]; + $replaced = Email::replace() + ->setRecords($replacement) + ->addWhere('contact_id', '=', $cid1) + ->execute(); + // Should have saved 2 records + $this->assertEquals(2, $replaced->count()); + // Should have deleted email2 + $this->assertEquals([$e2], $replaced->deleted); + // Verify contact now has the new email records + $results = Email::get() + ->addWhere('contact_id', '=', $cid1) + ->execute() + ->indexBy('id'); + $this->assertEquals('firstedited@example.com', $results[$e1]['email']); + $this->assertEquals(2, $results->count()); + $this->assertArrayNotHasKey($e2, (array) $results); + $this->assertArrayNotHasKey($e0, (array) $results); + unset($results[$e1]); + foreach ($results as $result) { + $this->assertEquals('third@example.com', $result['email']); + } + // Validate our other contact's email did not get deleted + $c2email = Email::get() + ->addWhere('contact_id', '=', $cid2) + ->execute() + ->first(); + $this->assertEquals('nosomany@example.com', $c2email['email']); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/UpdateContactTest.php b/civicrm/ext/api4/tests/phpunit/Action/UpdateContactTest.php new file mode 100644 index 0000000000000000000000000000000000000000..71265598a6633df432a35511f225a4ff02bf70f9 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/UpdateContactTest.php @@ -0,0 +1,34 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\Contact; +use Civi\Test\Api4\UnitTestCase; + +/** + * Class UpdateContactTest + * @package Civi\Test\Api4\Action + * @group headless + */ +class UpdateContactTest extends UnitTestCase { + + public function testUpdateWillWork() { + $contactId = Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Johann') + ->addValue('last_name', 'Tester') + ->addValue('contact_type', 'Individual') + ->execute() + ->first()['id']; + + $contact = Contact::update() + ->setCheckPermissions(FALSE) + ->addWhere('id', '=', $contactId) + ->addValue('first_name', 'Testy') + ->execute() + ->first(); + $this->assertEquals('Testy', $contact['first_name']); + $this->assertEquals('Tester', $contact['last_name']); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Action/UpdateCustomValueTest.php b/civicrm/ext/api4/tests/phpunit/Action/UpdateCustomValueTest.php new file mode 100644 index 0000000000000000000000000000000000000000..99a9f01101f8cbf1ae42e398cfad338f24022a79 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/UpdateCustomValueTest.php @@ -0,0 +1,56 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\Contact; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; +use \CRM_Core_BAO_CustomValueTable as CustomValueTable; + +/** + * @group headless + */ +class UpdateCustomValueTest extends BaseCustomValueTest { + + public function testGetWithCustomData() { + + $customGroup = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'MyContactFields') + ->addValue('extends', 'Contact') + ->execute() + ->first(); + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavColor') + ->addValue('custom_group_id', $customGroup['id']) + ->addValue('html_type', 'Text') + ->addValue('data_type', 'String') + ->execute(); + + $contactId = Contact::create() + ->setCheckPermissions(FALSE) + ->addValue('first_name', 'Red') + ->addValue('last_name', 'Tester') + ->addValue('contact_type', 'Individual') + ->addValue('MyContactFields.FavColor', 'Red') + ->execute() + ->first()['id']; + + Contact::update() + ->setCheckPermissions(FALSE) + ->addWhere('id', '=', $contactId) + ->addValue('first_name', 'Red') + ->addValue('last_name', 'Tester') + ->addValue('contact_type', 'Individual') + ->addValue('MyContactFields.FavColor', 'Blue') + ->execute(); + + $result = CustomValueTable::getEntityValues($contactId, 'Contact'); + + $this->assertEquals(1, count($result)); + $this->assertContains('Blue', $result); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/DataSets/ConformanceTest.json b/civicrm/ext/api4/tests/phpunit/DataSets/ConformanceTest.json new file mode 100644 index 0000000000000000000000000000000000000000..85b74c177a9804a39ad4e82eec8809039bd9285d --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/DataSets/ConformanceTest.json @@ -0,0 +1,62 @@ +{ + "Contact": [ + { + "first_name": "Janice", + "last_name": "Voss", + "contact_type": "Individual" + } + ], + "CustomGroup": [ + { + "name": "MyFavoriteThings", + "extends": "Contact" + } + ], + "OptionGroup": [ + { + "name": "payment_instrument" + }, + { + "name": "contribution_status" + }, + { + "name": "account_relationship" + }, + { + "name": "event_type" + }, + { + "name": "activity_type" + } + ], + "OptionValue": [ + { + "option_group": "contribution_status", + "label": "Completed" + }, + { + "option_group": "payment_instrument", + "label": "cash", + "is_default": 1 + }, + { + "option_group": "account_relationship", + "label": "Sales Tax Account is" + }, + { + "option_group": "event_type", + "label": "major_historical_event" + }, + { + "option_group": "activity_type", + "label": "Contribution" + } + ], + "Event": [ + { + "start_date": "20401010000000", + "title": "The Singularity", + "event_type_id": "major_historical_event" + } + ] +} diff --git a/civicrm/ext/api4/tests/phpunit/DataSets/DefaultDataSet.json b/civicrm/ext/api4/tests/phpunit/DataSets/DefaultDataSet.json new file mode 100644 index 0000000000000000000000000000000000000000..1f8bd9e09de8c9f5424082aed90662f7949435e4 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/DataSets/DefaultDataSet.json @@ -0,0 +1,80 @@ +{ + "Contact": [ + { + "first_name": "Test", + "last_name": "Contact", + "contact_type": "Individual", + "@ref": "test_contact_1" + }, + { + "first_name": "Second", + "last_name": "Test", + "contact_type": "Individual", + "@ref": "test_contact_2" + } + ], + "OptionGroup": [ + { + "name": "activity_type" + }, + { + "name": "activity_contacts" + } + ], + "OptionValue": [ + { + "label": "Housing Support", + "name": "housing_support", + "option_group": "activity_type" + }, + { + "label": "Another Activity Type", + "name": "another_activity_type", + "option_group": "activity_type" + }, + { + "label": "Activity Source", + "name": "Activity Source", + "option_group": "activity_contacts" + }, + { + "label": "Activity Assignees", + "name": "Activity Assignees", + "option_group": "activity_contacts" + }, + { + "label": "Activity Targets", + "name": "Activity Targets", + "option_group": "activity_contacts" + } + ], + "Activity": [ + { + "name": "Test Housing Support Activity", + "activity_type": "housing_support", + "source_contact_id": "@ref test_contact_1.id" + }, + { + "name": "Another Activity", + "activity_type": "another_activity_type", + "source_contact_id": "@ref test_contact_1.id", + "assignee_contact_id": [ + "@ref test_contact_1.id", + "@ref test_contact_2.id" + ] + } + ], + "Phone": [ + { + "contact_id": "@ref test_contact_1.id", + "phone": "+35355439483", + "location_type_id": "1", + "@ref": "test_phone_1" + }, + { + "contact_id": "@ref test_contact_1.id", + "phone": "+3538733439483", + "location_type_id": "2" + } + ] +} diff --git a/civicrm/ext/api4/tests/phpunit/DataSets/MultiContactMultiEmail.json b/civicrm/ext/api4/tests/phpunit/DataSets/MultiContactMultiEmail.json new file mode 100644 index 0000000000000000000000000000000000000000..ce3fbcaf92ecf77c99bcfad14713048812dd3f15 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/DataSets/MultiContactMultiEmail.json @@ -0,0 +1,42 @@ +{ + "Contact": [ + { + "first_name": "First", + "last_name": "Contact", + "contact_type": "Individual", + "@ref": "test_contact_1" + }, + { + "first_name": "Second", + "last_name": "Contact", + "contact_type": "Individual", + "@ref": "test_contact_2" + } + ], + "Email": [ + { + "contact_id": "@ref test_contact_1.id", + "email": "test_contact_one_home@fakedomain.com", + "location_type_id": 1, + "@ref": "test_email_1" + }, + { + "contact_id": "@ref test_contact_1.id", + "email": "test_contact_one_work@fakedomain.com", + "location_type_id": 2, + "@ref": "test_email_2" + }, + { + "contact_id": "@ref test_contact_2.id", + "email": "test_contact_two_home@fakedomain.com", + "location_type_id": 1, + "@ref": "test_email_3" + }, + { + "contact_id": "@ref test_contact_2.id", + "email": "test_contact_two_work@fakedomain.com", + "location_type_id": 2, + "@ref": "test_email_4" + } + ] +} diff --git a/civicrm/ext/api4/tests/phpunit/DataSets/ParticipantRoleOptionGroup.json b/civicrm/ext/api4/tests/phpunit/DataSets/ParticipantRoleOptionGroup.json new file mode 100644 index 0000000000000000000000000000000000000000..6010c1ed7417db4be5762ed37b6778d1bd3fecc4 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/DataSets/ParticipantRoleOptionGroup.json @@ -0,0 +1,25 @@ +{ + "OptionGroup": [ + { + "name": "participant_role" + } + ], + "OptionValue": [ + { + "label": "Attendee", + "option_group": "participant_role" + }, + { + "label": "Volunteer", + "option_group": "participant_role" + }, + { + "label": "Host", + "option_group": "participant_role" + }, + { + "label": "Speaker", + "option_group": "participant_role" + } + ] +} diff --git a/civicrm/ext/api4/tests/phpunit/DataSets/SingleContact.json b/civicrm/ext/api4/tests/phpunit/DataSets/SingleContact.json new file mode 100644 index 0000000000000000000000000000000000000000..2613fec7a07f9c256e15956c6ca476827ba56a41 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/DataSets/SingleContact.json @@ -0,0 +1,126 @@ +{ + "Contact": [ + { + "first_name": "Single", + "last_name": "Contact", + "contact_type": "Individual", + "preferred_communication_method": "phone", + "@ref": "test_contact_1" + } + ], + "OptionGroup": [ + { + "name": "activity_type" + }, + { + "name": "activity_contacts" + }, + { + "name": "preferred_communication_method" + } + ], + "OptionValue": [ + { + "label": "Did Something Amazing", + "name": "did_something_great", + "option_group": "activity_type" + }, + { + "label": "Did That Other Thing", + "name": "another_activity_type", + "option_group": "activity_type" + }, + { + "label": "Activity Source", + "option_group": "activity_contacts" + }, + { + "label": "Activity Assignees", + "option_group": "activity_contacts" + }, + { + "label": "Activity Targets", + "option_group": "activity_contacts" + }, + { + "label": "Phone", + "value": "phone", + "option_group": "preferred_communication_method" + }, + { + "label": "Email", + "value": "email", + "option_group": "preferred_communication_method" + } + ], + "Activity": [ + { + "subject": "Won A Nobel Prize", + "activity_type": "did_something_great", + "source_contact_id": "@ref test_contact_1.id", + "@ref": "test_activity_1" + }, + { + "subject": "Cleaned The House", + "activity_type": "another_activity_type", + "source_contact_id": "@ref test_contact_1.id", + "assignee_contact_id": [ + "@ref test_contact_1.id" + ], + "@ref": "test_activity_2" + } + ], + "Phone": [ + { + "contact_id": "@ref test_contact_1.id", + "phone": "+1111111111111", + "location_type_id": 1 + }, + { + "contact_id": "@ref test_contact_1.id", + "phone": "+2222222222222", + "location_type_id": 2 + } + ], + "Email": [ + { + "contact_id": "@ref test_contact_1.id", + "email": "test_contact_home@fakedomain.com", + "location_type_id": 1 + }, + { + "contact_id": "@ref test_contact_1.id", + "email": "test_contact_work@fakedomain.com", + "location_type_id": 2 + } + ], + "Address": [ + { + "contact_id": "@ref test_contact_1.id", + "street_address": "123 Sesame St.", + "location_type_id": 1 + } + ], + "Website": [ + { + "contact_id": "@ref test_contact_1.id", + "url": "http://test.com", + "website_id": 1 + } + ], + "OpenID": [ + { + "contact_id": "@ref test_contact_1.id", + "openid": "123", + "allowed_to_login": 1, + "location_type_id": 1 + } + ], + "IM": [ + { + "contact_id": "@ref test_contact_1.id", + "name": "123", + "location_type_id": 1 + } + ] +} diff --git a/civicrm/ext/api4/tests/phpunit/Entity/ConformanceTest.php b/civicrm/ext/api4/tests/phpunit/Entity/ConformanceTest.php new file mode 100644 index 0000000000000000000000000000000000000000..edde5a90a9101bb9832339ff7038e6927d1def08 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Entity/ConformanceTest.php @@ -0,0 +1,221 @@ +<?php + +namespace Civi\Test\Api4\Entity; + +use Civi\Api4\Generic\AbstractAction; +use Civi\Api4\Generic\AbstractEntity; +use Civi\Api4\Entity; +use Civi\Test\Api4\Service\TestCreationParameterProvider; +use Civi\Test\Api4\Traits\TableDropperTrait; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class ConformanceTest extends UnitTestCase { + + use TableDropperTrait; + + /** + * @var TestCreationParameterProvider + */ + protected $creationParamProvider; + + /** + * Set up baseline for testing + */ + public function setUp() { + $tablesToTruncate = [ + 'civicrm_custom_group', + 'civicrm_custom_field', + 'civicrm_option_group', + ]; + $this->dropByPrefix('civicrm_value_myfavorite'); + $this->cleanup(['tablesToTruncate' => $tablesToTruncate]); + $this->loadDataSet('ConformanceTest'); + $this->creationParamProvider = \Civi::container()->get('test.param_provider'); + parent::setUp(); + // calculateTaxAmount() for contribution triggers a deprecation notice + \PHPUnit_Framework_Error_Deprecated::$enabled = FALSE; + } + + public function getEntities() { + $result = []; + $entities = Entity::get()->setCheckPermissions(FALSE)->execute(); + foreach ($entities as $entity) { + if ($entity['name'] != 'Entity') { + $result[] = [$entity['name']]; + } + } + return $result; + } + + /** + * Fixme: This should use getEntities as a dataProvider but that fails for some reason + */ + public function testConformance() { + $entities = $this->getEntities(); + $this->assertNotEmpty($entities); + + foreach ($entities as $data) { + $entity = $data[0]; + $entityClass = 'Civi\Api4\\' . $entity; + + $this->checkActions($entityClass); + $this->checkFields($entityClass, $entity); + $id = $this->checkCreation($entity, $entityClass); + $this->checkGet($entityClass, $id, $entity); + $this->checkUpdateFailsFromCreate($entityClass, $id); + $this->checkWrongParamType($entityClass); + $this->checkDeleteWithNoId($entityClass); + $this->checkDeletion($entityClass, $id); + $this->checkPostDelete($entityClass, $id, $entity); + } + } + + /** + * @param string $entityClass + * @param $entity + */ + protected function checkFields($entityClass, $entity) { + $fields = $entityClass::getFields() + ->setCheckPermissions(FALSE) + ->setIncludeCustom(FALSE) + ->execute() + ->indexBy('name'); + + $errMsg = sprintf('%s is missing required ID field', $entity); + $subset = ['data_type' => 'Integer']; + + $this->assertArraySubset($subset, $fields['id'], $errMsg); + } + + /** + * @param string $entityClass + */ + protected function checkActions($entityClass) { + $actions = $entityClass::getActions() + ->setCheckPermissions(FALSE) + ->execute() + ->indexBy('name'); + + $this->assertNotEmpty($actions->getArrayCopy()); + } + + /** + * @param string $entity + * @param AbstractEntity|string $entityClass + * + * @return mixed + */ + protected function checkCreation($entity, $entityClass) { + $requiredParams = $this->creationParamProvider->getRequired($entity); + $createResult = $entityClass::create() + ->setValues($requiredParams) + ->setCheckPermissions(FALSE) + ->execute() + ->first(); + + $this->assertArrayHasKey('id', $createResult, "create missing ID"); + $id = $createResult['id']; + + $this->assertGreaterThanOrEqual(1, $id, "$entity ID not positive"); + + return $id; + } + + /** + * @param AbstractEntity|string $entityClass + * @param int $id + */ + protected function checkUpdateFailsFromCreate($entityClass, $id) { + $exceptionThrown = ''; + try { + $entityClass::create() + ->setCheckPermissions(FALSE) + ->addValue('id', $id) + ->execute(); + } + catch (\API_Exception $e) { + $exceptionThrown = $e->getMessage(); + } + $this->assertContains('id', $exceptionThrown); + } + + /** + * @param AbstractEntity|string $entityClass + * @param int $id + * @param string $entity + */ + protected function checkGet($entityClass, $id, $entity) { + $getResult = $entityClass::get() + ->setCheckPermissions(FALSE) + ->addWhere('id', '=', $id) + ->execute(); + + $errMsg = sprintf('Failed to fetch a %s after creation', $entity); + $this->assertEquals(1, count($getResult), $errMsg); + } + + /** + * @param AbstractEntity|string $entityClass + */ + protected function checkDeleteWithNoId($entityClass) { + $exceptionThrown = ''; + try { + $entityClass::delete() + ->execute(); + } + catch (\API_Exception $e) { + $exceptionThrown = $e->getMessage(); + } + $this->assertContains('required', $exceptionThrown); + } + + /** + * @param AbstractEntity|string $entityClass + */ + protected function checkWrongParamType($entityClass) { + $exceptionThrown = ''; + try { + $entityClass::get() + ->setCheckPermissions('nada') + ->execute(); + } + catch (\API_Exception $e) { + $exceptionThrown = $e->getMessage(); + } + $this->assertContains('checkPermissions', $exceptionThrown); + $this->assertContains('type', $exceptionThrown); + } + + /** + * @param AbstractEntity|string $entityClass + * @param int $id + */ + protected function checkDeletion($entityClass, $id) { + $deleteResult = $entityClass::delete() + ->setCheckPermissions(FALSE) + ->addWhere('id', '=', $id) + ->execute(); + + // should get back an array of deleted id + $this->assertEquals([$id], (array) $deleteResult); + } + + /** + * @param AbstractEntity|string $entityClass + * @param int $id + * @param string $entity + */ + protected function checkPostDelete($entityClass, $id, $entity) { + $getDeletedResult = $entityClass::get() + ->setCheckPermissions(FALSE) + ->addWhere('id', '=', $id) + ->execute(); + + $errMsg = sprintf('Entity "%s" was not deleted', $entity); + $this->assertEquals(0, count($getDeletedResult), $errMsg); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Entity/ContactJoinTest.php b/civicrm/ext/api4/tests/phpunit/Entity/ContactJoinTest.php new file mode 100644 index 0000000000000000000000000000000000000000..d2db18a328c3469803f11b69320a6ee8de069d88 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Entity/ContactJoinTest.php @@ -0,0 +1,106 @@ +<?php + +namespace Civi\Test\Api4\Entity; + +use Civi\Api4\Contact; +use Civi\Api4\OptionValue; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class ContactJoinTest extends UnitTestCase { + + public function setUpHeadless() { + $relatedTables = [ + 'civicrm_contact', + 'civicrm_address', + 'civicrm_email', + 'civicrm_phone', + 'civicrm_openid', + 'civicrm_im', + 'civicrm_website', + 'civicrm_option_group', + 'civicrm_option_value', + 'civicrm_activity', + 'civicrm_activity_contact', + ]; + + $this->cleanup(['tablesToTruncate' => $relatedTables]); + $this->loadDataSet('SingleContact'); + + return parent::setUpHeadless(); + } + + public function testContactJoin() { + + $contact = $this->getReference('test_contact_1'); + $entitiesToTest = ['Address', 'OpenID', 'IM', 'Website', 'Email', 'Phone']; + + foreach ($entitiesToTest as $entity) { + $results = civicrm_api4($entity, 'get', [ + 'where' => [['contact_id', '=', $contact['id']]], + 'select' => ['contact.display_name', 'contact.id'], + ]); + foreach ($results as $result) { + $this->assertEquals($contact['id'], $result['contact']['id']); + $this->assertEquals($contact['display_name'], $result['contact']['display_name']); + } + } + } + + public function testJoinToPCMWillReturnArray() { + $contact = Contact::create()->setValues([ + 'preferred_communication_method' => [1, 2, 3], + 'contact_type' => 'Individual', + 'first_name' => 'Test', + 'last_name' => 'PCM', + ])->execute()->first(); + + $fetchedContact = Contact::get() + ->addWhere('id', '=', $contact['id']) + ->addSelect('preferred_communication_method') + ->execute() + ->first(); + + $this->assertCount(3, $fetchedContact["preferred_communication_method"]); + } + + public function testJoinToPCMOptionValueWillShowLabel() { + $options = OptionValue::get() + ->addWhere('option_group.name', '=', 'preferred_communication_method') + ->execute() + ->getArrayCopy(); + + $optionValues = array_column($options, 'value'); + $labels = array_column($options, 'label'); + + $contact = Contact::create()->setValues([ + 'preferred_communication_method' => $optionValues, + 'contact_type' => 'Individual', + 'first_name' => 'Test', + 'last_name' => 'PCM', + ])->execute()->first(); + + $contact2 = Contact::create()->setValues([ + 'preferred_communication_method' => $optionValues, + 'contact_type' => 'Individual', + 'first_name' => 'Test', + 'last_name' => 'PCM2', + ])->execute()->first(); + + $contactIds = array_column([$contact, $contact2], 'id'); + + $fetchedContact = Contact::get() + ->addWhere('id', 'IN', $contactIds) + ->addSelect('preferred_communication_method.label') + ->execute() + ->first(); + + $preferredMethod = $fetchedContact['preferred_communication_method']; + $returnedLabels = array_column($preferredMethod, 'label'); + + $this->assertEquals($labels, $returnedLabels); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Entity/EntityTest.php b/civicrm/ext/api4/tests/phpunit/Entity/EntityTest.php new file mode 100644 index 0000000000000000000000000000000000000000..8f7ecd00586bf6f74a527fafe179ec55dfa17e8c --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Entity/EntityTest.php @@ -0,0 +1,35 @@ +<?php + +namespace Civi\Test\Api4\Entity; + +use Civi\Api4\Entity; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class EntityTest extends UnitTestCase { + + public function testEntityGet() { + $result = Entity::get() + ->setCheckPermissions(FALSE) + ->execute() + ->indexBy('name'); + $this->assertArrayHasKey('Entity', $result, + "Entity::get missing itself"); + $this->assertArrayHasKey('Participant', $result, + "Entity::get missing Participant"); + } + + public function testEntity() { + $result = Entity::getActions() + ->setCheckPermissions(FALSE) + ->execute() + ->indexBy('name'); + $this->assertNotContains( + 'create', + array_keys((array) $result), + "Entity entity has more than basic actions"); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Entity/ParticipantTest.php b/civicrm/ext/api4/tests/phpunit/Entity/ParticipantTest.php new file mode 100644 index 0000000000000000000000000000000000000000..e96b9cef79d68e1484e5fb900332dd93862fef8e --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Entity/ParticipantTest.php @@ -0,0 +1,200 @@ +<?php + +namespace Civi\Test\Api4\Entity; + +use Civi\Api4\Participant; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class ParticipantTest extends UnitTestCase { + + public function setUp() { + parent::setUp(); + $truncateTables = [ + 'civicrm_participant', + 'civicrm_option_group', + 'civicrm_option_value' + ]; + $this->cleanup(['tablesToTruncate' => $truncateTables]); + $this->loadDataSet('ParticipantRoleOptionGroup'); + } + + public function testGetActions() { + $result = Participant::getActions() + ->setCheckPermissions(FALSE) + ->execute() + ->indexBy('name'); + + $getParams = $result['get']['params']; + $whereDescription = 'Array of conditions keyed by field.'; + + $this->assertEquals(TRUE, $getParams['checkPermissions']['default']); + $this->assertEquals($whereDescription, $getParams['where']['description']); + } + + public function testGet() { + + if ($this->getRowCount('civicrm_participant') > 0) { + $this->markTestSkipped('Participant table must be empty'); + } + + // With no records: + $result = Participant::get()->setCheckPermissions(FALSE)->execute(); + $this->assertEquals(0, $result->count(), "count of empty get is not 0"); + + // Check that the $result knows what the inputs were + $this->assertEquals('Participant', $result->entity); + $this->assertEquals('get', $result->action); + $this->assertEquals(4, $result->version); + + // Create some test related records before proceeding + $participantCount = 20; + $contactCount = 7; + $eventCount = 5; + + // All events will either have this number or one less because of the + // rotating participation creation method. + $expectedFirstEventCount = ceil($participantCount / $eventCount); + + $dummy = [ + 'contacts' => $this->createEntity([ + 'type' => 'Individual', + 'count' => $contactCount, + 'seq' => 1]), + 'events' => $this->createEntity([ + 'type' => 'Event', + 'count' => $eventCount, + 'seq' => 1]), + 'sources' => ['Paddington', 'Springfield', 'Central'], + ]; + + // - create dummy participants record + for ($i = 0; $i < $participantCount; $i++) { + $dummy['participants'][$i] = $this->sample([ + 'type' => 'Participant', + 'overrides' => [ + 'event_id' => $dummy['events'][$i % $eventCount]['id'], + 'contact_id' => $dummy['contacts'][$i % $contactCount]['id'], + 'source' => $dummy['sources'][$i % 3], // 3 = number of sources + ]])['sample_params']; + + Participant::create() + ->setValues($dummy['participants'][$i]) + ->setCheckPermissions(FALSE) + ->execute(); + } + $sqlCount = $this->getRowCount('civicrm_participant'); + $this->assertEquals($participantCount, $sqlCount, "Unexpected count"); + + $firstEventId = $dummy['events'][0]['id']; + $secondEventId = $dummy['events'][1]['id']; + $firstContactId = $dummy['contacts'][0]['id']; + + $firstOnlyResult = Participant::get() + ->setCheckPermissions(FALSE) + ->addClause('AND', ['event_id', '=', $firstEventId]) + ->execute(); + + $this->assertEquals($expectedFirstEventCount, count($firstOnlyResult), + "count of first event is not $expectedFirstEventCount"); + + // get first two events using different methods + $firstTwo = Participant::get() + ->setCheckPermissions(FALSE) + ->addWhere('event_id', 'IN', [$firstEventId, $secondEventId]) + ->execute(); + + $firstResult = $result->first(); + + // verify counts + // count should either twice the first event count or one less + $this->assertLessThanOrEqual( + $expectedFirstEventCount * 2, + count($firstTwo), + "count is too high" + ); + + $this->assertGreaterThanOrEqual( + $expectedFirstEventCount * 2 - 1, + count($firstTwo), + "count is too low" + ); + + $firstParticipantResult = Participant::get() + ->setCheckPermissions(FALSE) + ->addWhere('event_id', '=', $firstEventId) + ->addWhere('contact_id', '=', $firstContactId) + ->execute(); + + $this->assertEquals(1, count($firstParticipantResult), "more than one registration"); + + $firstParticipantId = $firstParticipantResult->first()['id']; + + // get a result which excludes $first_participant + $otherParticipantResult = Participant::get() + ->setCheckPermissions(FALSE) + ->setSelect(['id']) + ->addClause('NOT', [ + ['event_id', '=', $firstEventId], + ['contact_id', '=', $firstContactId], + ] + ) + ->execute() + ->indexBy('id'); + + // check alternate syntax for NOT + $otherParticipantResult2 = Participant::get() + ->setCheckPermissions(FALSE) + ->setSelect(['id']) + ->addClause('NOT', 'AND', [ + ['event_id', '=', $firstEventId], + ['contact_id', '=', $firstContactId], + ] + ) + ->execute() + ->indexBy('id'); + + $this->assertEquals($otherParticipantResult, $otherParticipantResult2); + + $this->assertEquals($participantCount - 1, + count($otherParticipantResult), + "failed to exclude a single record on complex criteria"); + // check the record we have excluded is the right one: + + $this->assertFalse( + $otherParticipantResult->offsetExists($firstParticipantId), + 'excluded wrong record'); + + // retrieve a participant record and update some records + $patchRecord = [ + 'source' => "not " . $firstResult['source'], + ]; + + Participant::update() + ->addWhere('event_id', '=', $firstEventId) + ->setCheckPermissions(FALSE) + ->setLimit(20) + ->setValues($patchRecord) + ->setCheckPermissions(FALSE) + ->execute(); + + // - delete some records + $secondEventId = $dummy['events'][1]['id']; + $deleteResult = Participant::delete() + ->addWhere('event_id', '=', $secondEventId) + ->setCheckPermissions(FALSE) + ->execute(); + $expectedDeletes = [2, 7, 12, 17]; + $this->assertEquals($expectedDeletes, (array) $deleteResult, + "didn't delete every second record as expected"); + + $sqlCount = $this->getRowCount('civicrm_participant'); + $this->assertEquals( + $participantCount - count($expectedDeletes), + $sqlCount, + "records not gone from database after delete"); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Query/Api4SelectQueryComplexJoinTest.php b/civicrm/ext/api4/tests/phpunit/Query/Api4SelectQueryComplexJoinTest.php new file mode 100644 index 0000000000000000000000000000000000000000..049c40713c8e47d4b6c688d9a9d12af3a51bab5e --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Query/Api4SelectQueryComplexJoinTest.php @@ -0,0 +1,86 @@ +<?php + +namespace Civi\Test\Api4\Query; + +use Civi\Api4\Query\Api4SelectQuery; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class Api4SelectQueryComplexJoinTest extends UnitTestCase { + + public function setUpHeadless() { + $relatedTables = [ + 'civicrm_contact', + 'civicrm_address', + 'civicrm_email', + 'civicrm_phone', + 'civicrm_openid', + 'civicrm_im', + 'civicrm_website', + 'civicrm_option_group', + 'civicrm_option_value', + 'civicrm_activity', + 'civicrm_activity_contact', + ]; + $this->cleanup(['tablesToTruncate' => $relatedTables]); + $this->loadDataSet('SingleContact'); + return parent::setUpHeadless(); + } + + public function testWithComplexRelatedEntitySelect() { + $query = new Api4SelectQuery('Contact', FALSE); + $query->select[] = 'id'; + $query->select[] = 'display_name'; + $query->select[] = 'phones.phone'; + $query->select[] = 'emails.email'; + $query->select[] = 'emails.location_type.name'; + $query->select[] = 'created_activities.contact_id'; + $query->select[] = 'created_activities.activity.subject'; + $query->select[] = 'created_activities.activity.activity_type.name'; + $query->where[] = ['first_name', '=', 'Single']; + $results = $query->run(); + + $testActivities = [ + $this->getReference('test_activity_1'), + $this->getReference('test_activity_2'), + ]; + $activitySubjects = array_column($testActivities, 'subject'); + + $this->assertCount(1, $results); + $firstResult = array_shift($results); + $this->assertArrayHasKey('created_activities', $firstResult); + $firstCreatedActivity = array_shift($firstResult['created_activities']); + $this->assertArrayHasKey('activity', $firstCreatedActivity); + $firstActivity = $firstCreatedActivity['activity']; + $this->assertContains($firstActivity['subject'], $activitySubjects); + $this->assertArrayHasKey('activity_type', $firstActivity); + $activityType = $firstActivity['activity_type']; + $this->assertArrayHasKey('name', $activityType); + } + + public function testWithSelectOfOrphanDeepValues() { + $query = new Api4SelectQuery('Contact', FALSE); + $query->select[] = 'id'; + $query->select[] = 'first_name'; + $query->select[] = 'emails.location_type.name'; // emails not selected + $results = $query->run(); + $firstResult = array_shift($results); + + $this->assertEmpty($firstResult['emails']); + } + + public function testOrderDoesNotMatter() { + $query = new Api4SelectQuery('Contact', FALSE); + $query->select[] = 'id'; + $query->select[] = 'first_name'; + $query->select[] = 'emails.location_type.name'; // before emails selection + $query->select[] = 'emails.email'; + $results = $query->run(); + $firstResult = array_shift($results); + + $this->assertNotEmpty($firstResult['emails'][0]['location_type']['name']); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Query/Api4SelectQueryTest.php b/civicrm/ext/api4/tests/phpunit/Query/Api4SelectQueryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..b67bb0b8135d48ad64445123bcd615a3f652618d --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Query/Api4SelectQueryTest.php @@ -0,0 +1,109 @@ +<?php + +namespace Civi\Test\Api4\Query; + +use Civi\Api4\Query\Api4SelectQuery; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class Api4SelectQueryTest extends UnitTestCase { + + public function setUpHeadless() { + $relatedTables = [ + 'civicrm_contact', + 'civicrm_address', + 'civicrm_email', + 'civicrm_phone', + 'civicrm_openid', + 'civicrm_im', + 'civicrm_website', + 'civicrm_option_group', + 'civicrm_option_value', + 'civicrm_activity', + 'civicrm_activity_contact', + ]; + $this->cleanup(['tablesToTruncate' => $relatedTables]); + $this->loadDataSet('DefaultDataSet'); + $displayNameFormat = '{contact.first_name}{ }{contact.last_name}'; + \Civi::settings()->set('display_name_format', $displayNameFormat); + + return parent::setUpHeadless(); + } + + public function testBasicSelect() { + $query = new Api4SelectQuery('Contact', FALSE); + $results = $query->run(); + + $this->assertCount(2, $results); + $this->assertEquals('Test', array_shift($results)['first_name']); + } + + public function testWithSingleWhereJoin() { + $phoneNum = $this->getReference('test_phone_1')['phone']; + + $query = new Api4SelectQuery('Contact', FALSE); + $query->where[] = ['phones.phone', '=', $phoneNum]; + $results = $query->run(); + + $this->assertCount(1, $results); + } + + public function testOneToManyJoin() { + $phoneNum = $this->getReference('test_phone_1')['phone']; + + $query = new Api4SelectQuery('Contact', FALSE); + $query->select[] = 'id'; + $query->select[] = 'first_name'; + $query->select[] = 'phones.phone'; + $query->where[] = ['phones.phone', '=', $phoneNum]; + $results = $query->run(); + + $this->assertCount(1, $results); + $firstResult = array_shift($results); + $this->assertArrayHasKey('phones', $firstResult); + $firstPhone = array_shift($firstResult['phones']); + $this->assertEquals($phoneNum, $firstPhone['phone']); + } + + public function testManyToOneJoin() { + $phoneNum = $this->getReference('test_phone_1')['phone']; + $contact = $this->getReference('test_contact_1'); + + $query = new Api4SelectQuery('Phone', FALSE); + $query->select[] = 'id'; + $query->select[] = 'phone'; + $query->select[] = 'contact.display_name'; + $query->select[] = 'contact.first_name'; + $query->where[] = ['phone', '=', $phoneNum]; + $results = $query->run(); + + $this->assertCount(1, $results); + $firstResult = array_shift($results); + $this->assertArrayHasKey('contact', $firstResult); + $resultContact = $firstResult['contact']; + $this->assertEquals($contact['display_name'], $resultContact['display_name']); + } + + public function testOneToManyMultipleJoin() { + $query = new Api4SelectQuery('Contact', FALSE); + $query->select[] = 'id'; + $query->select[] = 'first_name'; + $query->select[] = 'phones.phone'; + $results = $query->run(); + + $this->assertCount(2, $results); + + foreach ($results as $result) { + if ($result['id'] == 2) { + // Contact has no phones + $this->assertEmpty($result['phones']); + } + elseif ($result['id'] == 1) { + $this->assertCount(2, $result['phones']); + } + } + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Query/OneToOneJoinTest.php b/civicrm/ext/api4/tests/phpunit/Query/OneToOneJoinTest.php new file mode 100644 index 0000000000000000000000000000000000000000..edb1ca427fb5ea984e450512dac5c947862771f5 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Query/OneToOneJoinTest.php @@ -0,0 +1,65 @@ +<?php + +namespace Civi\Test\Api4\Query; + +use Civi\Api4\Contact; +use Civi\Api4\OptionGroup; +use Civi\Api4\OptionValue; +use Civi\Test\Api4\UnitTestCase; + +/** + * Class OneToOneJoinTest + * @package Civi\Test\Api4\Query + * @group headless + */ +class OneToOneJoinTest extends UnitTestCase { + + public function testOneToOneJoin() { + $languageGroupId = OptionGroup::create() + ->addValue('name', 'languages') + ->execute() + ->first()['id']; + + OptionValue::create() + ->addValue('option_group_id', $languageGroupId) + ->addValue('name', 'hy_AM') + ->addValue('value', 'hy') + ->addValue('label', 'Armenian') + ->execute(); + + OptionValue::create() + ->addValue('option_group_id', $languageGroupId) + ->addValue('name', 'eu_ES') + ->addValue('value', 'eu') + ->addValue('label', 'Basque') + ->execute(); + + $armenianContact = Contact::create() + ->addValue('first_name', 'Contact') + ->addValue('last_name', 'One') + ->addValue('contact_type', 'Individual') + ->addValue('preferred_language', 'hy_AM') + ->execute() + ->first(); + + $basqueContact = Contact::create() + ->addValue('first_name', 'Contact') + ->addValue('last_name', 'Two') + ->addValue('contact_type', 'Individual') + ->addValue('preferred_language', 'eu_ES') + ->execute() + ->first(); + + $contacts = Contact::get() + ->addWhere('id', 'IN', [$armenianContact['id'], $basqueContact['id']]) + ->addSelect('preferred_language.label') + ->addSelect('last_name') + ->execute() + ->indexBy('last_name') + ->getArrayCopy(); + + $this->assertEquals($contacts['One']['preferred_language']['label'], 'Armenian'); + $this->assertEquals($contacts['Two']['preferred_language']['label'], 'Basque'); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Query/OptionValueJoinTest.php b/civicrm/ext/api4/tests/phpunit/Query/OptionValueJoinTest.php new file mode 100644 index 0000000000000000000000000000000000000000..eaeeca24637ca629c28f2a3f4b165db1c9dac7e6 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Query/OptionValueJoinTest.php @@ -0,0 +1,48 @@ +<?php + +namespace Civi\Test\Api4\Query; + +use Civi\Api4\Query\Api4SelectQuery; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class OptionValueJoinTest extends UnitTestCase { + + public function setUpHeadless() { + $relatedTables = [ + 'civicrm_contact', + 'civicrm_address', + 'civicrm_email', + 'civicrm_phone', + 'civicrm_openid', + 'civicrm_im', + 'civicrm_website', + 'civicrm_option_group', + 'civicrm_option_value', + 'civicrm_activity', + 'civicrm_activity_contact', + ]; + + $this->cleanup(['tablesToTruncate' => $relatedTables]); + $this->loadDataSet('SingleContact'); + + return parent::setUpHeadless(); + } + + public function testCommunicationMethodJoin() { + $query = new Api4SelectQuery('Contact', FALSE); + $query->select[] = 'first_name'; + $query->select[] = 'preferred_communication_method.label'; + $results = $query->run(); + $first = array_shift($results); + $firstPreferredMethod = array_shift($first['preferred_communication_method']); + + $this->assertEquals( + 'Phone', + $firstPreferredMethod['label'] + ); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Query/SelectQueryMultiJoinTest.php b/civicrm/ext/api4/tests/phpunit/Query/SelectQueryMultiJoinTest.php new file mode 100644 index 0000000000000000000000000000000000000000..860bd785201afa9e72f38cb6adcb0ec04e02c0b3 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Query/SelectQueryMultiJoinTest.php @@ -0,0 +1,74 @@ +<?php + +namespace Civi\Test\Api4\Query; + +use Civi\Api4\Contact; +use Civi\Api4\Email; +use Civi\Test\Api4\UnitTestCase; + +/** + * Class SelectQueryMultiJoinTest + * @package Civi\Test\Api4\Query + * @group headless + */ +class SelectQueryMultiJoinTest extends UnitTestCase { + public function setUpHeadless() { + $this->cleanup(['tablesToTruncate' => ['civicrm_contact', 'civicrm_email']]); + $this->loadDataSet('MultiContactMultiEmail'); + return parent::setUpHeadless(); + } + + public function testOneToManySelect() { + $results = Contact::get() + ->addSelect('emails.email') + ->execute() + ->indexBy('id') + ->getArrayCopy(); + + $firstContactId = $this->getReference('test_contact_1')['id']; + $secondContactId = $this->getReference('test_contact_2')['id']; + + $firstContact = $results[$firstContactId]; + $secondContact = $results[$secondContactId]; + $firstContactEmails = array_column($firstContact['emails'], 'email'); + $secondContactEmails = array_column($secondContact['emails'], 'email'); + + $expectedFirstEmails = [ + 'test_contact_one_home@fakedomain.com', + 'test_contact_one_work@fakedomain.com', + ]; + $expectedSecondEmails = [ + 'test_contact_two_home@fakedomain.com', + 'test_contact_two_work@fakedomain.com', + ]; + + $this->assertEquals($expectedFirstEmails, $firstContactEmails); + $this->assertEquals($expectedSecondEmails, $secondContactEmails); + } + + public function testManyToOneSelect() { + $results = Email::get() + ->addSelect('contact.display_name') + ->execute() + ->indexBy('id') + ->getArrayCopy(); + + $firstEmail = $this->getReference('test_email_1'); + $secondEmail = $this->getReference('test_email_2'); + $thirdEmail = $this->getReference('test_email_3'); + $fourthEmail = $this->getReference('test_email_4'); + $firstContactEmailIds = [$firstEmail['id'], $secondEmail['id']]; + $secondContactEmailIds = [$thirdEmail['id'], $fourthEmail['id']]; + + foreach ($results as $id => $email) { + $displayName = $email['contact']['display_name']; + if (in_array($id, $firstContactEmailIds)) { + $this->assertEquals('First Contact', $displayName); + } + elseif (in_array($id, $secondContactEmailIds)) { + $this->assertEquals('Second Contact', $displayName); + } + } + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Service/Schema/SchemaMapRealTableTest.php b/civicrm/ext/api4/tests/phpunit/Service/Schema/SchemaMapRealTableTest.php new file mode 100644 index 0000000000000000000000000000000000000000..183d34dc8f6729a98025538a6b6241035c3eecf0 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Service/Schema/SchemaMapRealTableTest.php @@ -0,0 +1,22 @@ +<?php + +namespace Civi\Test\Api4\Service\Schema; + +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class SchemaMapRealTableTest extends UnitTestCase { + public function testAutoloadWillPopulateTablesByDefault() { + $map = \Civi::container()->get('schema_map'); + $this->assertNotEmpty($map->getTables()); + } + + public function testSimplePathWillExist() { + $map = \Civi::container()->get('schema_map'); + $path = $map->getPath('civicrm_contact', 'emails'); + $this->assertCount(1, $path); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Service/Schema/SchemaMapperTest.php b/civicrm/ext/api4/tests/phpunit/Service/Schema/SchemaMapperTest.php new file mode 100644 index 0000000000000000000000000000000000000000..04952f7bfdf370d06392b0560e0446f384ea5f33 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Service/Schema/SchemaMapperTest.php @@ -0,0 +1,90 @@ +<?php + +namespace Civi\Test\Api4\Service\Schema; + +use Civi\Api4\Service\Schema\Joinable\Joinable; +use Civi\Api4\Service\Schema\SchemaMap; +use Civi\Api4\Service\Schema\Table; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class SchemaMapperTest extends UnitTestCase { + + public function testWillHaveNoPathWithNoTables() { + $map = new SchemaMap(); + $this->assertEmpty($map->getPath('foo', 'bar')); + } + + public function testWillHavePathWithSingleJump() { + $phoneTable = new Table('civicrm_phone'); + $locationTable = new Table('civicrm_location_type'); + $link = new Joinable('civicrm_location_type', 'id', 'location'); + $phoneTable->addTableLink('location_type_id', $link); + + $map = new SchemaMap(); + $map->addTables([$phoneTable, $locationTable]); + + $this->assertNotEmpty($map->getPath('civicrm_phone', 'location')); + } + + public function testWillHavePathWithDoubleJump() { + $activity = new Table('activity'); + $activityContact = new Table('activity_contact'); + $middleLink = new Joinable('activity_contact', 'activity_id'); + $contactLink = new Joinable('contact', 'id'); + $activity->addTableLink('id', $middleLink); + $activityContact->addTableLink('contact_id', $contactLink); + + $map = new SchemaMap(); + $map->addTables([$activity, $activityContact]); + + $this->assertNotEmpty($map->getPath('activity', 'contact')); + } + + public function testPathWithTripleJoin() { + $first = new Table('first'); + $second = new Table('second'); + $third = new Table('third'); + $first->addTableLink('id', new Joinable('second', 'id')); + $second->addTableLink('id', new Joinable('third', 'id')); + $third->addTableLink('id', new Joinable('fourth', 'id')); + + $map = new SchemaMap(); + $map->addTables([$first, $second, $third]); + + $this->assertNotEmpty($map->getPath('first', 'fourth')); + } + + public function testCircularReferenceWillNotBreakIt() { + $contactTable = new Table('contact'); + $carTable = new Table('car'); + $carLink = new Joinable('car', 'id'); + $ownerLink = new Joinable('contact', 'id'); + $contactTable->addTableLink('car_id', $carLink); + $carTable->addTableLink('owner_id', $ownerLink); + + $map = new SchemaMap(); + $map->addTables([$contactTable, $carTable]); + + $this->assertEmpty($map->getPath('contact', 'foo')); + } + + public function testCannotGoOverJoinLimit() { + $first = new Table('first'); + $second = new Table('second'); + $third = new Table('third'); + $fourth = new Table('fourth'); + $first->addTableLink('id', new Joinable('second', 'id')); + $second->addTableLink('id', new Joinable('third', 'id')); + $third->addTableLink('id', new Joinable('fourth', 'id')); + $fourth->addTableLink('id', new Joinable('fifth', 'id')); + + $map = new SchemaMap(); + $map->addTables([$first, $second, $third, $fourth]); + + $this->assertEmpty($map->getPath('first', 'fifth')); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Service/TestCreationParameterProvider.php b/civicrm/ext/api4/tests/phpunit/Service/TestCreationParameterProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..948e980eef7b401a7c5f3a6f38404792ca07d05e --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Service/TestCreationParameterProvider.php @@ -0,0 +1,138 @@ +<?php + +namespace Civi\Test\Api4\Service; + +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\SpecGatherer; +use \CRM_Utils_String as StringHelper; + +class TestCreationParameterProvider { + + /** + * @var SpecGatherer + */ + protected $gatherer; + + /** + * @param SpecGatherer $gatherer + */ + public function __construct(SpecGatherer $gatherer) { + $this->gatherer = $gatherer; + } + + /** + * @param $entity + * + * @return array + */ + public function getRequired($entity) { + $createSpec = $this->gatherer->getSpec($entity, 'create', FALSE); + $requiredFields = $createSpec->getRequiredFields(); + + if ($entity === 'Contact') { + $requiredFields[] = $createSpec->getFieldByName('first_name'); + $requiredFields[] = $createSpec->getFieldByName('last_name'); + } + + $requiredParams = []; + foreach ($requiredFields as $requiredField) { + $value = $this->getRequiredValue($requiredField); + $requiredParams[$requiredField->getName()] = $value; + } + + unset($requiredParams['id']); + + return $requiredParams; + } + + /** + * Attempt to get a value using field option, defaults, FKEntity, or a random + * value based on the data type. + * + * @param FieldSpec $field + * + * @return mixed + * @throws \Exception + */ + private function getRequiredValue(FieldSpec $field) { + + if ($field->getOptions()) { + return $this->getOption($field); + } + elseif ($field->getDefaultValue()) { + return $field->getDefaultValue(); + } + elseif ($field->getFkEntity()) { + return $this->getFkID($field); + } + + $randomValue = $this->getRandomValue($field->getDataType()); + + if ($randomValue) { + return $randomValue; + } + + throw new \Exception('Could not provide default value'); + } + + /** + * @param FieldSpec $field + * + * @return mixed + */ + private function getOption(FieldSpec $field) { + $options = $field->getOptions(); + $useKeyNames = ['data_type', 'html_type']; + $shouldUseKey = in_array($field->getName(), $useKeyNames); + $isIdField = substr($field->getName(), -3) === '_id'; + + if ($isIdField || $shouldUseKey) { + return array_rand($options); // return key (ID) + } + else { + return $options[array_rand($options)]; + } + } + + /** + * @param FieldSpec $field + * + * @return mixed + * @throws \Exception + */ + private function getFkID(FieldSpec $field) { + $fkEntity = $field->getFkEntity(); + $params = ['checkPermissions' => FALSE]; + $entityList = civicrm_api4($fkEntity, 'get', $params); + if ($entityList->count() < 1) { + $msg = sprintf('At least one %s is required in test', $fkEntity); + throw new \Exception($msg); + } + + return $entityList->first()['id']; + } + + /** + * @param $dataType + * + * @return int|null|string + */ + private function getRandomValue($dataType) { + switch ($dataType) { + case 'Boolean': + return TRUE; + + case 'Integer': + return rand(1, 2000); + + case 'String': + return StringHelper::createRandom(10, implode('', range('a', 'z'))); + + case 'Money': + return sprintf('%d.%2d', rand(0, 2000), rand(1, 99)); + } + + return NULL; + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Spec/RequestSpecTest.php b/civicrm/ext/api4/tests/phpunit/Spec/RequestSpecTest.php new file mode 100644 index 0000000000000000000000000000000000000000..45aa41b2dd5dfcf6760adb13d6a58f2fdac03ef0 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Spec/RequestSpecTest.php @@ -0,0 +1,42 @@ +<?php + +namespace Civi\Test\Api4\Spec; + +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class RequestSpecTest extends UnitTestCase { + + public function testRequiredFieldFetching() { + $spec = new RequestSpec('Contact', 'get'); + $requiredField = new FieldSpec('name', 'Contact'); + $requiredField->setRequired(TRUE); + $nonRequiredField = new FieldSpec('age', 'Contact', 'Integer'); + $nonRequiredField->setRequired(FALSE); + $spec->addFieldSpec($requiredField); + $spec->addFieldSpec($nonRequiredField); + + $requiredFields = $spec->getRequiredFields(); + + $this->assertCount(1, $requiredFields); + $this->assertEquals('name', array_shift($requiredFields)->getName()); + } + + public function testGettingFieldNames() { + $spec = new RequestSpec('Contact', 'get'); + $nameField = new FieldSpec('name', 'Contact'); + $ageField = new FieldSpec('age', 'Contact', 'Integer'); + $spec->addFieldSpec($nameField); + $spec->addFieldSpec($ageField); + + $fieldNames = $spec->getFieldNames(); + + $this->assertCount(2, $fieldNames); + $this->assertEquals(['name', 'age'], $fieldNames); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Spec/SpecFormatterTest.php b/civicrm/ext/api4/tests/phpunit/Spec/SpecFormatterTest.php new file mode 100644 index 0000000000000000000000000000000000000000..bdb1c4599a41cdc260f5a5d0f1c43f404e977341 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Spec/SpecFormatterTest.php @@ -0,0 +1,90 @@ +<?php + +namespace Civi\Test\Api4\Spec; + +use Civi\Api4\Service\Spec\CustomFieldSpec; +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; +use Civi\Api4\Service\Spec\SpecFormatter; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class SpecFormatterTest extends UnitTestCase { + + public function testSpecToArray() { + $spec = new RequestSpec('Contact', 'get'); + $fieldName = 'last_name'; + $field = new FieldSpec($fieldName, 'Contact'); + $spec->addFieldSpec($field); + $arraySpec = SpecFormatter::specToArray($spec->getFields()); + + $this->assertEquals('String', $arraySpec[$fieldName]['data_type']); + } + + /** + * @dataProvider arrayFieldSpecProvider + * + * @param array $fieldData + * @param string $expectedName + * @param string $expectedType + */ + public function testArrayToField($fieldData, $expectedName, $expectedType) { + $field = SpecFormatter::arrayToField($fieldData, 'TestEntity'); + + $this->assertEquals($expectedName, $field->getName()); + $this->assertEquals($expectedType, $field->getDataType()); + } + + public function testCustomFieldWillBeReturned() { + $customGroupId = 1432; + $customFieldId = 3333; + $name = 'MyFancyField'; + + $data = [ + 'custom_group_id' => $customGroupId, + 'custom_group' => ['name' => 'my_group'], + 'id' => $customFieldId, + 'name' => $name, + 'data_type' => 'String', + 'html_type' => 'MultiSelect', + ]; + + /** @var CustomFieldSpec $field */ + $field = SpecFormatter::arrayToField($data, 'TestEntity'); + + $this->assertInstanceOf(CustomFieldSpec::class, $field); + $this->assertEquals('my_group', $field->getCustomGroupName()); + $this->assertEquals($customFieldId, $field->getCustomFieldId()); + $this->assertEquals(\CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND, $field->getSerialize()); + } + + /** + * @return array + */ + public function arrayFieldSpecProvider() { + return [ + [ + [ + 'name' => 'Foo', + 'title' => 'Bar', + 'type' => \CRM_Utils_Type::T_STRING + ], + 'Foo', + 'String' + ], + [ + [ + 'name' => 'MyField', + 'title' => 'Bar', + 'type' => \CRM_Utils_Type::T_STRING, + 'data_type' => 'Boolean' // this should take precedence + ], + 'MyField', + 'Boolean' + ], + ]; + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Spec/SpecGathererTest.php b/civicrm/ext/api4/tests/phpunit/Spec/SpecGathererTest.php new file mode 100644 index 0000000000000000000000000000000000000000..e6fe19f109af4f2d97ec5e6253afacf371e80a40 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Spec/SpecGathererTest.php @@ -0,0 +1,94 @@ +<?php + +namespace Civi\Test\Api4\Spec; + +use Civi\Api4\Service\Spec\FieldSpec; +use Civi\Api4\Service\Spec\Provider\SpecProviderInterface; +use Civi\Api4\Service\Spec\RequestSpec; +use Civi\Api4\Service\Spec\SpecGatherer; +use Civi\Test\Api4\UnitTestCase; +use Civi\Api4\CustomField; +use Civi\Api4\CustomGroup; +use Civi\Test\Api4\Traits\TableDropperTrait; +use Prophecy\Argument; + +/** + * @group headless + */ +class SpecGathererTest extends UnitTestCase { + + use TableDropperTrait; + + public function setUpHeadless() { + $this->dropByPrefix('civicrm_value_favorite'); + $this->cleanup([ + 'tablesToTruncate' => [ + 'civicrm_custom_group', + 'civicrm_custom_field' + ], + ]); + return parent::setUpHeadless(); + } + + public function testBasicFieldsGathering() { + $gatherer = new SpecGatherer(); + $specs = $gatherer->getSpec('Contact', 'get', FALSE); + $contactDAO = _civicrm_api3_get_DAO('Contact'); + $contactFields = $contactDAO::fields(); + $specFieldNames = $specs->getFieldNames(); + $contactFieldNames = array_column($contactFields, 'name'); + + $this->assertEmpty(array_diff_key($contactFieldNames, $specFieldNames)); + } + + public function testWithSpecProvider() { + $gather = new SpecGatherer(); + + $provider = $this->prophesize(SpecProviderInterface::class); + $provider->applies('Contact', 'create')->willReturn(TRUE); + $provider->modifySpec(Argument::any())->will(function ($args) { + /** @var RequestSpec $spec */ + $spec = $args[0]; + $spec->addFieldSpec(new FieldSpec('foo', 'Contact')); + }); + $gather->addSpecProvider($provider->reveal()); + + $spec = $gather->getSpec('Contact', 'create', FALSE); + $fieldNames = $spec->getFieldNames(); + + $this->assertContains('foo', $fieldNames); + } + + public function testPseudoConstantOptionsWillBeAdded() { + $customGroupId = CustomGroup::create() + ->setCheckPermissions(FALSE) + ->addValue('name', 'FavoriteThings') + ->addValue('extends', 'Contact') + ->execute() + ->first()['id']; + + $options = ['r' => 'Red', 'g' => 'Green', 'p' => 'Pink']; + + CustomField::create() + ->setCheckPermissions(FALSE) + ->addValue('label', 'FavColor') + ->addValue('custom_group_id', $customGroupId) + ->addValue('options', $options) + ->addValue('html_type', 'Select') + ->addValue('data_type', 'String') + ->execute(); + + $gatherer = new SpecGatherer(); + $spec = $gatherer->getSpec('Contact', 'get', TRUE); + + $regularField = $spec->getFieldByName('contact_type'); + $this->assertNotEmpty($regularField->getOptions()); + $this->assertContains('Individual', $regularField->getOptions()); + + $customField = $spec->getFieldByName('FavoriteThings.FavColor'); + $this->assertNotEmpty($customField->getOptions()); + $this->assertContains('Green', $customField->getOptions()); + $this->assertEquals('Pink', $customField->getOptions()['p']); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Traits/QueryCounterTrait.php b/civicrm/ext/api4/tests/phpunit/Traits/QueryCounterTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..c7e10f1b93e372d1924584d4afea42465f246284 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Traits/QueryCounterTrait.php @@ -0,0 +1,43 @@ +<?php + +namespace Civi\Test\Api4\Traits; + +use \CRM_Utils_Array as ArrayHelper; + +trait QueryCounterTrait { + + /** + * @var int + */ + protected $startCount = 0; + + /** + * Start the query counter + */ + protected function beginQueryCount() { + $this->startCount = $this->getCurrentGlobalQueryCount(); + } + + /** + * @return int + * The number of queries since the counter was started + */ + protected function getQueryCount() { + return $this->getCurrentGlobalQueryCount() - $this->startCount; + } + + /** + * @return int + * @throws \Exception + */ + private function getCurrentGlobalQueryCount() { + global $_DB_DATAOBJECT; + + if (!$_DB_DATAOBJECT) { + throw new \Exception('Database object not set so cannot count queries'); + } + + return ArrayHelper::value('RESULTSEQ', $_DB_DATAOBJECT, 0); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Traits/TableDropperTrait.php b/civicrm/ext/api4/tests/phpunit/Traits/TableDropperTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..6e54347334ac52e3a3737d376b192d5260075aeb --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Traits/TableDropperTrait.php @@ -0,0 +1,23 @@ +<?php + +namespace Civi\Test\Api4\Traits; + +trait TableDropperTrait { + /** + * @param $prefix + */ + protected function dropByPrefix($prefix) { + $sql = "SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' ) " . + "AS statement FROM information_schema.tables " . + "WHERE table_name LIKE '%s%%' AND table_schema = DATABASE();"; + $sql = sprintf($sql, $prefix); + $dropTableQuery = \CRM_Core_DAO::executeQuery($sql); + $dropTableQuery->fetch(); + $dropTableQuery = $dropTableQuery->statement; + + if ($dropTableQuery) { + \CRM_Core_DAO::executeQuery($dropTableQuery); + } + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Traits/TestDataLoaderTrait.php b/civicrm/ext/api4/tests/phpunit/Traits/TestDataLoaderTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..1db220904663ae3646f9e158d0218bb7659c685a --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Traits/TestDataLoaderTrait.php @@ -0,0 +1,69 @@ +<?php + +namespace Civi\Test\Api4\Traits; + +/** + * This probably should be a separate class + */ +trait TestDataLoaderTrait { + + /** + * @var array + * References to entities used for loading test data + */ + protected $references; + + /** + * Creates entities from a JSON data set + * + * @param $path + */ + protected function loadDataSet($path) { + if (!file_exists($path)) { + $path = __DIR__ . '/../DataSets/' . $path . '.json'; + } + + $dataSet = json_decode(file_get_contents($path), TRUE); + foreach ($dataSet as $entityName => $entities) { + foreach ($entities as $entityValues) { + + $entityValues = $this->replaceReferences($entityValues); + + $params = ['values' => $entityValues, 'checkPermissions' => FALSE]; + $result = civicrm_api4($entityName, 'create', $params); + if (isset($entityValues['@ref'])) { + $this->references[$entityValues['@ref']] = $result->first(); + } + } + } + } + + /** + * @param $name + * + * @return null|mixed + */ + protected function getReference($name) { + return isset($this->references[$name]) ? $this->references[$name] : NULL; + } + + /** + * @param array $entityValues + * + * @return array + */ + private function replaceReferences($entityValues) { + foreach ($entityValues as $name => $value) { + if (is_array($value)) { + $entityValues[$name] = $this->replaceReferences($value); + } + elseif (substr($value, 0, 4) === '@ref') { + $referenceName = substr($value, 5); + list ($reference, $property) = explode('.', $referenceName); + $entityValues[$name] = $this->references[$reference][$property]; + } + } + return $entityValues; + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/UnitTestCase.php b/civicrm/ext/api4/tests/phpunit/UnitTestCase.php new file mode 100644 index 0000000000000000000000000000000000000000..dcd0f3bb360ab40ea2eade3a782a6708a0ff3e76 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/UnitTestCase.php @@ -0,0 +1,235 @@ +<?php + +namespace Civi\Test\Api4; + +use Civi\Test\Api4\Traits\TestDataLoaderTrait; +use Civi\Test\HeadlessInterface; +use Civi\Test\TransactionalInterface; + +/** + * @group headless + */ +class UnitTestCase extends \PHPUnit_Framework_TestCase implements HeadlessInterface, TransactionalInterface { + + use TestDataLoaderTrait; + + /** + * @see CiviUnitTestCase + * + * @param string $name + * @param array $data + * @param string $dataName + */ + public function __construct($name = NULL, array$data = [], $dataName = '') { + parent::__construct($name, $data, $dataName); + error_reporting(E_ALL & ~E_NOTICE); + } + + public function setUpHeadless() { + return \Civi\Test::headless()->installMe(__DIR__)->apply(); + } + + /** + * Tears down the fixture, for example, closes a network connection. + * + * This method is called after a test is executed. + */ + public function tearDown() { + parent::tearDown(); + } + + /** + * Quick clean by emptying tables created for the test. + * + * @param array $params + */ + public function cleanup($params) { + $params += [ + 'tablesToTruncate' => [], + ]; + \CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS = 0;"); + foreach ($params['tablesToTruncate'] as $table) { + \Civi::log()->info('truncating: ' . $table); + $sql = "TRUNCATE TABLE $table"; + \CRM_Core_DAO::executeQuery($sql); + } + \CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS = 1;"); + } + + /** + * Quick record counter + * + * @param string $table_name + * @returns int record count + */ + public function getRowCount($table_name) { + $sql = "SELECT count(*) FROM $table_name"; + return (int) \CRM_Core_DAO::singleValueQuery($sql); + } + + /** + * Create sample entities (using V3 for now). + * + * @param array $params (type, seq, overrides, count) + * @return array (either single, or array of array if count >1) + */ + public static function createEntity($params) { + $params += [ + 'count' => 1, + 'seq' => 0, + ]; + $entities = []; + $entity = NULL; + for ($i = 0; $i < $params['count']; $i++) { + $params['seq']++; + $data = self::sample($params); + $api_params = ['sequential' => 1] + $data['sample_params']; + $result = civicrm_api3($data['entity'], 'create', $api_params); + if ($result['is_error']) { + throw new \Exception("creating $data[entity] failed"); + } + $entity = $result['values'][0]; + if (!($entity['id'] > 0)) { + throw new \Exception("created entity is malformed"); + } + $entities[] = $entity; + } + return $params['count'] == 1 ? $entity : $entities; + } + + /** + * Helper function for creating sample entities. + * + * Depending on the supplied sequence integer, plucks values from the dummy data. + * Constructs a foreign entity when an ID is required but isn't supplied in the overrides. + * + * Inspired by CiviUnitTestCase:: + * @todo - extract this function to own class and share with CiviUnitTestCase? + * @param array $params + * - type: string roughly matching entity type + * - seq: (optional) int sequence number for the values of this type + * - overrides: (optional) array of fill in parameters + * + * @return array + * - entity: string API entity type (usually the type supplied except for contact subtypes) + * - sample_params: array API sample_params properties of sample entity + */ + public static function sample($params) { + $params += [ + 'seq' => 0, + 'overrides' => [], + ]; + $type = $params['type']; + // sample data - if field is array then chosed based on `seq` + $sample_params = []; + if (in_array($type, ['Individual', 'Organization', 'Household'])) { + $sample_params['contact_type'] = $type; + $entity = 'Contact'; + } + else { + $entity = $type; + } + // use the seq to pluck a set of params out + foreach (self::sampleData($type) as $key => $value) { + if (is_array($value)) { + $sample_params[$key] = $value[$params['seq'] % count($value)]; + } + else { + $sample_params[$key] = $value; + } + } + if ($type == 'Individual') { + $sample_params['email'] = strtolower( + $sample_params['first_name'] . '_' . $sample_params['last_name'] . '@civicrm.org' + ); + $sample_params['prefix_id'] = 3; + $sample_params['suffix_id'] = 3; + } + if (!count($sample_params)) { + throw new \Exception("unknown sample type: $type"); + } + $sample_params = $params['overrides'] + $sample_params; + // make foreign enitiies if they haven't been supplied + foreach ($sample_params as $key => $value) { + if (substr($value, 0, 6) === 'dummy.') { + $foreign_entity = self::createEntity([ + 'type' => substr($value, 6), + 'seq' => $params['seq']]); + $sample_params[$key] = $foreign_entity['id']; + } + } + return compact("entity", "sample_params"); + } + + /** + * Provider of sample data. + * + * @return array + * Array values represent a set of allowable items. + * Strings in the form "dummy.Entity" require creating a foreign entity first. + */ + public static function sampleData($type) { + $data = [ + 'Individual' => [ + // The number of values in each list need to be coprime numbers to not have duplicates + 'first_name' => ['Anthony', 'Joe', 'Terrence', 'Lucie', 'Albert', 'Bill', 'Kim'], + 'middle_name' => ['J.', 'M.', 'P', 'L.', 'K.', 'A.', 'B.', 'C.', 'D', 'E.', 'Z.'], + 'last_name' => ['Anderson', 'Miller', 'Smith', 'Collins', 'Peterson'], + 'contact_type' => 'Individual', + ], + 'Organization' => [ + 'organization_name' => [ + 'Unit Test Organization', + 'Acme', + 'Roberts and Sons', + 'Cryo Space Labs', + 'Sharper Pens', + ], + ], + 'Household' => [ + 'household_name' => ['Unit Test household'], + ], + 'Event' => [ + 'title' => 'Annual CiviCRM meet', + 'summary' => 'If you have any CiviCRM related issues or want to track where CiviCRM is heading, Sign up now', + 'description' => 'This event is intended to give brief idea about progess of CiviCRM and giving solutions to common user issues', + 'event_type_id' => 1, + 'is_public' => 1, + 'start_date' => 20081021, + 'end_date' => 20081023, + 'is_online_registration' => 1, + 'registration_start_date' => 20080601, + 'registration_end_date' => 20081015, + 'max_participants' => 100, + 'event_full_text' => 'Sorry! We are already full', + 'is_monetary' => 0, + 'is_active' => 1, + 'is_show_location' => 0, + ], + 'Participant' => [ + 'event_id' => 'dummy.Event', + 'contact_id' => 'dummy.Individual', + 'status_id' => 2, + 'role_id' => 1, + 'register_date' => 20070219, + 'source' => 'Wimbeldon', + 'event_level' => 'Payment', + ], + 'Contribution' => [ + 'contact_id' => 'dummy.Individual', + 'financial_type_id' => 1, // donation, 2 = member, 3 = campaign contribution, 4=event + 'total_amount' => 7.3, + ], + 'Activity' => [ + //'activity_type_id' => 1, + 'subject' => 'unit testing', + 'source_contact_id' => 'dummy.Individual', + ], + ]; + if ($type == 'Contact') { + $type = 'Individual'; + } + return $data[$type]; + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Utils/ArrayInsertionServiceTest.php b/civicrm/ext/api4/tests/phpunit/Utils/ArrayInsertionServiceTest.php new file mode 100644 index 0000000000000000000000000000000000000000..462f07cc32f19556eebd6abbaa1e8c1e017d5c48 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Utils/ArrayInsertionServiceTest.php @@ -0,0 +1,67 @@ +<?php + +namespace Civi\Test\Api4\Utils; + +use Civi\Api4\Utils\ArrayInsertionUtil; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class ArrayInsertionServiceTest extends UnitTestCase { + + public function testInsertWillWork() { + $arr = []; + $path = ['foo' => FALSE, 'bar' => FALSE]; + $inserter = new ArrayInsertionUtil(); + $inserter::insert($arr, $path, ['LALA']); + + $expected = [ + 'foo' => [ + 'bar' => 'LALA' + ], + ]; + + $this->assertEquals($expected, $arr); + } + + public function testInsertionOfContactEmailLocation() { + $contacts = [ + [ + 'id' => 1, + 'first_name' => 'Jim' + ], + [ + 'id' => 2, + 'first_name' => 'Karen' + ], + ]; + $emails = [ + [ + 'email' => 'jim@jim.com', + 'id' => 2, + '_parent_id' => 1 + ], + ]; + $locationTypes = [ + [ + 'name' => 'Home', + 'id' => 3, + '_parent_id' => 2 + ], + ]; + + $emailPath = ['emails' => TRUE]; + $locationPath = ['emails' => TRUE, 'location' => FALSE]; + $inserter = new ArrayInsertionUtil(); + + foreach ($contacts as &$contact) { + $inserter::insert($contact, $emailPath, $emails); + $inserter::insert($contact, $locationPath, $locationTypes); + } + + $locationType = $contacts[0]['emails'][0]['location']['name']; + $this->assertEquals('Home', $locationType); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Utils/ReflectionUtilsTest.php b/civicrm/ext/api4/tests/phpunit/Utils/ReflectionUtilsTest.php new file mode 100644 index 0000000000000000000000000000000000000000..dec76161ccca779d3158528a7af5451e78fe87d2 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Utils/ReflectionUtilsTest.php @@ -0,0 +1,45 @@ +<?php + +namespace Civi\Test\Api4\Utils; + +use Civi\Api4\Utils\ReflectionUtils; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class ReflectionUtilsTest extends UnitTestCase { + + /** + * Test that class annotations are returned across @inheritDoc + */ + public function testGetDocBlockForClass() { + $grandChild = new TestV4ReflectionGrandchild(); + $reflection = new \ReflectionClass($grandChild); + $doc = ReflectionUtils::getCodeDocs($reflection); + + $this->assertEquals(TRUE, $doc['internal']); + $this->assertEquals('Grandchild class', $doc['description']); + + $expectedComment = 'This is an extended description. + +There is a line break in this description. + +This is the base class.'; + + $this->assertEquals($expectedComment, $doc['comment']); + } + + /** + * Test that property annotations are returned across @inheritDoc + */ + public function testGetDocBlockForProperty() { + $grandChild = new TestV4ReflectionGrandchild(); + $reflection = new \ReflectionClass($grandChild); + $doc = ReflectionUtils::getCodeDocs($reflection->getProperty('foo'), 'Property'); + + $this->assertEquals('This is the foo property.', $doc['description']); + $this->assertEquals("In the child class, foo has been barred.\n\nIn general, you can do nothing with it.", $doc['comment']); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/Utils/TestV4ReflectionBase.php b/civicrm/ext/api4/tests/phpunit/Utils/TestV4ReflectionBase.php new file mode 100644 index 0000000000000000000000000000000000000000..5ebf5ff6fc656d0ac95054732c3f3e5f5a5e36f0 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Utils/TestV4ReflectionBase.php @@ -0,0 +1,22 @@ +<?php + +namespace Civi\Test\Api4\Utils; + +/** + * Class TestV4ReflectionBase + * + * This is the base class. + * + * @internal + */ +class TestV4ReflectionBase { + /** + * This is the foo property. + * + * In general, you can do nothing with it. + * + * @var array + */ + public $foo = []; + +} diff --git a/civicrm/ext/api4/tests/phpunit/Utils/TestV4ReflectionChild.php b/civicrm/ext/api4/tests/phpunit/Utils/TestV4ReflectionChild.php new file mode 100644 index 0000000000000000000000000000000000000000..f34f86f99461a5654f048e1364a9772df6307446 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Utils/TestV4ReflectionChild.php @@ -0,0 +1,18 @@ +<?php + +namespace Civi\Test\Api4\Utils; + +use Civi\Test\Api4\Utils; + +/** + * @inheritDoc + */ +class TestV4ReflectionChild extends Utils\TestV4ReflectionBase { + /** + * @inheritDoc + * + * In the child class, foo has been barred. + */ + public $foo = ['bar' => 1]; + +} diff --git a/civicrm/ext/api4/tests/phpunit/Utils/TestV4ReflectionGrandchild.php b/civicrm/ext/api4/tests/phpunit/Utils/TestV4ReflectionGrandchild.php new file mode 100644 index 0000000000000000000000000000000000000000..1e57f080c471029d5b197c6446b4875bf1b1376f --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Utils/TestV4ReflectionGrandchild.php @@ -0,0 +1,19 @@ +<?php + +namespace Civi\Test\Api4\Utils; + +use Civi\Test\Api4\Utils; + + +/** + * Grandchild class + * + * This is an extended description. + * + * There is a line break in this description. + * + * @inheritDoc + */ +class TestV4ReflectionGrandchild extends Utils\TestV4ReflectionChild { + +} diff --git a/civicrm/ext/api4/tests/phpunit/bootstrap.php b/civicrm/ext/api4/tests/phpunit/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..b9ed5f2028149b15ef25315297e945404b1df354 --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/bootstrap.php @@ -0,0 +1,55 @@ +<?php + +define('CIVICRM_CONTAINER_CACHE', 'never'); +ini_set('memory_limit', '2G'); +ini_set('safe_mode', 0); +$bootCode = cv('php:boot --level=classloader', 'phpcode'); +eval($bootCode); + +preg_match('/require_once\s*\'(.*)\'/', $bootCode, $matches); +$loader = require sprintf('%s/vendor/autoload.php', $matches[1]); +$loader->addPsr4('Civi\\Test\\Api4\\', __DIR__); + +/** + * Call the "cv" command. + * + * @param string $cmd + * The rest of the command to send. + * @param string $decode + * Ex: 'json' or 'phpcode'. + * @return string + * Response output (if the command executed normally). + * @throws \RuntimeException + * If the command terminates abnormally. + */ +function cv($cmd, $decode = 'json') { + $cmd = 'cv ' . $cmd; + $descriptorSpec = [0 => ["pipe", "r"], 1 => ["pipe", "w"], 2 => STDERR]; + $oldOutput = getenv('CV_OUTPUT'); + putenv("CV_OUTPUT=json"); + $process = proc_open($cmd, $descriptorSpec, $pipes, __DIR__); + putenv("CV_OUTPUT=$oldOutput"); + fclose($pipes[0]); + $result = stream_get_contents($pipes[1]); + fclose($pipes[1]); + if (proc_close($process) !== 0) { + throw new RuntimeException("Command failed ($cmd):\n$result"); + } + switch ($decode) { + case 'raw': + return $result; + + case 'phpcode': + // If the last output is /*PHPCODE*/, then we managed to complete execution. + if (substr(trim($result), 0, 12) !== "/*BEGINPHP*/" || substr(trim($result), -10) !== "/*ENDPHP*/") { + throw new \RuntimeException("Command failed ($cmd):\n$result"); + } + return $result; + + case 'json': + return json_decode($result, 1); + + default: + throw new RuntimeException("Bad decoder format ($decode)"); + } +} diff --git a/civicrm/ext/api4/tests/services.xml b/civicrm/ext/api4/tests/services.xml new file mode 100644 index 0000000000000000000000000000000000000000..220ba910ab6e097c11132cca118d516729ece218 --- /dev/null +++ b/civicrm/ext/api4/tests/services.xml @@ -0,0 +1,10 @@ +<container xmlns="http://symfony.com/schema/dic/services" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> + + <services> + <service id="test.param_provider" class="Civi\Test\Api4\Service\TestCreationParameterProvider"> + <argument type="service" id="spec_gatherer"/> + </service> + </services> +</container> diff --git a/civicrm/ext/api4/xml/Menu/api4.xml b/civicrm/ext/api4/xml/Menu/api4.xml new file mode 100644 index 0000000000000000000000000000000000000000..57e8b25cece65a17ac5976c83ec1ca301a4139ea --- /dev/null +++ b/civicrm/ext/api4/xml/Menu/api4.xml @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<menu> + <item> + <path>civicrm/ajax/api4</path> + <page_callback>CRM_Api4_Page_AJAX</page_callback> + <title>Api v4</title> + <access_arguments>access CiviCRM</access_arguments> + </item> +</menu> diff --git a/civicrm/ext/iatspayments/CRM/Core/Payment/iATSService.php b/civicrm/ext/iatspayments/CRM/Core/Payment/iATSService.php index c9c897467ad6793286d05827ab98701021599ce2..2dca9ccab5115c15ffabae78f140d7379e9a574f 100644 --- a/civicrm/ext/iatspayments/CRM/Core/Payment/iATSService.php +++ b/civicrm/ext/iatspayments/CRM/Core/Payment/iATSService.php @@ -413,20 +413,21 @@ class CRM_Core_Payment_iATSService extends CRM_Core_Payment { $fakeForm = new IATSCustomerUpdateBillingInfo(); $fakeForm->updatedBillingInfo = $params; - $fakeForm->postProcess(); - - $status = CRM_Core_Session::singleton()->getStatus(TRUE); - $matches = array(); - preg_match('/\[AUTHORIZATIONRESULT\]\s*?=>\s(\d*)(.*)/', $status[0]['text'], $matches); - - if ($matches[2] == 'OK') { + try { + $fakeForm->postProcess(); + } + catch (Exception $error) { // what could go wrong? + $message = $error->getMessage(); + CRM_Core_Session::setStatus($message, ts('Warning'), 'alert'); + $e = CRM_Core_Error::singleton(); + return $e; + } + if ('OK' == $fakeForm->getAuthorizationResult()) { return TRUE; } - $message = $matches[2]; - + $message = $fakeForm->getResultMessage(); + CRM_Core_Session::setStatus($message, ts('Warning'), 'alert'); $e = CRM_Core_Error::singleton(); - $e->push($matches[1] ?: 0, 0, array(), $matches[2]); - return $e; } diff --git a/civicrm/ext/iatspayments/CRM/iATS/Form/IATSCustomerLink.php b/civicrm/ext/iatspayments/CRM/iATS/Form/IATSCustomerLink.php index 5ebc8d108a7343f66b7161e3a7482489e3285084..39e22b9249a60fbe818119c18ce440900e3a95a2 100644 --- a/civicrm/ext/iatspayments/CRM/iATS/Form/IATSCustomerLink.php +++ b/civicrm/ext/iatspayments/CRM/iATS/Form/IATSCustomerLink.php @@ -13,6 +13,8 @@ require_once 'CRM/Core/Form.php'; */ class CRM_iATS_Form_IATSCustomerLink extends CRM_Core_Form { + private $iats_result = array(); + /** * Get the field names and labels expected by iATS CustomerLink, * and the corresponding fields in CiviCRM. @@ -108,8 +110,26 @@ class CRM_iATS_Form_IATSCustomerLink extends CRM_Core_Form { // Make the soap request. $response = $iats->request($credentials, $params); // note: don't log this to the iats_response table. - $result = $iats->result($response, TRUE); - return $result; + $this->iats_result = $iats->result($response, TRUE); + return $this->iats_result; + } + + /** + * Get an appropriate message for the user after an update is attempted. + */ + protected function getResultMessage() { + $message = array(); + foreach($this->iats_result as $key => $value) { + $message[] = strtolower($key).": $value"; + } + return '<pre>'.implode('<br />',$message).'</pre>'; + } + + /** + * Test whether the update was successful + */ + public function getAuthorizationResult() { + return $this->iats_result['AUTHORIZATIONRESULT']; } /** @@ -175,12 +195,9 @@ class CRM_iATS_Form_IATSCustomerLink extends CRM_Core_Form { public function postProcess() { $values = $this->exportValues(); // Send update to iATS - // print_r($values); die(); - $result = $this->updateCreditCardCustomer($values); - $message = '<pre>' . print_r($result, TRUE) . '</pre>'; - // , $type, $options);. - CRM_Core_Session::setStatus($message, 'Customer Updated'); - if ($result['AUTHORIZATIONRESULT'] == 'OK') { + $this->updateCreditCardCustomer($values); + CRM_Core_Session::setStatus($this->getResultMessage(), 'Card Update Result'); + if ('OK' == $this->getAuthorizationResult()) { // Update my copy of the expiry date. list($month, $year) = explode('/', $values['creditCardExpiry']); $exp = sprintf('%02d%02d', $year, $month); diff --git a/civicrm/ext/iatspayments/CRM/iATS/Form/IATSCustomerUpdateBillingInfo.php b/civicrm/ext/iatspayments/CRM/iATS/Form/IATSCustomerUpdateBillingInfo.php index af9d8b4ed3fb8572dc8d5a2b27701bf304195b1c..03dd92a3096446bfdc00ce72ed3e3bdd5b1a862d 100644 --- a/civicrm/ext/iatspayments/CRM/iATS/Form/IATSCustomerUpdateBillingInfo.php +++ b/civicrm/ext/iatspayments/CRM/iATS/Form/IATSCustomerUpdateBillingInfo.php @@ -11,6 +11,12 @@ class IATSCustomerUpdateBillingInfo extends CRM_iATS_Form_IATSCustomerLink { public function exportValues($elementList = NULL, $filterInternal = FALSE) { $ubi = $this->updatedBillingInfo; + // updatedBillingInfo array changed sometime after 4.7.27 + $crid = !empty($ubi['crid']) ? $ubi['crid'] : $ubi['recur_id']; + if (empty($crid)) { + $alert = ts('This system is unable to perform self-service updates to credit cards. Please contact the administrator of this site.'); + throw new Exception($alert); + } $mop = array( 'Visa' => 'VISA', 'MasterCard' => 'MC', @@ -21,7 +27,7 @@ class IATSCustomerUpdateBillingInfo extends CRM_iATS_Form_IATSCustomerLink { $dao = CRM_Core_DAO::executeQuery("SELECT cr.payment_processor_id, cc.customer_code, cc.cid FROM civicrm_contribution_recur cr LEFT JOIN civicrm_iats_customer_codes cc ON cr.id = cc.recur_id - WHERE cr.id=%1", array(1 => array($ubi['crid'], 'Int'))); + WHERE cr.id=%1", array(1 => array($crid, 'Int'))); $dao->fetch(); $values = array( @@ -43,4 +49,4 @@ class IATSCustomerUpdateBillingInfo extends CRM_iATS_Form_IATSCustomerLink { } -} \ No newline at end of file +} diff --git a/civicrm/ext/iatspayments/CRM/iATS/Form/Report/ContributeDetail.mgd.php b/civicrm/ext/iatspayments/CRM/iATS/Form/Report/ContributeDetail.mgd.php new file mode 100644 index 0000000000000000000000000000000000000000..16743f18db25c7154b09fd23895cff3692f9693f --- /dev/null +++ b/civicrm/ext/iatspayments/CRM/iATS/Form/Report/ContributeDetail.mgd.php @@ -0,0 +1,26 @@ +<?php + +/** + * @file + * This file declares a managed database record of type "ReportTemplate". + */ + +// The record will be automatically inserted, updated, or deleted from the +// database as appropriate. For more details, see "hook_civicrm_managed" at: +// http://wiki.civicrm.org/confluence/display/CRMDOC42/Hook+Reference +return array( + 0 => + array( + 'name' => 'CRM_iATS_Form_Report_ContributeDetail', + 'entity' => 'ReportTemplate', + 'params' => + array( + 'version' => 3, + 'label' => 'iATS Payments - Contribution Reconciliation', + 'description' => 'Donor Report (Detail) Report with extra iATS Reconciliation fields.', + 'class_name' => 'CRM_iATS_Form_Report_ContributeDetail', + 'report_url' => 'com.iatspayments.com/contributedetail', + 'component' => 'CiviContribute', + ), + ), +); diff --git a/civicrm/ext/iatspayments/CRM/iATS/Form/Report/ContributeDetail.php b/civicrm/ext/iatspayments/CRM/iATS/Form/Report/ContributeDetail.php new file mode 100644 index 0000000000000000000000000000000000000000..0c35702825f4e4dbb535b15f8bd45d83e1b6cc97 --- /dev/null +++ b/civicrm/ext/iatspayments/CRM/iATS/Form/Report/ContributeDetail.php @@ -0,0 +1,986 @@ +<?php +/* + * A simple modified copy of the core Contribution Detail report with iATS verification detail added + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC (c) 2004-2018 + */ +class CRM_iATS_Form_Report_ContributeDetail extends CRM_Report_Form { + + protected $_summary = NULL; + + protected $_softFrom = NULL; + + protected $noDisplayContributionOrSoftColumn = FALSE; + + protected $_customGroupExtends = array( + 'Contact', + 'Individual', + 'Contribution', + ); + + protected $groupConcatTested = TRUE; + + static private $_iats_transaction_types = array( + 'VISA' => 'Visa', + 'ACHEFT' => 'ACH/EFT', + 'UNKNOW' => 'Uknown', + 'MC' => 'MasterCard', + 'AMX' => 'AMEX', + 'DSC' => 'Discover', + ); + + /** + * This report has been optimised for group filtering. + * + * CRM-19170 + * + * @var bool + */ + protected $groupFilterNotOptimised = FALSE; + + /** + * Class constructor. + */ + public function __construct() { + $this->_autoIncludeIndexedFieldsAsOrderBys = 1; + // Check if CiviCampaign is a) enabled and b) has active campaigns + $config = CRM_Core_Config::singleton(); + $campaignEnabled = in_array("CiviCampaign", $config->enableComponents); + if ($campaignEnabled) { + $getCampaigns = CRM_Campaign_BAO_Campaign::getPermissionedCampaigns(NULL, NULL, TRUE, FALSE, TRUE); + $this->activeCampaigns = $getCampaigns['campaigns']; + asort($this->activeCampaigns); + } + + $this->_columns = array_merge($this->getColumns('Contact', array( + 'order_bys_defaults' => array('sort_name' => 'ASC '), + 'fields_defaults' => array('sort_name'), + 'fields_excluded' => array('id'), + 'fields_required' => array('id'), + 'filters_defaults' => array('is_deleted' => 0), + 'no_field_disambiguation' => TRUE, + )), array( + 'civicrm_email' => array( + 'dao' => 'CRM_Core_DAO_Email', + 'fields' => array( + 'email' => array( + 'title' => ts('Donor Email'), + 'default' => TRUE, + ), + ), + 'grouping' => 'contact-fields', + ), + 'civicrm_line_item' => array( + 'dao' => 'CRM_Price_DAO_LineItem', + ), + 'civicrm_phone' => array( + 'dao' => 'CRM_Core_DAO_Phone', + 'fields' => array( + 'phone' => array( + 'title' => ts('Donor Phone'), + 'default' => TRUE, + 'no_repeat' => TRUE, + ), + ), + 'grouping' => 'contact-fields', + ), + 'civicrm_contribution' => array( + 'dao' => 'CRM_Contribute_DAO_Contribution', + 'fields' => array( + 'contribution_id' => array( + 'name' => 'id', + 'no_display' => TRUE, + 'required' => TRUE, + ), + 'list_contri_id' => array( + 'name' => 'id', + 'title' => ts('Contribution ID'), + ), + 'financial_type_id' => array( + 'title' => ts('Financial Type'), + 'default' => TRUE, + ), + 'contribution_status_id' => array( + 'title' => ts('Contribution Status'), + ), + 'contribution_page_id' => array( + 'title' => ts('Contribution Page'), + ), + 'source' => array( + 'title' => ts('Source'), + ), + 'payment_instrument_id' => array( + 'title' => ts('Payment Type'), + ), + 'check_number' => array( + 'title' => ts('Check Number'), + ), + 'currency' => array( + 'required' => TRUE, + 'no_display' => TRUE, + ), + 'trxn_id' => NULL, + 'receive_date' => array('default' => TRUE), + 'receipt_date' => NULL, + 'total_amount' => array( + 'title' => ts('Amount'), + 'required' => TRUE, + 'statistics' => array('sum' => ts('Amount')), + ), + 'non_deductible_amount' => array( + 'title' => ts('Non-deductible Amount'), + ), + 'fee_amount' => NULL, + 'net_amount' => NULL, + 'contribution_or_soft' => array( + 'title' => ts('Contribution OR Soft Credit?'), + 'dbAlias' => "'Contribution'", + ), + 'soft_credits' => array( + 'title' => ts('Soft Credits'), + 'dbAlias' => "NULL", + ), + 'soft_credit_for' => array( + 'title' => ts('Soft Credit For'), + 'dbAlias' => "NULL", + ), + ), + 'filters' => array( + 'contribution_or_soft' => array( + 'title' => ts('Contribution OR Soft Credit?'), + 'clause' => "(1)", + 'operatorType' => CRM_Report_Form::OP_SELECT, + 'type' => CRM_Utils_Type::T_STRING, + 'options' => array( + 'contributions_only' => ts('Contributions Only'), + 'soft_credits_only' => ts('Soft Credits Only'), + 'both' => ts('Both'), + ), + ), + 'receive_date' => array('operatorType' => CRM_Report_Form::OP_DATE), + 'contribution_source' => array( + 'title' => ts('Source'), + 'name' => 'source', + 'type' => CRM_Utils_Type::T_STRING, + ), + 'currency' => array( + 'title' => ts('Currency'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Core_OptionGroup::values('currencies_enabled'), + 'default' => NULL, + 'type' => CRM_Utils_Type::T_STRING, + ), + 'non_deductible_amount' => array( + 'title' => ts('Non-deductible Amount'), + ), + 'financial_type_id' => array( + 'title' => ts('Financial Type'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes(), + 'type' => CRM_Utils_Type::T_INT, + ), + 'contribution_page_id' => array( + 'title' => ts('Contribution Page'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Contribute_PseudoConstant::contributionPage(), + 'type' => CRM_Utils_Type::T_INT, + ), + 'payment_instrument_id' => array( + 'title' => ts('Payment Type'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Contribute_PseudoConstant::paymentInstrument(), + 'type' => CRM_Utils_Type::T_INT, + ), + 'contribution_status_id' => array( + 'title' => ts('Contribution Status'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Contribute_PseudoConstant::contributionStatus(), + 'default' => array(1), + 'type' => CRM_Utils_Type::T_INT, + ), + 'total_amount' => array('title' => ts('Contribution Amount')), + ), + 'order_bys' => array( + 'financial_type_id' => array('title' => ts('Financial Type')), + 'contribution_status_id' => array('title' => ts('Contribution Status')), + 'payment_instrument_id' => array('title' => ts('Payment Method')), + 'receive_date' => array('title' => ts('Date Received')), + ), + 'group_bys' => array( + 'contribution_id' => array( + 'name' => 'id', + 'required' => TRUE, + 'title' => ts('Contribution'), + ), + ), + 'grouping' => 'contri-fields', + ), + 'civicrm_contribution_soft' => array( + 'dao' => 'CRM_Contribute_DAO_ContributionSoft', + 'fields' => array( + 'soft_credit_type_id' => array('title' => ts('Soft Credit Type')), + ), + 'filters' => array( + 'soft_credit_type_id' => array( + 'title' => ts('Soft Credit Type'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Core_OptionGroup::values('soft_credit_type'), + 'default' => NULL, + 'type' => CRM_Utils_Type::T_STRING, + ), + ), + ), + 'civicrm_financial_trxn' => array( + 'dao' => 'CRM_Financial_DAO_FinancialTrxn', + 'fields' => array( + 'card_type_id' => array( + 'title' => ts('Credit Card Type'), + ), + ), + 'filters' => array( + 'card_type_id' => array( + 'title' => ts('Credit Card Type'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Financial_DAO_FinancialTrxn::buildOptions('card_type_id'), + 'default' => NULL, + 'type' => CRM_Utils_Type::T_STRING, + ), + ), + ), + 'civicrm_batch' => array( + 'dao' => 'CRM_Batch_DAO_EntityBatch', + 'grouping' => 'contri-fields', + 'fields' => array( + 'batch_id' => array( + 'name' => 'batch_id', + 'title' => ts('Batch Name'), + ), + ), + 'filters' => array( + 'bid' => array( + 'title' => ts('Batch Name'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Batch_BAO_Batch::getBatches(), + 'type' => CRM_Utils_Type::T_INT, + 'dbAlias' => 'batch_civireport.batch_id', + ), + ), + ), + 'civicrm_contribution_ordinality' => array( + 'dao' => 'CRM_Contribute_DAO_Contribution', + 'alias' => 'cordinality', + 'filters' => array( + 'ordinality' => array( + 'title' => ts('Contribution Ordinality'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => array( + 0 => 'First by Contributor', + 1 => 'Second or Later by Contributor', + ), + 'type' => CRM_Utils_Type::T_INT, + ), + ), + ), + 'civicrm_note' => array( + 'dao' => 'CRM_Core_DAO_Note', + 'fields' => array( + 'contribution_note' => array( + 'name' => 'note', + 'title' => ts('Contribution Note'), + ), + ), + 'filters' => array( + 'note' => array( + 'name' => 'note', + 'title' => ts('Contribution Note'), + 'operator' => 'like', + 'type' => CRM_Utils_Type::T_STRING, + ), + ), + ), + )) + $this->addAddressFields(FALSE); + // The tests test for this variation of the sort_name field. Don't argue with the tests :-). + $this->_columns['civicrm_contact']['fields']['sort_name']['title'] = ts('Donor Name'); + $this->_groupFilter = TRUE; + $this->_tagFilter = TRUE; + + // If we have active campaigns add those elements to both the fields and filters + if ($campaignEnabled && !empty($this->activeCampaigns)) { + $this->_columns['civicrm_contribution']['fields']['campaign_id'] = array( + 'title' => ts('Campaign'), + 'default' => 'false', + ); + $this->_columns['civicrm_contribution']['filters']['campaign_id'] = array( + 'title' => ts('Campaign'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => $this->activeCampaigns, + 'type' => CRM_Utils_Type::T_INT, + ); + $this->_columns['civicrm_contribution']['order_bys']['campaign_id'] = array('title' => ts('Campaign')); + } + + $this->_currencyColumn = 'civicrm_contribution_currency'; + + + // self::$contributionStatus = CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id'); + // $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(); + $this->_columns['civicrm_iats_journal'] = array( + 'fields' => + array( + 'id' => array('title' => 'CiviCRM Journal Id', 'default' => TRUE), + 'iats_id' => array('title' => 'iATS Journal Id', 'default' => TRUE), + 'tnid' => array('title' => 'Transaction ID', 'default' => TRUE), + 'tntyp' => array('title' => 'Transaction type', 'default' => TRUE), + 'agt' => array('title' => 'Client/Agent code', 'default' => TRUE), + 'cstc' => array('title' => 'Customer code', 'default' => TRUE), + 'inv' => array('title' => 'Invoice Reference', 'default' => TRUE), + 'dtm' => array('title' => 'Transaction date', 'default' => TRUE), + 'amt' => array('title' => 'Amount', 'default' => TRUE), + 'rst' => array('title' => 'Result string', 'default' => TRUE), + 'dtm' => array('title' => 'Transaction Date Time', 'default' => TRUE), + 'status_id' => array('title' => 'Payment Status', 'default' => TRUE), + ), + 'order_bys' => + array( + 'id' => array('title' => ts('CiviCRM Journal Id'), 'default' => TRUE, 'default_order' => 'DESC'), + 'iats_id' => array('title' => ts('iATS Journal Id')), + 'dtm' => array('title' => ts('Transaction Date Time')), + ), + 'filters' => + array( + 'dtm' => array( + 'title' => 'Transaction date', + 'operatorType' => CRM_Report_Form::OP_DATE, + 'type' => CRM_Utils_Type::T_DATE, + ), + 'inv' => array( + 'title' => 'Invoice Reference', + 'type' => CRM_Utils_Type::T_STRING, + ), + 'amt' => array( + 'title' => 'Amount', + 'operatorType' => CRM_Report_Form::OP_FLOAT, + 'type' => CRM_Utils_Type::T_FLOAT + ), + 'tntyp' => array( + 'title' => 'Type', + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => self::$_iats_transaction_types, + 'type' => CRM_Utils_Type::T_STRING, + ), + 'rst' => array( + 'title' => 'Result string', + 'type' => CRM_Utils_Type::T_STRING, + ), + 'status_id' => array( + 'title' => ts('iATS Journal Payment Status'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Contribute_PseudoConstant::contributionStatus(), + 'type' => CRM_Utils_Type::T_INT, + ), + ), + ); + parent::__construct(); + } + + /** + * Set the FROM clause for the report. + */ + public function from() { + $this->setFromBase('civicrm_contact'); + $this->_from .= " + INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} + ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id + AND {$this->_aliases['civicrm_contribution']}.is_test = 0"; + + if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + 'both' + ) { + $this->_from .= "\n LEFT JOIN civicrm_contribution_soft contribution_soft_civireport + ON contribution_soft_civireport.contribution_id = {$this->_aliases['civicrm_contribution']}.id"; + } + elseif (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + 'soft_credits_only' + ) { + $this->_from .= "\n INNER JOIN civicrm_contribution_soft contribution_soft_civireport + ON contribution_soft_civireport.contribution_id = {$this->_aliases['civicrm_contribution']}.id"; + } + $this->appendAdditionalFromJoins(); + } + + /** + * @param $rows + * + * @return array + */ + public function statistics(&$rows) { + $statistics = parent::statistics($rows); + + $totalAmount = $average = $fees = $net = array(); + $count = 0; + $select = " + SELECT COUNT({$this->_aliases['civicrm_contribution']}.total_amount ) as count, + SUM( {$this->_aliases['civicrm_contribution']}.total_amount ) as amount, + ROUND(AVG({$this->_aliases['civicrm_contribution']}.total_amount), 2) as avg, + {$this->_aliases['civicrm_contribution']}.currency as currency, + SUM( {$this->_aliases['civicrm_contribution']}.fee_amount ) as fees, + SUM( {$this->_aliases['civicrm_contribution']}.net_amount ) as net + "; + + $group = "\nGROUP BY {$this->_aliases['civicrm_contribution']}.currency"; + $sql = "{$select} {$this->_from} {$this->_where} {$group}"; + $dao = CRM_Core_DAO::executeQuery($sql); + $this->addToDeveloperTab($sql); + + while ($dao->fetch()) { + $totalAmount[] = CRM_Utils_Money::format($dao->amount, $dao->currency) . " (" . $dao->count . ")"; + $fees[] = CRM_Utils_Money::format($dao->fees, $dao->currency); + $net[] = CRM_Utils_Money::format($dao->net, $dao->currency); + $average[] = CRM_Utils_Money::format($dao->avg, $dao->currency); + $count += $dao->count; + } + $statistics['counts']['amount'] = array( + 'title' => ts('Total Amount (Contributions)'), + 'value' => implode(', ', $totalAmount), + 'type' => CRM_Utils_Type::T_STRING, + ); + $statistics['counts']['count'] = array( + 'title' => ts('Total Contributions'), + 'value' => $count, + ); + $statistics['counts']['fees'] = array( + 'title' => ts('Fees'), + 'value' => implode(', ', $fees), + 'type' => CRM_Utils_Type::T_STRING, + ); + $statistics['counts']['net'] = array( + 'title' => ts('Net'), + 'value' => implode(', ', $net), + 'type' => CRM_Utils_Type::T_STRING, + ); + $statistics['counts']['avg'] = array( + 'title' => ts('Average'), + 'value' => implode(', ', $average), + 'type' => CRM_Utils_Type::T_STRING, + ); + + // Stats for soft credits + if ($this->_softFrom && + CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) != + 'contributions_only' + ) { + $totalAmount = $average = array(); + $count = 0; + $select = " +SELECT COUNT(contribution_soft_civireport.amount ) as count, + SUM(contribution_soft_civireport.amount ) as amount, + ROUND(AVG(contribution_soft_civireport.amount), 2) as avg, + {$this->_aliases['civicrm_contribution']}.currency as currency"; + $sql = " +{$select} +{$this->_softFrom} +GROUP BY {$this->_aliases['civicrm_contribution']}.currency"; + $dao = CRM_Core_DAO::executeQuery($sql); + $this->addToDeveloperTab($sql); + while ($dao->fetch()) { + $totalAmount[] = CRM_Utils_Money::format($dao->amount, $dao->currency) . " (" . + $dao->count . ")"; + $average[] = CRM_Utils_Money::format($dao->avg, $dao->currency); + $count += $dao->count; + } + $statistics['counts']['softamount'] = array( + 'title' => ts('Total Amount (Soft Credits)'), + 'value' => implode(', ', $totalAmount), + 'type' => CRM_Utils_Type::T_STRING, + ); + $statistics['counts']['softcount'] = array( + 'title' => ts('Total Soft Credits'), + 'value' => $count, + ); + $statistics['counts']['softavg'] = array( + 'title' => ts('Average (Soft Credits)'), + 'value' => implode(', ', $average), + 'type' => CRM_Utils_Type::T_STRING, + ); + } + + return $statistics; + } + + /** + * This function appears to have been overrriden for the purposes of facilitating soft credits in the report. + * + * The report appears to have 2 different functions: + * 1) contribution report + * 2) soft credit report - showing a row per 'payment engagement' (payment or soft credit). There is a separate + * soft credit report as well. + * + * Somewhat confusingly this report returns multiple rows per contribution when soft credits are included. It feels + * like there is a case to split it into 2 separate reports. + * + * Soft credit functionality is not currently unit tested for this report. + */ + public function postProcess() { + // get the acl clauses built before we assemble the query + $this->buildACLClause($this->_aliases['civicrm_contact']); + + $this->beginPostProcess(); + // CRM-18312 - display soft_credits and soft_credits_for column + // when 'Contribution or Soft Credit?' column is not selected + if (empty($this->_params['fields']['contribution_or_soft'])) { + $this->_params['fields']['contribution_or_soft'] = 1; + $this->noDisplayContributionOrSoftColumn = TRUE; + } + + if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + 'contributions_only' && + !empty($this->_params['fields']['soft_credit_type_id']) + ) { + unset($this->_params['fields']['soft_credit_type_id']); + if (!empty($this->_params['soft_credit_type_id_value'])) { + $this->_params['soft_credit_type_id_value'] = array(); + } + } + + // 1. use main contribution query to build temp table 1 + $sql = $this->buildQuery(); + $tempQuery = "CREATE TEMPORARY TABLE civireport_contribution_detail_temp1 {$this->_databaseAttributes} AS {$sql}"; + $this->addToDeveloperTab($tempQuery); + CRM_Core_DAO::executeQuery($tempQuery); + $this->setPager(); + + // 2. customize main contribution query for soft credit, and build temp table 2 with soft credit contributions only + $this->softCreditFrom(); + // also include custom group from if included + // since this might be included in select + $this->customDataFrom(); + + $select = str_ireplace('contribution_civireport.total_amount', 'contribution_soft_civireport.amount', $this->_select); + $select = str_ireplace("'Contribution' as", "'Soft Credit' as", $select); + // We really don't want to join soft credit in if not required. + if (!empty($this->_groupBy) && !$this->noDisplayContributionOrSoftColumn) { + $this->_groupBy .= ', contribution_soft_civireport.amount'; + } + // we inner join with temp1 to restrict soft contributions to those in temp1 table + $sql = "{$select} {$this->_from} {$this->_where} {$this->_groupBy}"; + $tempQuery = "CREATE TEMPORARY TABLE civireport_contribution_detail_temp2 {$this->_databaseAttributes} AS {$sql}"; + $this->addToDeveloperTab($tempQuery); + CRM_Core_DAO::executeQuery($tempQuery); + if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + 'soft_credits_only' + ) { + // revise pager : prev, next based on soft-credits only + $this->setPager(); + } + + // copy _from for later use of stats calculation for soft credits, and reset $this->_from to main query + $this->_softFrom = $this->_from; + + // simple reset of ->_from + $this->from(); + + // also include custom group from if included + // since this might be included in select + $this->customDataFrom(); + + // 3. Decide where to populate temp3 table from + if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + 'contributions_only' + ) { + $tempQuery = "(SELECT * FROM civireport_contribution_detail_temp1)"; + } + elseif (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + 'soft_credits_only' + ) { + $tempQuery = "(SELECT * FROM civireport_contribution_detail_temp2)"; + } + else { + $tempQuery = " +(SELECT * FROM civireport_contribution_detail_temp1) +UNION ALL +(SELECT * FROM civireport_contribution_detail_temp2)"; + } + + // 4. build temp table 3 + $sql = "CREATE TEMPORARY TABLE civireport_contribution_detail_temp3 {$this->_databaseAttributes} AS {$tempQuery}"; + $this->addToDeveloperTab($sql); + CRM_Core_DAO::executeQuery($sql); + + // 6. show result set from temp table 3 + $rows = array(); + $sql = "SELECT * FROM civireport_contribution_detail_temp3 $this->_orderBy"; + $this->buildRows($sql, $rows); + + // format result set. + $this->formatDisplay($rows, FALSE); + + // assign variables to templates + $this->doTemplateAssignment($rows); + // do print / pdf / instance stuff if needed + $this->endPostProcess($rows); + } + + /** + * Alter display of rows. + * + * Iterate through the rows retrieved via SQL and make changes for display purposes, + * such as rendering contacts as links. + * + * @param array $rows + * Rows generated by SQL, with an array for each row. + */ + public function alterDisplay(&$rows) { + $checkList = array(); + $entryFound = FALSE; + $display_flag = $prev_cid = $cid = 0; + $contributionTypes = CRM_Contribute_PseudoConstant::financialType(); + $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(); + $paymentInstruments = CRM_Contribute_PseudoConstant::paymentInstrument(); + $contributionPages = CRM_Contribute_PseudoConstant::contributionPage(); + $batches = CRM_Batch_BAO_Batch::getBatches(); + foreach ($rows as $rowNum => $row) { + if (!empty($this->_noRepeats) && $this->_outputMode != 'csv') { + // don't repeat contact details if its same as the previous row + if (array_key_exists('civicrm_contact_id', $row)) { + if ($cid = $row['civicrm_contact_id']) { + if ($rowNum == 0) { + $prev_cid = $cid; + } + else { + if ($prev_cid == $cid) { + $display_flag = 1; + $prev_cid = $cid; + } + else { + $display_flag = 0; + $prev_cid = $cid; + } + } + + if ($display_flag) { + foreach ($row as $colName => $colVal) { + // Hide repeats in no-repeat columns, but not if the field's a section header + if (in_array($colName, $this->_noRepeats) && + !array_key_exists($colName, $this->_sections) + ) { + unset($rows[$rowNum][$colName]); + } + } + } + $entryFound = TRUE; + } + } + } + + if (CRM_Utils_Array::value('civicrm_contribution_contribution_or_soft', $rows[$rowNum]) == + 'Contribution' + ) { + unset($rows[$rowNum]['civicrm_contribution_soft_soft_credit_type_id']); + } + + $entryFound = $this->alterDisplayContactFields($row, $rows, $rowNum, 'contribution/detail', ts('View Contribution Details')) ? TRUE : $entryFound; + // convert donor sort name to link + if (array_key_exists('civicrm_contact_sort_name', $row) && + !empty($rows[$rowNum]['civicrm_contact_sort_name']) && + array_key_exists('civicrm_contact_id', $row) + ) { + $url = CRM_Utils_System::url("civicrm/contact/view", + 'reset=1&cid=' . $row['civicrm_contact_id'], + $this->_absoluteUrl + ); + $rows[$rowNum]['civicrm_contact_sort_name_link'] = $url; + $rows[$rowNum]['civicrm_contact_sort_name_hover'] = ts("View Contact Summary for this Contact."); + } + + if ($value = CRM_Utils_Array::value('civicrm_contribution_financial_type_id', $row)) { + $rows[$rowNum]['civicrm_contribution_financial_type_id'] = $contributionTypes[$value]; + $entryFound = TRUE; + } + if ($value = CRM_Utils_Array::value('civicrm_contribution_contribution_status_id', $row)) { + $rows[$rowNum]['civicrm_contribution_contribution_status_id'] = $contributionStatus[$value]; + $entryFound = TRUE; + } + if ($value = CRM_Utils_Array::value('civicrm_contribution_contribution_page_id', $row)) { + $rows[$rowNum]['civicrm_contribution_contribution_page_id'] = $contributionPages[$value]; + $entryFound = TRUE; + } + if ($value = CRM_Utils_Array::value('civicrm_contribution_payment_instrument_id', $row)) { + $rows[$rowNum]['civicrm_contribution_payment_instrument_id'] = $paymentInstruments[$value]; + $entryFound = TRUE; + } + if (!empty($row['civicrm_batch_batch_id'])) { + $rows[$rowNum]['civicrm_batch_batch_id'] = CRM_Utils_Array::value($row['civicrm_batch_batch_id'], $batches); + $entryFound = TRUE; + } + if (!empty($row['civicrm_financial_trxn_card_type_id'])) { + $rows[$rowNum]['civicrm_financial_trxn_card_type_id'] = $this->getLabels($row['civicrm_financial_trxn_card_type_id'], 'CRM_Financial_DAO_FinancialTrxn', 'card_type_id'); + $entryFound = TRUE; + } + + // Contribution amount links to viewing contribution + if (($value = CRM_Utils_Array::value('civicrm_contribution_total_amount', $row)) && + CRM_Core_Permission::check('access CiviContribute') + ) { + $url = CRM_Utils_System::url("civicrm/contact/view/contribution", + "reset=1&id=" . $row['civicrm_contribution_contribution_id'] . + "&cid=" . $row['civicrm_contact_id'] . + "&action=view&context=contribution&selectedChild=contribute", + $this->_absoluteUrl + ); + $rows[$rowNum]['civicrm_contribution_total_amount_link'] = $url; + $rows[$rowNum]['civicrm_contribution_total_amount_hover'] = ts("View Details of this Contribution."); + $entryFound = TRUE; + } + + // convert campaign_id to campaign title + if (array_key_exists('civicrm_contribution_campaign_id', $row)) { + if ($value = $row['civicrm_contribution_campaign_id']) { + $rows[$rowNum]['civicrm_contribution_campaign_id'] = $this->activeCampaigns[$value]; + $entryFound = TRUE; + } + } + + // soft credits + if (array_key_exists('civicrm_contribution_soft_credits', $row) && + 'Contribution' == + CRM_Utils_Array::value('civicrm_contribution_contribution_or_soft', $rows[$rowNum]) && + array_key_exists('civicrm_contribution_contribution_id', $row) + ) { + $query = " +SELECT civicrm_contact_id, civicrm_contact_sort_name, civicrm_contribution_total_amount_sum, civicrm_contribution_currency +FROM civireport_contribution_detail_temp2 +WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribution_id']}"; + $this->addToDeveloperTab($query); + $dao = CRM_Core_DAO::executeQuery($query); + $string = ''; + $separator = ($this->_outputMode !== 'csv') ? "<br/>" : ' '; + while ($dao->fetch()) { + $url = CRM_Utils_System::url("civicrm/contact/view", 'reset=1&cid=' . + $dao->civicrm_contact_id); + $string = $string . ($string ? $separator : '') . + "<a href='{$url}'>{$dao->civicrm_contact_sort_name}</a> " . + CRM_Utils_Money::format($dao->civicrm_contribution_total_amount_sum, $dao->civicrm_contribution_currency); + } + $rows[$rowNum]['civicrm_contribution_soft_credits'] = $string; + } + + if (array_key_exists('civicrm_contribution_soft_credit_for', $row) && + 'Soft Credit' == + CRM_Utils_Array::value('civicrm_contribution_contribution_or_soft', $rows[$rowNum]) && + array_key_exists('civicrm_contribution_contribution_id', $row) + ) { + $query = " +SELECT civicrm_contact_id, civicrm_contact_sort_name +FROM civireport_contribution_detail_temp1 +WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribution_id']}"; + $this->addToDeveloperTab($query); + $dao = CRM_Core_DAO::executeQuery($query); + $string = ''; + while ($dao->fetch()) { + $url = CRM_Utils_System::url("civicrm/contact/view", 'reset=1&cid=' . + $dao->civicrm_contact_id); + $string = $string . + "\n<a href='{$url}'>{$dao->civicrm_contact_sort_name}</a>"; + } + $rows[$rowNum]['civicrm_contribution_soft_credit_for'] = $string; + } + + // CRM-18312 - hide 'contribution_or_soft' column if unchecked. + if (!empty($this->noDisplayContributionOrSoftColumn)) { + unset($rows[$rowNum]['civicrm_contribution_contribution_or_soft']); + unset($this->_columnHeaders['civicrm_contribution_contribution_or_soft']); + } + + //convert soft_credit_type_id into label + if (array_key_exists('civicrm_contribution_soft_soft_credit_type_id', $rows[$rowNum])) { + $rows[$rowNum]['civicrm_contribution_soft_soft_credit_type_id'] = CRM_Core_PseudoConstant::getLabel( + 'CRM_Contribute_BAO_ContributionSoft', + 'soft_credit_type_id', + $row['civicrm_contribution_soft_soft_credit_type_id'] + ); + } + + $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, 'contribute/detail', 'List all contribution(s) for this ') ? TRUE : $entryFound; + + // skip looking further in rows, if first row itself doesn't + // have the column we need + if (!$entryFound) { + break; + } + $lastKey = $rowNum; + } + } + + public function sectionTotals() { + + // Reports using order_bys with sections must populate $this->_selectAliases in select() method. + if (empty($this->_selectAliases)) { + return; + } + + if (!empty($this->_sections)) { + // build the query with no LIMIT clause + $select = str_ireplace('SELECT SQL_CALC_FOUND_ROWS ', 'SELECT ', $this->_select); + $sql = "{$select} {$this->_from} {$this->_where} {$this->_groupBy} {$this->_having} {$this->_orderBy}"; + + // pull section aliases out of $this->_sections + $sectionAliases = array_keys($this->_sections); + + $ifnulls = array(); + foreach (array_merge($sectionAliases, $this->_selectAliases) as $alias) { + $ifnulls[] = "ifnull($alias, '') as $alias"; + } + $this->_select = "SELECT " . implode(", ", $ifnulls); + $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($ifnulls, $sectionAliases); + + /* Group (un-limited) report by all aliases and get counts. This might + * be done more efficiently when the contents of $sql are known, ie. by + * overriding this method in the report class. + */ + + $addtotals = ''; + + if (array_search("civicrm_contribution_total_amount", $this->_selectAliases) !== + FALSE + ) { + $addtotals = ", sum(civicrm_contribution_total_amount) as sumcontribs"; + $showsumcontribs = TRUE; + } + + $query = $this->_select . + "$addtotals, count(*) as ct from civireport_contribution_detail_temp3 group by " . + implode(", ", $sectionAliases); + // initialize array of total counts + $sumcontribs = $totals = array(); + $dao = CRM_Core_DAO::executeQuery($query); + $this->addToDeveloperTab($query); + while ($dao->fetch()) { + + // let $this->_alterDisplay translate any integer ids to human-readable values. + $rows[0] = $dao->toArray(); + $this->alterDisplay($rows); + $row = $rows[0]; + + // add totals for all permutations of section values + $values = array(); + $i = 1; + $aliasCount = count($sectionAliases); + foreach ($sectionAliases as $alias) { + $values[] = $row[$alias]; + $key = implode(CRM_Core_DAO::VALUE_SEPARATOR, $values); + if ($i == $aliasCount) { + // the last alias is the lowest-level section header; use count as-is + $totals[$key] = $dao->ct; + if ($showsumcontribs) { + $sumcontribs[$key] = $dao->sumcontribs; + } + } + else { + // other aliases are higher level; roll count into their total + $totals[$key] = (array_key_exists($key, $totals)) ? $totals[$key] + $dao->ct : $dao->ct; + if ($showsumcontribs) { + $sumcontribs[$key] = array_key_exists($key, $sumcontribs) ? $sumcontribs[$key] + $dao->sumcontribs : $dao->sumcontribs; + } + } + } + } + if ($showsumcontribs) { + $totalandsum = array(); + // ts exception to avoid having ts("%1 %2: %3") + $title = '%1 contributions / soft-credits: %2'; + + if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + 'contributions_only' + ) { + $title = '%1 contributions: %2'; + } + elseif (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + 'soft_credits_only' + ) { + $title = '%1 soft-credits: %2'; + } + foreach ($totals as $key => $total) { + $totalandsum[$key] = ts($title, array( + 1 => $total, + 2 => CRM_Utils_Money::format($sumcontribs[$key]), + )); + } + $this->assign('sectionTotals', $totalandsum); + } + else { + $this->assign('sectionTotals', $totals); + } + } + } + + /** + * Generate the from clause as it relates to the soft credits. + */ + public function softCreditFrom() { + + $this->_from = " + FROM civireport_contribution_detail_temp1 temp1_civireport + INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} + ON temp1_civireport.civicrm_contribution_contribution_id = {$this->_aliases['civicrm_contribution']}.id + INNER JOIN civicrm_contribution_soft contribution_soft_civireport + ON contribution_soft_civireport.contribution_id = {$this->_aliases['civicrm_contribution']}.id + INNER JOIN civicrm_contact {$this->_aliases['civicrm_contact']} + ON {$this->_aliases['civicrm_contact']}.id = contribution_soft_civireport.contact_id + {$this->_aclFrom} + "; + + $this->appendAdditionalFromJoins(); + } + + /** + * Append the joins that are required regardless of context. + */ + public function appendAdditionalFromJoins() { + if (!empty($this->_params['ordinality_value'])) { + $this->_from .= " + INNER JOIN (SELECT c.id, IF(COUNT(oc.id) = 0, 0, 1) AS ordinality FROM civicrm_contribution c LEFT JOIN civicrm_contribution oc ON c.contact_id = oc.contact_id AND oc.receive_date < c.receive_date GROUP BY c.id) {$this->_aliases['civicrm_contribution_ordinality']} + ON {$this->_aliases['civicrm_contribution_ordinality']}.id = {$this->_aliases['civicrm_contribution']}.id"; + } + $this->joinPhoneFromContact(); + $this->joinAddressFromContact(); + $this->joinEmailFromContact(); + + // include contribution note + if (!empty($this->_params['fields']['contribution_note']) || + !empty($this->_params['note_value']) + ) { + $this->_from .= " + LEFT JOIN civicrm_note {$this->_aliases['civicrm_note']} + ON ( {$this->_aliases['civicrm_note']}.entity_table = 'civicrm_contribution' AND + {$this->_aliases['civicrm_contribution']}.id = {$this->_aliases['civicrm_note']}.entity_id )"; + } + //for contribution batches + if (!empty($this->_params['fields']['batch_id']) || + !empty($this->_params['bid_value']) + ) { + $this->_from .= " + LEFT JOIN civicrm_entity_financial_trxn eft + ON eft.entity_id = {$this->_aliases['civicrm_contribution']}.id AND + eft.entity_table = 'civicrm_contribution' + LEFT JOIN civicrm_entity_batch {$this->_aliases['civicrm_batch']} + ON ({$this->_aliases['civicrm_batch']}.entity_id = eft.financial_trxn_id + AND {$this->_aliases['civicrm_batch']}.entity_table = 'civicrm_financial_trxn')"; + } + // for credit card type + $this->addFinancialTrxnFromClause(); + // for iats journal data + $this->addIatsJournalFromClause(); + } + + public function addIatsJournalFromClause() { + if ($this->isTableSelected('civicrm_iats_journal')) { + $this->_from .= " + LEFT JOIN civicrm_iats_journal {$this->_aliases['civicrm_iats_journal']} + ON {$this->_aliases['civicrm_contribution']}.invoice_id = {$this->_aliases['civicrm_iats_journal']}.inv \n"; + } + } +} diff --git a/civicrm/ext/iatspayments/CRM/iATS/Form/Report/Journal.php b/civicrm/ext/iatspayments/CRM/iATS/Form/Report/Journal.php index 9bf19576dda69ab36c7245b8ce4a18e18154c8cf..e6c52d52a6a8a065f1f69f3cfc1d3154fe16909c 100644 --- a/civicrm/ext/iatspayments/CRM/iATS/Form/Report/Journal.php +++ b/civicrm/ext/iatspayments/CRM/iATS/Form/Report/Journal.php @@ -79,6 +79,10 @@ class CRM_iATS_Form_Report_Journal extends CRM_Report_Form { 'options' => self::$transaction_types, 'type' => CRM_Utils_Type::T_STRING, ), + 'agt' => array( + 'title' => 'Client/Agent code', + 'type' => CRM_Utils_Type::T_STRING, + ), 'rst' => array( 'title' => 'Result string', 'type' => CRM_Utils_Type::T_STRING, diff --git a/civicrm/ext/iatspayments/CRM/iATS/Form/Report/Recur.php b/civicrm/ext/iatspayments/CRM/iATS/Form/Report/Recur.php index 6f46d92e76952e2db45a88ffd7d7526a9c179979..c5bbd1b75ee6c6d798f7f118e118baab3bf69c0e 100644 --- a/civicrm/ext/iatspayments/CRM/iATS/Form/Report/Recur.php +++ b/civicrm/ext/iatspayments/CRM/iATS/Form/Report/Recur.php @@ -208,6 +208,10 @@ class CRM_iATS_Form_Report_Recur extends CRM_Report_Form { 'title' => ts('Amount'), 'default' => TRUE, ), + 'financial_type_id' => array( + 'title' => ts('Financial Type'), + 'default' => TRUE, + ), 'contribution_status_id' => array( 'title' => ts('Donation Status'), ), @@ -455,6 +459,10 @@ class CRM_iATS_Form_Report_Recur extends CRM_Report_Form { if ($value = CRM_Utils_Array::value('civicrm_contribution_recur_contribution_status_id', $row)) { $rows[$rowNum]['civicrm_contribution_recur_contribution_status_id'] = self::$contributionStatus[$value]; } + // handle financial type id + if ($value = CRM_Utils_Array::value('civicrm_contribution_recur_financial_type_id', $row)) { + $rows[$rowNum]['civicrm_contribution_recur_financial_type_id'] = self::$financial_types[$value]; + } // Handle processor id. if ($value = CRM_Utils_Array::value('civicrm_contribution_recur_payment_processor_id', $row)) { $rows[$rowNum]['civicrm_contribution_recur_payment_processor_id'] = self::$processors[$value]; diff --git a/civicrm/ext/iatspayments/CRM/iATS/iATSService.php b/civicrm/ext/iatspayments/CRM/iATS/iATSService.php index f65056eb057427ad964cf0d37de5605124027ee4..6c6d02cae05aeb63ff8fa1ebfbec659f2ffb8875 100644 --- a/civicrm/ext/iatspayments/CRM/iATS/iATSService.php +++ b/civicrm/ext/iatspayments/CRM/iATS/iATSService.php @@ -639,7 +639,8 @@ class iATS_Service_Request { return 'The card is over the limit.'; case 'REJECT: 15': - return 'General decline code. Please have cardholder call the number on the back of the card.'; + // return 'General decline code. Please have cardholder call the number on the back of the card.'; + return 'General decline code.'; case 'REJECT: 16': return 'Invalid charge card number. Verify and re-enter credit card information.'; @@ -663,7 +664,8 @@ class iATS_Service_Request { return 'Charge card expired.'; case 'REJECT: 25': - return 'Capture card. Reported lost or stolen.'; + // return 'Capture card. Reported lost or stolen.'; + return 'Possibly reported lost or stolen.'; case 'REJECT: 26': return 'Invalid transaction, invalid expiry date. Please confirm and retry transaction.'; diff --git a/civicrm/ext/iatspayments/README.md b/civicrm/ext/iatspayments/README.md index 4d309250458f874a84e34b0cf6012adee9c955d3..865e2a6c35ec4f10c19b4a14a91f7aaa589633f9 100644 --- a/civicrm/ext/iatspayments/README.md +++ b/civicrm/ext/iatspayments/README.md @@ -24,6 +24,8 @@ Installation This extension follows the standard installation method - if you've got a supported CiviCRM version and you've set up your extensions directory, it'll appear in the Manage Extensions list as 'iATS Payments (com.iatspayments.civicrm)'. Hit Install. +As of CiviCRM 5.x, the iATS extension is distributed with the CiviCRM download. This is generally the right version to install. See https://github.com/iATSPayments/com.iatspayments.civicrm/issues/242 for notes on converting from a previous manual install. + If you need help with installing extensions, try: https://wiki.civicrm.org/confluence/display/CRMDOC/Extensions If you want to try out a particular version directly from github, you probably already know how to do that. diff --git a/civicrm/ext/iatspayments/api/v3/IatsPayments/GetJournal.php b/civicrm/ext/iatspayments/api/v3/IatsPayments/GetJournal.php index 77d00b1f7e69ed4e15544c513b628c93ad78bc8f..e228c1f5212b02622376c8e3dc306548ac6531c9 100644 --- a/civicrm/ext/iatspayments/api/v3/IatsPayments/GetJournal.php +++ b/civicrm/ext/iatspayments/api/v3/IatsPayments/GetJournal.php @@ -9,8 +9,6 @@ * * @param array $params * - * @return array - * * Get entries from iATSPayments in the journal table */ function _civicrm_api3_iats_payments_get_journal_spec(&$params) { @@ -63,7 +61,7 @@ function civicrm_api3_iats_payments_get_journal($params) { 'inv' => 'String', ); $i = 0; - foreach($params as $key => $value) { + foreach ($params as $key => $value) { if (isset($select_params[$key])) { $i++; if (is_string($value)) { @@ -71,7 +69,7 @@ function civicrm_api3_iats_payments_get_journal($params) { $args[$i] = array($value, $select_params[$key]); } elseif (is_array($value)) { - foreach(array_keys($value) as $sql) { + foreach (array_keys($value) as $sql) { $select .= " AND ($key %$i)"; $args[$i] = array($sql, 'String'); } @@ -80,7 +78,7 @@ function civicrm_api3_iats_payments_get_journal($params) { } $limit = 25; if (isset($params['options']['limit'])) { - $limit = (integer) $params['options']['limit']; + $limit = (integer) $params['options']['limit']; } if ($limit > 0) { $i++; @@ -101,18 +99,17 @@ function civicrm_api3_iats_payments_get_journal($params) { /* We index in the transaction_id */ $record = array(); foreach (get_object_vars($dao) as $key => $value) { - if ('N' != $key && (0 !== strpos($key,'_'))) { + if ('N' != $key && (0 !== strpos($key, '_'))) { $record[$key] = $value; } } $key = $dao->tnid; - $values[$key] = $record; + $values[$key] = $record; } } catch (Exception $e) { - CRM_Core_Error::debug_var('params',$params); + CRM_Core_Error::debug_var('params', $params); // throw API_Exception('iATS Payments journalling failed: '. $e->getMessage()); } return civicrm_api3_create_success($values); } - diff --git a/civicrm/ext/iatspayments/api/v3/IatsPayments/Journal.php b/civicrm/ext/iatspayments/api/v3/IatsPayments/Journal.php index b99613ac2ed34b869923b4321cc2a01fca576532..a872753cdcd5689b007b5dcd0a569419c74dc94b 100644 --- a/civicrm/ext/iatspayments/api/v3/IatsPayments/Journal.php +++ b/civicrm/ext/iatspayments/api/v3/IatsPayments/Journal.php @@ -9,8 +9,6 @@ * * @param array $params * - * @return array - * * Record an entry from iATSPayments into the journal table */ function _civicrm_api3_iats_payments_journal_spec(&$params) { @@ -36,13 +34,13 @@ function civicrm_api3_iats_payments_journal($params) { //return civicrm_api3_create_success(TRUE, array('test' => TRUE)); try { $data = $params['data']; - $dtm = date('YmdHis',$params['receive_date']); + $dtm = date('YmdHis', $params['receive_date']); $defaults = array( - 'Client Code' => '', + 'Client Code' => '', 'Method of Payment' => '', - 'Comment' => '' + 'Comment' => '', ); - foreach($defaults as $key => $default) { + foreach ($defaults as $key => $default) { $data[$key] = empty($data[$key]) ? $default : $data[$key]; } // There are unique keys on tnid (transaction) and iats_id (journal) @@ -67,13 +65,12 @@ function civicrm_api3_iats_payments_journal($params) { 10 => array($data['Comment'], 'String'), 11 => array($params['status_id'], 'Integer'), ); - $result = CRM_Core_DAO::executeQuery($sql_action ." civicrm_iats_journal + $result = CRM_Core_DAO::executeQuery($sql_action . " civicrm_iats_journal (tnid, iats_id, dtm, agt, cstc, inv, amt, rst, tntyp, cm, status_id) VALUES (%1, $iats_journal_id, %3, %4, %5, %6, %7, %8, %9, %10, %11)", $query_params); } catch (Exception $e) { - CRM_Core_Error::debug_var('params',$params); - // throw CiviCRM_API3_Exception('iATS Payments journalling failed: '. $e->getMessage()); + CRM_Core_Error::debug_var('params', $params); + // throw CiviCRM_API3_Exception('iATS Payments journalling failed: ' . $e->getMessage()); } return civicrm_api3_create_success(); } - diff --git a/civicrm/ext/iatspayments/api/v3/Job/Iatsrecurringcontributions.php b/civicrm/ext/iatspayments/api/v3/Job/Iatsrecurringcontributions.php index 51b517f4b89a9368f8ef8b36c7c82e4157137efb..21510bdb67123599d2a56cf512f967819a494e65 100644 --- a/civicrm/ext/iatspayments/api/v3/Job/Iatsrecurringcontributions.php +++ b/civicrm/ext/iatspayments/api/v3/Job/Iatsrecurringcontributions.php @@ -275,7 +275,7 @@ function civicrm_api3_job_iatsrecurringcontributions($params) { $contribution['financial_type_id'] = $dao->financial_type_id; } // if we have a created a pending contribution record due to a future start time, then recycle that CiviCRM contribution record now. - // Note that the date and amount both could have changed. + // Note that the date and amount both could have changed. // The key is to only match if we find a single pending contribution, with a NULL transaction id, for this recurring schedule. // We'll need to pay attention later that we may or may not already have a contribution id. try { @@ -285,7 +285,9 @@ function civicrm_api3_job_iatsrecurringcontributions($params) { 'contribution_recur_id' => $contribution_recur_id, 'contribution_status_id' => "Pending", )); - $contribution['id'] = $pending_contribution['id']; + if (!empty($pending_contribution['id'])) { + $contribution['id'] = $pending_contribution['id']; + } } catch (Exception $e) { // ignore, we'll proceed normally without a contribution id @@ -331,7 +333,7 @@ function civicrm_api3_job_iatsrecurringcontributions($params) { } // So far so, good ... now create the pending contribution, and save its id // and then try to get the money, and do one of: - // update the contribution to failed, leave as pending for server failure, complete the transaction, + // update the contribution to failed, leave as pending for server failure, complete the transaction, // or update a pending ach/eft with it's transaction id. $result = _iats_process_contribution_payment($contribution, $options, $original_contribution_id); if ($email_failure_report && !empty($contribution['iats_reject_code'])) { diff --git a/civicrm/ext/iatspayments/api/v3/Job/Iatsreport.mgd.php b/civicrm/ext/iatspayments/api/v3/Job/Iatsreport.mgd.php index 2ebaa6963c62eecb4c5c05fafec94a584f9fe103..21df020af58ad2b70dc40c2c53a3709471b95218 100644 --- a/civicrm/ext/iatspayments/api/v3/Job/Iatsreport.mgd.php +++ b/civicrm/ext/iatspayments/api/v3/Job/Iatsreport.mgd.php @@ -3,13 +3,13 @@ // The record will be automatically inserted, updated, or deleted from the // database as appropriate. For more details, see "hook_civicrm_managed" at: // http://wiki.civicrm.org/confluence/display/CRMDOC42/Hook+Reference -return array ( +return array( 0 => - array ( + array( 'name' => 'Cron:Job.Iatsreport', 'entity' => 'Job', 'params' => - array ( + array( 'version' => 3, 'name' => 'iATS Payments Get Transaction Journal', 'description' => 'Call into iATS to get transaction journals (for auditing and verifying).', @@ -18,6 +18,6 @@ return array ( 'api_action' => 'iatsreport', 'parameters' => '', ), - 'update' => 'never' + 'update' => 'never', ), ); diff --git a/civicrm/ext/iatspayments/api/v3/Job/Iatsreport.php b/civicrm/ext/iatspayments/api/v3/Job/Iatsreport.php index 92a23e191c2d793580118d995aabd6ae0640ea50..90bc3c22ff7b1508cfe9670e99e9b9ac4424d4f8 100644 --- a/civicrm/ext/iatspayments/api/v3/Job/Iatsreport.php +++ b/civicrm/ext/iatspayments/api/v3/Job/Iatsreport.php @@ -2,8 +2,8 @@ /** * Job.IatsReport API specification (optional) - * - * Pull in the iATS transaction journal and save it in the corresponding table + * + * Pull in the iATS transaction journal and save it in the corresponding table * for local access for easier verification, auditing and reporting. * * @param array $spec description of fields supported by this API call @@ -18,12 +18,6 @@ function _civicrm_api3_job_iatsreport_spec(&$spec) { /** * Job.IatsReport API * - * @param array $params - * @return array API result descriptor - * @see civicrm_api3_create_success - * @see civicrm_api3_create_error - * @throws API_Exception - * Fetch all recent transactions from iATS for the purposes of auditing (in separate jobs). * This addresses multiple needs: * 1. Verify incomplete ACH/EFT contributions. @@ -32,6 +26,11 @@ function _civicrm_api3_job_iatsreport_spec(&$spec) { * 4. Input one-time contributions that did not go through CiviCRM * 5. Audit for remote changes in iATS. * + * @param array $params + * @return array API result descriptor + * @see civicrm_api3_create_success + * @see civicrm_api3_create_error + * @throws API_Exception */ function civicrm_api3_job_iatsreport($params) { @@ -46,13 +45,13 @@ function civicrm_api3_job_iatsreport($params) { )); } catch (CiviCRM_API3_Exception $e) { - throw new API_Exception('Unexpected error getting payment processors: ' . $e->getMessage()); // . "\n" . $e->getTraceAsString()); + throw new API_Exception('Unexpected error getting payment processors: ' . $e->getMessage()); // . "\n" . $e->getTraceAsString()); } if (empty($result['values'])) { return; } $payment_processors = array(); - foreach($result['values'] as $payment_processor) { + foreach ($result['values'] as $payment_processor) { $user_name = $payment_processor['user_name']; $type = $payment_processor['payment_type']; // 1 for cc, 2 for ach/eft $id = $payment_processor['id']; @@ -69,25 +68,25 @@ function civicrm_api3_job_iatsreport($params) { $iats_settings = CRM_Core_BAO_Setting::getItem('iATS Payments Extension', 'iats_settings'); // I also use the setttings to keep track of the last time I imported journal data from iATS. $iats_journal = CRM_Core_BAO_Setting::getItem('iATS Payments Extension', 'iats_journal'); - foreach(array('quick', 'recur', 'series') as $setting) { - $import[$setting] = empty($iats_settings['import_'.$setting]) ? 0 : 1; + foreach (array('quick', 'recur', 'series') as $setting) { + $import[$setting] = empty($iats_settings['import_' . $setting]) ? 0 : 1; } - require_once("CRM/iATS/iATSService.php"); + require_once "CRM/iATS/iATSService.php"; // an array of types => methods => payment status of the records retrieved $process_methods = array( - 1 => array('cc_journal_csv' => 1,'cc_payment_box_journal_csv' => 1, 'cc_payment_box_reject_csv' => 4), - 2 => array('acheft_journal_csv' => 1, 'acheft_payment_box_journal_csv' => 1, 'acheft_payment_box_reject_csv' => 4) + 1 => array('cc_journal_csv' => 1, 'cc_payment_box_journal_csv' => 1, 'cc_payment_box_reject_csv' => 4), + 2 => array('acheft_journal_csv' => 1, 'acheft_payment_box_journal_csv' => 1, 'acheft_payment_box_reject_csv' => 4), ); /* initialize some values so I can report at the end */ // count the number of records from each iats account analysed, and the number of each kind found ('action') $processed = array(); // save all my api result error messages as well $error_log = array(); - foreach($payment_processors as $user_name => $payment_processors_per_user) { + foreach ($payment_processors as $user_name => $payment_processors_per_user) { $processed[$user_name] = array(); foreach ($payment_processors_per_user as $type => $payment_processors_per_user_type) { $processed[$user_name][$type] = array(); - // we might have multiple payment processors by type e.g. SWIPE or separate codes for + // we might have multiple payment processors by type e.g. SWIPE or separate codes for // one-time and recurring contributions, I only want to process once per user_name + type $payment_processor = reset($payment_processors_per_user_type); $process_methods_per_type = $process_methods[$type]; @@ -95,7 +94,7 @@ function civicrm_api3_job_iatsreport($params) { /* the is_test below should always be 0, but I'm leaving it in, in case eventually we want to be verifying tests */ $credentials = iATS_Service_Request::credentials($payment_processor['id'], $payment_processor['is_test']); - foreach($process_methods_per_type as $method => $payment_status_id) { + foreach ($process_methods_per_type as $method => $payment_status_id) { // initialize my counts $processed[$user_name][$type][$method] = 0; // watchdog('civicrm_iatspayments_com', 'pp: <pre>!pp</pre>', array('!pp' => print_r($payment_processor,TRUE)), WATCHDOG_NOTICE); @@ -105,20 +104,22 @@ function civicrm_api3_job_iatsreport($params) { $iats = new iATS_Service_Request($iats_service_params); // For some methods, I only want to check once per day. $skip_method = FALSE; - $journal_setting_key = 'last_update_'.$method; - switch($method) { + $journal_setting_key = 'last_update_' . $method; + switch ($method) { case 'acheft_journal_csv': // special case to get today's transactions, so we're as real-time as we can be - case 'cc_journal_csv': + case 'cc_journal_csv': $request = array( - 'date' => date('Y-m-d').'T23:59:59+00:00', + 'date' => date('Y-m-d') . 'T23:59:59+00:00', 'customerIPAddress' => (function_exists('ip_address') ? ip_address() : $_SERVER['REMOTE_ADDR']), ); break; - default: // box journals (approvals and rejections) only go up to the end of yesterday + + default: + // box journals (approvals and rejections) only go up to the end of yesterday $request = array( 'startIndex' => 0, 'endIndex' => 1000, - 'toDate' => date('Y-m-d',strtotime('-1 day')).'T23:59:59+00:00', + 'toDate' => date('Y-m-d', strtotime('-1 day')) . 'T23:59:59+00:00', 'customerIPAddress' => (function_exists('ip_address') ? ip_address() : $_SERVER['REMOTE_ADDR']), ); // Calculate how far back I want to go, default 2 days ago. @@ -126,50 +127,54 @@ function civicrm_api3_job_iatsreport($params) { // Check when I last downloaded this box journal if (!empty($iats_journal[$journal_setting_key])) { // If I've already done this today, don't do it again. - if (0 === strpos($iats_journal[$journal_setting_key],date('Y-m-d'))) { + if (0 === strpos($iats_journal[$journal_setting_key], date('Y-m-d'))) { $skip_method = TRUE; } - else { // Make sure I fill in any gaps if this cron hasn't run for a while, but no more than a month - $fromDate = min(strtotime($iats_journal[$journal_setting_key]),strtotime('-2 days')); - $fromDate = max($fromDate,strtotime('-30 days')); + else { + // Make sure I fill in any gaps if this cron hasn't run for a while, but no more than a month + $fromDate = min(strtotime($iats_journal[$journal_setting_key]), strtotime('-2 days')); + $fromDate = max($fromDate, strtotime('-30 days')); } } - else { // If I've cleared the settings, then go back a month of data. + else { + // If I've cleared the settings, then go back a month of data. $fromDate = strtotime('-30 days'); } // reset the request fromDate, from the beginning of fromDate's day. - $request['fromDate'] = date('Y-m-d',$fromDate).'T00:00:00+00:00'; + $request['fromDate'] = date('Y-m-d', $fromDate) . 'T00:00:00+00:00'; break; } if (!$skip_method) { $iats_journal[$journal_setting_key] = date('Y-m-d H:i:s'); // make the soap request, should return a csv file - $response = $iats->request($credentials,$request); + $response = $iats->request($credentials, $request); // use my iats object to parse the result into an array of transaction ojects $transactions = $iats->getCSV($response, $method); // for the acheft journal, I also pull the previous 4 days and append, a bit of a hack. if ('acheft_journal_csv' == $method) { for ($days_before = -1; $days_before > -5; $days_before--) { - $request['date'] = date('Y-m-d', strtotime($days_before.' day')) . 'T23:59:59+00:00'; + $request['date'] = date('Y-m-d', strtotime($days_before . ' day')) . 'T23:59:59+00:00'; $response = $iats->request($credentials, $request); $transactions = array_merge($transactions, $iats->getCSV($response, $method)); } } // CRM_Core_Error::debug_var($method, $transactions); - foreach($transactions as $transaction) { + foreach ($transactions as $transaction) { try { $t = get_object_vars($transaction); $t['status_id'] = $payment_status_id; // A few more hacks for the one day journals - switch($method) { - case 'acheft_journal_csv': + switch ($method) { + case 'acheft_journal_csv': $t['data']['Method of Payment'] = 'ACHEFT'; $t['data']['Client Code'] = $credentials['agentCode']; break; - case 'cc_journal_csv': + + case 'cc_journal_csv': $t['data']['Method of Payment'] = $t['data']['CCType']; $t['data']['Client Code'] = $credentials['agentCode']; break; + } civicrm_api3('IatsPayments', 'journal', $t); $processed[$user_name][$type][$method]++; @@ -185,18 +190,18 @@ function civicrm_api3_job_iatsreport($params) { CRM_Core_BAO_Setting::setItem($iats_journal, 'iATS Payments Extension', 'iats_journal'); // watchdog('civicrm_iatspayments_com', 'found: <pre>!found</pre>', array('!found' => print_r($processed,TRUE)), WATCHDOG_NOTICE); $message = ''; - foreach($processed as $user_name => $p) { + foreach ($processed as $user_name => $p) { foreach ($p as $type => $ps) { $prefix = ($type == 1) ? 'cc' : 'acheft'; - $results = - array( + $results + = array( 1 => $user_name, 2 => $prefix, - 3 => $ps[$prefix.'_journal_csv'], - 4 => $ps[$prefix.'_payment_box_journal_csv'], - 5 => $ps[$prefix.'_payment_box_reject_csv'], + 3 => $ps[$prefix . '_journal_csv'], + 4 => $ps[$prefix . '_payment_box_journal_csv'], + 5 => $ps[$prefix . '_payment_box_reject_csv'], ); - $message .= '<br />'. ts('For account %1, type %2, processed %3 approvals from the one-day journals, and %4 approval and %5 rejection records from previous days using the box journals.', $results); + $message .= '<br />' . ts('For account %1, type %2, processed %3 approvals from the one-day journals, and %4 approval and %5 rejection records from previous days using the box journals.', $results); } } if (count($error_log) > 0) { diff --git a/civicrm/ext/iatspayments/api/v3/Job/Iatsverify.php b/civicrm/ext/iatspayments/api/v3/Job/Iatsverify.php index a2c88d2da107e7a90b488ad8c42a6da75cbc2c9d..2145781d63ef2e1d9a16f85e372b28821adba3cc 100644 --- a/civicrm/ext/iatspayments/api/v3/Job/Iatsverify.php +++ b/civicrm/ext/iatspayments/api/v3/Job/Iatsverify.php @@ -51,6 +51,12 @@ function _civicrm_api3_job_iatsverify_spec(&$spec) { /** * Job.IatsVerify API. * + * Look up all incomplete or pending (status = 2) contributions and see if they've been received approved or rejected payments + * at iATS, looked up via the Journal + * Update the corresponding recurring contribution record to status = 1 (or 4) + * This works for both the initial contribution and subsequent contributions of recurring contributions, as well as one offs. + * TODO: what kind of alerts should be provided if it fails? + * * @param array $params * * @return array API result descriptor @@ -59,12 +65,6 @@ function _civicrm_api3_job_iatsverify_spec(&$spec) { * @see civicrm_api3_create_error * * @throws API_Exception - * * Look up all incomplete or pending (status = 2) contributions and see if they've been received approved or rejected payments - * at iATS, looked up via the Journal - * Update the corresponding recurring contribution record to status = 1 (or 4) - * This works for both the initial contribution and subsequent contributions of recurring contributions, as well as one offs. - * TODO: what kind of alerts should be provided if it fails? - * */ function civicrm_api3_job_iatsverify($params) { @@ -80,12 +80,11 @@ function civicrm_api3_job_iatsverify($params) { $processed = array(1 => 0, 4 => 0); // Save all my api error result messages. $error_log = array(); - // $select_params = array( 'sequential' => 1, 'receive_date' => array('>' => "now - $verify_days day"), 'options' => array('limit' => 0), - 'contribution_status_id' => array('NOT IN' => array('Completed', 'Failed')), + 'contribution_status_id' => array('IN' => array('Pending')), 'invoice_id' => array('IS NOT NULL' => 1), 'contribution_test' => 0, 'return' => array('trxn_id', 'invoice_id', 'contribution_recur_id', 'contact_id', 'source'), @@ -146,7 +145,7 @@ function civicrm_api3_job_iatsverify($params) { } catch (CiviCRM_API3_Exception $e) { $is_email_receipt = 0; - $error_log[] = $e->getMessage() ."\n"; + $error_log[] = $e->getMessage() . "\n"; } } $complete['is_email_receipt'] = $is_email_receipt; @@ -155,19 +154,19 @@ function civicrm_api3_job_iatsverify($params) { $contributionResult = civicrm_api3('contribution', 'completetransaction', $complete); } catch (CiviCRM_API3_Exception $e) { - $error_log[] = 'Failed to complete transaction: '. $e->getMessage() ."\n"; + $error_log[] = 'Failed to complete transaction: ' . $e->getMessage() . "\n"; } // Restore source field and trxn_id that completetransaction overwrites civicrm_api3('contribution', 'create', array( - 'id' => $contribution['id'], + 'id' => $contribution['id'], 'source' => $contribution['source'], - 'trxn_id' => $trxn_id + 'trxn_id' => $trxn_id, )); case 4: // failed, just update the contribution status. civicrm_api3('Contribution', 'create', array( 'id' => $contribution['id'], - 'contribution_status_id' => $contribution_status_id + 'contribution_status_id' => $contribution_status_id, )); } // Always log these requests in my cutom civicrm table for auditing type purposes @@ -192,14 +191,14 @@ function civicrm_api3_job_iatsverify($params) { } } catch (CiviCRM_API3_Exception $e) { - $error_log[] = $e->getMessage() ."\n"; + $error_log[] = $e->getMessage() . "\n"; } $message .= '<br />' . ts('Completed with %1 errors.', array( 1 => count($error_log), ) ); - $message .= '<br />' . ts('Processed %1 approvals and %2 rejection records from the previous ' . IATS_VERIFY_DAYS . ' days.', + $message .= '<br />' . ts('Processed %1 approvals and %2 rejection records from the previous ' . IATS_VERIFY_DAYS . ' days.', array( 1 => $processed[1], 2 => $processed[4], diff --git a/civicrm/ext/iatspayments/composer.json b/civicrm/ext/iatspayments/composer.json index 12d66edfd84a888b4d7f39d2da751129d8cfa9c3..74c9b211a76611d4aa5b48b8b4448b742d6422e4 100644 --- a/civicrm/ext/iatspayments/composer.json +++ b/civicrm/ext/iatspayments/composer.json @@ -1,5 +1,5 @@ { "name": "iats-payments/civicrm", "description": "CiviCRM extension for iATS Payments", - "license": "AGPL" + "license": "AGPL-3.0" } diff --git a/civicrm/ext/iatspayments/iats.php b/civicrm/ext/iatspayments/iats.php index d6db867634c40b6ff71d522c89ad374d1ad92943..65467d75fe6e588f82ce162a8b1849ae6a7fbee7 100644 --- a/civicrm/ext/iatspayments/iats.php +++ b/civicrm/ext/iatspayments/iats.php @@ -1100,7 +1100,7 @@ function iats_civicrm_buildForm_CRM_Contribute_Form_UpdateSubscription(&$form) { return; } // Only mangle this form for recurring contributions using iATS, (and not the UKDD version) - $payment_processor_type = $form->_paymentProcessor['class_name']; + $payment_processor_type = empty($form->_paymentProcessor) ? substr(get_class($form->_paymentProcessorObj),9) : $form->_paymentProcessor['class_name']; if (0 !== strpos($payment_processor_type, 'Payment_iATSService')) { return; } @@ -1132,6 +1132,12 @@ function iats_civicrm_buildForm_CRM_Contribute_Form_UpdateSubscription(&$form) { catch (CiviCRM_API3_Exception $e) { return; } + try { + $pp = civicrm_api3('PaymentProcessor', 'getsingle', array('id' => $recur['payment_processor_id'])); + } + catch (CiviCRM_API3_Exception $e) { + $pp = array(); + } // Turn off default notification checkbox, because that's a better default. $defaults = array('is_notify' => 0); $edit_fields = array( @@ -1173,8 +1179,8 @@ function iats_civicrm_buildForm_CRM_Contribute_Form_UpdateSubscription(&$form) { // Now add some more fields for display only /* Add in the contact's name */ $form->addElement('static', 'contact', $contact['display_name']); - // get my pp. - $pp_label = $form->_paymentProcessor['name']; + // get my pp, if available. + $pp_label = empty($pp['name']) ? $form->_paymentProcessor['name'] : $pp['name']; $form->addElement('static', 'payment_processor', $pp_label); $label = CRM_Contribute_Pseudoconstant::financialType($recur['financial_type_id']); $form->addElement('static', 'financial_type', $label); diff --git a/civicrm/ext/iatspayments/info.xml b/civicrm/ext/iatspayments/info.xml index 900df21e5cb1559ea8e9a9b6d7f87bbb420e6c98..55c5172d5b717a3e96b117d9981b5928ade232bc 100644 --- a/civicrm/ext/iatspayments/info.xml +++ b/civicrm/ext/iatspayments/info.xml @@ -7,21 +7,21 @@ <url desc="Support">https://github.com/iATSPayments/com.iatspayments.civicrm/issues?state=open</url> <url desc="Installation Instructions">https://github.com/iATSPayments/com.iatspayments.civicrm</url> <url desc="Documentation">https://github.com/iATSPayments/com.iatspayments.civicrm</url> - <url desc="Release Notes">https://github.com/iATSPayments/com.iatspayments.civicrm/blob/master/release-notes/1.6.1.md</url> + <url desc="Release Notes">https://github.com/iATSPayments/com.iatspayments.civicrm/blob/master/release-notes/1.6.2.md</url> <url desc="Getting Started">https://www.semper-it.com/civicamp-iats-payments-slides</url> </urls> - <license>AGPL</license> + <license>AGPL-3.0</license> <maintainer> <author>Alan Dixon</author> <email>iats@blackflysolutions.ca</email> </maintainer> - <releaseDate>2017-10-17</releaseDate> - <version>1.6.1</version> + <releaseDate>2018-08-15</releaseDate> + <version>1.6.2</version> <develStage>stable</develStage> <compatibility> - <ver>4.7</ver> + <ver>5.0</ver> </compatibility> - <comments>This is a CiviCRM 4.7-only release. Please see the current release notes linked above for details. + <comments>This release resolves some 5.x compatibility issues, but should continue to work on 4.7.x. Please see the current release notes linked above for details. </comments> <civix> <namespace>CRM/iATS</namespace> diff --git a/civicrm/ext/iatspayments/release-notes/1.6.2.md b/civicrm/ext/iatspayments/release-notes/1.6.2.md new file mode 100644 index 0000000000000000000000000000000000000000..2f5b84dbe23b117a10e0cb3e433b7712ddfe6e33 --- /dev/null +++ b/civicrm/ext/iatspayments/release-notes/1.6.2.md @@ -0,0 +1,7 @@ +# iATS CiviCRM Extension 1.6.2 + +July 6, 2018 + +This release is an update to the 1.6.1 (4.7+ compatible version) of the iATS payment extension for CiviCRM, primarily for compatibility with the latest 5.x CiviCRM series, which introduced some non-critical feature breakage as noted in various issues. + +Newly added is a slightly modified version of the detailed contribution report that joins it to iATS journal data. This allows administrators to do reconciliation of CiviCRM contributions against transactions reported from iATS. diff --git a/civicrm/js/model/crm.uf.js b/civicrm/js/model/crm.uf.js index a6ab2982aec6e57c3abd75d54e958af591b4c771..4f198c12a9bbaebf69fdbe82c3e4eca78980fd36 100644 --- a/civicrm/js/model/crm.uf.js +++ b/civicrm/js/model/crm.uf.js @@ -32,7 +32,7 @@ * Add a help link to a form label */ function addHelp(title, options) { - return title + ' <a href="#" onclick=\'CRM.help("' + title + '", ' + JSON.stringify(options) + '); return false;\' title="' + ts('%1 Help', {1: title}) + '" class="helpicon"></a>'; + return title + ' <a href="#" onclick=\'CRM.help("' + title + '", ' + JSON.stringify(options) + '); return false;\' title="' + ts('%1 Help', {1: title}) + '" aria-label="' + ts('%1 Help', {1: title}) + '" class="helpicon"></a>'; } function watchChanges() { diff --git a/civicrm/packages/HTML/QuickForm.php b/civicrm/packages/HTML/QuickForm.php index e5de7720f1fbfd77a77cb070b566c1b80e64ea07..3931b801c0f2bc81ed3fa29bd6c4a0576960bb85 100644 --- a/civicrm/packages/HTML/QuickForm.php +++ b/civicrm/packages/HTML/QuickForm.php @@ -854,11 +854,11 @@ class HTML_QuickForm extends HTML_Common $base = substr($elementName, 0, $pos); $idx = explode('][', str_replace(["['", "']", '["', '"]'], ['[', ']', '[', ']'], substr($elementName, $pos + 1, -1))); if (isset($this->_submitValues[$base])) { - $value = CRM_Utils_Array::recursiveValue($this->_submitValues[$base], $idx); + $value = CRM_Utils_Array::pathGet($this->_submitValues[$base], $idx); } if ((is_array($value) || null === $value) && isset($this->_submitFiles[$base])) { - if (!CRM_Utils_Array::recursiveIsset($this->_submitFiles[$base], array_merge(['name'], $idx))) { + if (!CRM_Utils_Array::pathIsset($this->_submitFiles[$base], array_merge(['name'], $idx))) { $fileValue = NULL; } else { @@ -867,7 +867,7 @@ class HTML_QuickForm extends HTML_Common foreach ($props as $prop) { $fileValue = HTML_QuickForm::arrayMerge( $fileValue, - $this->_reindexFiles(CRM_Utils_Array::recursiveValue($this->_submitFiles[$base], array_merge([$prop], $idx)), $prop) + $this->_reindexFiles(CRM_Utils_Array::pathGet($this->_submitFiles[$base], array_merge([$prop], $idx)), $prop) ); } } @@ -1264,7 +1264,7 @@ class HTML_QuickForm extends HTML_Common $this->_submitValues[$elName] = $this->_recursiveFilter($filter, $value); } else { $keys = explode('[', trim(str_replace(["['", "']", '["', '"]'], ['[', '', '[', ''], $elName), '][')); - $this->_submitValues = CRM_Utils_Array::recursiveBuild($keys, $this->_recursiveFilter($filter, $value), $this->_submitValues); + CRM_Utils_Array::pathSet($this->_submitValues, $keys, $this->_recursiveFilter($filter, $value)); } } } @@ -1549,7 +1549,7 @@ class HTML_QuickForm extends HTML_Common $base = substr($target, 0, $pos); $idx = explode('][', str_replace(["['", "']", '["', '"]'], ['[', ']', '[', ']'], substr($target, $pos + 1, -1))); $idx = array_merge([$base, 'name'], $idx); - $isUpload = CRM_Utils_Array::recursiveIsset($this->_submitFiles, $idx); + $isUpload = CRM_Utils_Array::pathIsset($this->_submitFiles, $idx); } if ($isUpload && (!isset($submitValue['error']) || UPLOAD_ERR_NO_FILE == $submitValue['error'])) { continue 2; diff --git a/civicrm/packages/HTML/QuickForm/Renderer/ArraySmarty.php b/civicrm/packages/HTML/QuickForm/Renderer/ArraySmarty.php index 980ba694bb23986219c18d34032191d121eb01a2..8aa510a3edcc79d4af1ce7080635aaa9d15cfe41 100644 --- a/civicrm/packages/HTML/QuickForm/Renderer/ArraySmarty.php +++ b/civicrm/packages/HTML/QuickForm/Renderer/ArraySmarty.php @@ -261,9 +261,9 @@ class HTML_QuickForm_Renderer_ArraySmarty extends HTML_QuickForm_Renderer_Array unset($elAry['keys']); // where should we put this element... if (is_array($this->_currentGroup) && ('group' != $elAry['type'])) { - $this->_currentGroup = CRM_Utils_Array::recursiveBuild($keys, $elAry, $this->_currentGroup); + CRM_Utils_Array::pathSet($this->_currentGroup, $keys, $elAry); } else { - $this->_ary = CRM_Utils_Array::recursiveBuild($keys, $elAry, $this->_ary); + CRM_Utils_Array::pathSet($this->_ary, $keys, $elAry); } } return; diff --git a/civicrm/packages/HTML/QuickForm/element.php b/civicrm/packages/HTML/QuickForm/element.php index c51032003412a1c14bd241dcc71a44d02da92bc1..dd90e77f1679137ff40e3aa5ba573bba58684acc 100644 --- a/civicrm/packages/HTML/QuickForm/element.php +++ b/civicrm/packages/HTML/QuickForm/element.php @@ -345,7 +345,7 @@ class HTML_QuickForm_element extends HTML_Common return $values[$elementName]; } elseif (strpos($elementName, '[')) { $keys = explode('[', str_replace(']', '', $elementName)); - return CRM_Utils_Array::recursiveValue($values, $keys); + return CRM_Utils_Array::pathGet($values, $keys); } else { return null; } @@ -475,7 +475,9 @@ class HTML_QuickForm_element extends HTML_Common return array($name => $value); } else { $keys = explode('[', str_replace(']', '', $name)); - return CRM_Utils_Array::recursiveBuild($keys, $value); + $preparedValue = []; + CRM_Utils_Array::pathSet($preparedValue, $keys, $value); + return $preparedValue; } } } diff --git a/civicrm/packages/HTML/QuickForm/file.php b/civicrm/packages/HTML/QuickForm/file.php index 220b501c2d5d3acb1118aebd169794de4d870827..7365d6129e859950e14038adacc78500c828c7d7 100644 --- a/civicrm/packages/HTML/QuickForm/file.php +++ b/civicrm/packages/HTML/QuickForm/file.php @@ -335,7 +335,7 @@ class HTML_QuickForm_file extends HTML_QuickForm_input $base = substr($elementName, 0, $pos); $idx = explode('][', str_replace(["['", "']", '["', '"]'], ['[', ']', '[', ']'], substr($elementName, $pos + 1, -1))); $idx = array_merge([$base, 'name'], $idx); - if (!CRM_Utils_Array::recursiveIsset($_FILES, $idx)) { + if (!CRM_Utils_Array::pathIsset($_FILES, $idx)) { return NULL; } else { @@ -343,7 +343,7 @@ class HTML_QuickForm_file extends HTML_QuickForm_input $value = []; foreach ($props as $prop) { $idx[1] = $prop; - $value[$prop] = CRM_Utils_Array::recursiveValue($_FILES, $idx); + $value[$prop] = CRM_Utils_Array::pathGet($_FILES, $idx); } return $value; } diff --git a/civicrm/packages/HTML/QuickForm/hierselect.php b/civicrm/packages/HTML/QuickForm/hierselect.php index 0a1113140afd8bf17653ccb2b5f80864ea7513d1..a3c73808ead340e5d40e68a1987c00d5757a46d3 100644 --- a/civicrm/packages/HTML/QuickForm/hierselect.php +++ b/civicrm/packages/HTML/QuickForm/hierselect.php @@ -230,8 +230,8 @@ class HTML_QuickForm_hierselect extends HTML_QuickForm_group $arrayKeys = []; foreach (array_keys($this->_elements) AS $key) { if (isset($this->_options[$key])) { - if ((empty($arrayKeys)) || CRM_Utils_Array::recursiveIsset($this->_options[$key], $arrayKeys)) { - $array = empty($arrayKeys) ? $this->_options[$key] : CRM_Utils_Array::recursiveValue($this->_options[$key], $arrayKeys); + if ((empty($arrayKeys)) || CRM_Utils_Array::pathIsset($this->_options[$key], $arrayKeys)) { + $array = empty($arrayKeys) ? $this->_options[$key] : CRM_Utils_Array::pathGet($this->_options[$key], $arrayKeys); if (is_array($array)) { $select =& $this->_elements[$key]; $select->_options = array(); @@ -364,6 +364,7 @@ class HTML_QuickForm_hierselect extends HTML_QuickForm_group if ($js != '') { $js .= ",\n"; } + $options = utf8_encode($options); $js .= '"'.$optValue.'":'.json_encode($options); } } diff --git a/civicrm/packages/jquery/plugins/jquery.menu.js b/civicrm/packages/jquery/plugins/jquery.menu.js index 773a6d4e2865d728c22f0d303a80d4f698778080..59c2a70340ba11e22c2b213af4a4e5d1f2c415e5 100755 --- a/civicrm/packages/jquery/plugins/jquery.menu.js +++ b/civicrm/packages/jquery/plugins/jquery.menu.js @@ -22,7 +22,6 @@ menuDIVElement = $('<div class="menu-div outerbox" style="position:absolute;top:0;left:0;display:none;"><div class="shadowbox1"></div><div class="shadowbox2"></div><div class="shadowbox3"></div></div>')[0], menuULElement = $('<ul class="menu-ul innerbox"></ul>')[0], menuItemElement = $('<li style="position:relative;"><div class="menu-item"></div></li>')[0], - arrowElement = $('<img class="menu-item-arrow" />')[0], $rootDiv = $('<div id="root-menu-div" style="position:absolute;top:0;left:0;"></div>'), //create main menu div defaults = { // $.Menu options @@ -37,7 +36,7 @@ // $.MenuItem options onClick: null, - arrowSrc: null, + arrowClass: null, addExpando: false, // $.fn.menuFromElement options @@ -132,7 +131,7 @@ t = t.parentNode; //is the found node one of the visible menu elements? - if ( !$(visibleMenus).filter(function(){ return this.$eDIV[0] == t }).length ) + if ( !$(visibleMenus).filter(function(){ return this.$eDIV[0] == t; }).length ) { $.Menu.closeAll(); } @@ -795,11 +794,9 @@ this.subMenu = menu; if ( this.parentMenu && $.inArray(menu, this.parentMenu.subMenus) == -1 ) this.parentMenu.subMenus.push(menu); - if ( this.settings.arrowSrc ) - { - var a = arrowElement.cloneNode(0); - a.setAttribute('src', this.settings.arrowSrc); - this.$eLI[0].firstChild.appendChild(a); + if ( this.settings.arrowClass ) { + var a = $('<i class="menu-item-arrow"></i>').addClass(this.settings.arrowClass); + this.$eLI[0].firstChild.appendChild(a[0]); } } } diff --git a/civicrm/packages/jquery/plugins/jquery.menu.min.js b/civicrm/packages/jquery/plugins/jquery.menu.min.js index 619e77b0a24dd52ff7672a5a16cd40395bc108f3..a231f541c3b9f49c5ece6faf9ce5ffc74f1bacaf 100644 --- a/civicrm/packages/jquery/plugins/jquery.menu.min.js +++ b/civicrm/packages/jquery/plugins/jquery.menu.min.js @@ -1 +1 @@ -(function(e){var t=[],n=[],r=activeItem=null,i=e('<div class="menu-div outerbox" style="position:absolute;top:0;left:0;display:none;"><div class="shadowbox1"></div><div class="shadowbox2"></div><div class="shadowbox3"></div></div>')[0],s=e('<ul class="menu-ul innerbox"></ul>')[0],o=e('<li style="position:relative;"><div class="menu-item"></div></li>')[0],u=e('<img class="menu-item-arrow" />')[0],a=e('<div id="root-menu-div" style="position:absolute;top:0;left:0;"></div>'),f={showDelay:200,hideDelay:200,hoverOpenDelay:0,offsetTop:0,offsetLeft:0,minWidth:0,onOpen:null,onClose:null,onClick:null,arrowSrc:null,addExpando:false,copyClassAttr:false};e(function(){a.appendTo("body")});e.extend({MenuCollection:function(e){this.menus=[];this.init(e)}});e.extend(e.MenuCollection,{prototype:{init:function(e){if(e&&e.length){for(var t=0;t<e.length;t++){this.addMenu(e[t]);e[t].menuCollection=this}}},addMenu:function(t){if(t instanceof e.Menu)this.menus.push(t);t.menuCollection=this;var n=this;e(t.target).hover(function(){if(t.visible)return;for(var e=0;e<n.menus.length;e++){if(n.menus[e].visible){n.menus[e].hide();t.show();return}}},function(){})}}});e.extend({Menu:function(t,n,r){this.menuItems=[];this.subMenus=[];this.visible=false;this.active=false;this.parentMenuItem=null;this.settings=e.extend({},f,r);this.target=t;this.$eDIV=null;this.$eUL=null;this.timer=null;this.menuCollection=null;this.openTimer=null;this.init();if(n&&n.constructor==Array)this.addItems(n)}});e.extend(e.Menu,{checkMouse:function(t){var r=t.target;if(n.length&&r==n[0].target)return;while(r.parentNode&&r.parentNode!=a[0])r=r.parentNode;if(!e(n).filter(function(){return this.$eDIV[0]==r}).length){e.Menu.closeAll()}},checkKey:function(t){switch(t.keyCode){case 13:if(activeItem)activeItem.click(t,activeItem.$eLI[0]);break;case 27:e.Menu.closeAll();break;case 37:if(!r)r=n[0];var i=r;if(i&&i.parentMenuItem){var s=i.parentMenuItem;s.$eLI.unbind("mouseout").unbind("mouseover");i.hide();s.hoverIn(true);setTimeout(function(){s.bindHover()})}else if(i&&i.menuCollection){var o,u=i.menuCollection.menus;if((o=e.inArray(i,u))>-1){if(--o<0)o=u.length-1;e.Menu.closeAll();u[o].show();u[o].setActive();if(u[o].menuItems.length)u[o].menuItems[0].hoverIn(true)}}break;case 38:if(r)r.selectNextItem(-1);break;case 39:if(!r)r=n[0];var a,i=r,f=activeItem?activeItem.subMenu:null;if(i){if(f&&f.menuItems.length){f.show();f.menuItems[0].hoverIn()}else if(i=i.inMenuCollection()){var o,u=i.menuCollection.menus;if((o=e.inArray(i,u))>-1){if(++o>=u.length)o=0;e.Menu.closeAll();u[o].show();u[o].setActive();if(u[o].menuItems.length)u[o].menuItems[0].hoverIn(true)}}}break;case 40:if(!r){if(n.length&&n[0].menuItems.length)n[0].menuItems[0].hoverIn()}else r.selectNextItem();break}if(t.keyCode>36&&t.keyCode<41)return false},closeAll:function(){while(n.length)n[0].hide()},setDefaults:function(t){e.extend(f,t)},prototype:{init:function(){var n=this;if(!this.target)return;else if(this.target instanceof e.MenuItem){this.parentMenuItem=this.target;this.target.addSubMenu(this);this.target=this.target.$eLI}t.push(this);this.$eDIV=e(i.cloneNode(1));this.$eUL=e(s.cloneNode(1));this.$eDIV[0].appendChild(this.$eUL[0]);a[0].appendChild(this.$eDIV[0]);if(!this.parentMenuItem){e(this.target).click(function(e){n.onClick(e)}).hover(function(e){n.setActive();if(n.settings.hoverOpenDelay){n.openTimer=setTimeout(function(){if(!n.visible)n.onClick(e)},n.settings.hoverOpenDelay)}},function(){if(!n.visible)e(this).removeClass("activetarget");if(n.openTimer)clearTimeout(n.openTimer)})}else{this.$eDIV.hover(function(){n.setActive()},function(){})}},setActive:function(){if(!this.parentMenuItem)e(this.target).addClass("activetarget");else this.active=true},addItem:function(t){if(t instanceof e.MenuItem){if(e.inArray(t,this.menuItems)==-1){this.$eUL.append(t.$eLI);this.menuItems.push(t);t.parentMenu=this;if(t.subMenu)this.subMenus.push(t.subMenu)}}else{this.addItem(new e.MenuItem(t,this.settings))}},addItems:function(e){for(var t=0;t<e.length;t++){this.addItem(e[t])}},removeItem:function(t){var n=e.inArray(t,this.menuItems);if(n>-1)this.menuItems.splice(n,1);t.parentMenu=null},hide:function(){if(!this.visible)return;var t,i=e.inArray(this,n);this.$eDIV.hide();if(i>=0)n.splice(i,1);this.visible=this.active=false;e(this.target).removeClass("activetarget");for(t=0;t<this.subMenus.length;t++){this.subMenus[t].hide()}for(t=0;t<this.menuItems.length;t++){if(this.menuItems[t].active)this.menuItems[t].setInactive()}if(!n.length)e(document).unbind("mousedown",e.Menu.checkMouse).unbind("keydown",e.Menu.checkKey);if(r==this)r=null;if(this.settings.onClose)this.settings.onClose.call(this)},show:function(t){if(this.visible)return;var r,i=this.parentMenuItem;if(this.menuItems.length){if(i){r=parseInt(i.parentMenu.$eDIV.css("z-index"));this.$eDIV.css("z-index",isNaN(r)?1:r+1)}this.$eDIV.css({visibility:"hidden",display:"block"});if(this.settings.minWidth){if(this.$eDIV.width()<this.settings.minWidth)this.$eDIV.css("width",this.settings.minWidth)}this.setPosition();this.$eDIV.css({display:"none",visibility:""}).show();if(this.settings.onOpen)this.settings.onOpen.call(this)}if(n.length==0)e(document).bind("mousedown",e.Menu.checkMouse).bind("keydown",e.Menu.checkKey);this.visible=true;n.push(this)},setPosition:function(){var t,n,r,i,s,o,u,a=e(window).width(),f=e(window).height(),l=this.parentMenuItem,c=this.$eDIV[0].clientHeight,h=this.$eDIV[0].clientWidth,p;if(l){n=l.$eLI.offset();r=n.left+l.$eLI.width();i=n.top}else{t=e(this.target);n=t.offset();r=n.left+this.settings.offsetLeft;i=n.top+t.height()+this.settings.offsetTop}if(e.fn.scrollTop){o=e(window).scrollTop();if(f<c){i=o}else if(f+o<i+c){if(l){s=l.parentMenu.$eDIV.offset();p=l.parentMenu.$eDIV[0].clientHeight;if(c<=p){i=s.top+p-c}else{i=s.top}if(f+o<i+c){i-=i+c-(f+o)}}else{i-=i+c-(f+o)}}}if(e.fn.scrollLeft){u=e(window).scrollLeft();if(a+u<r+h){if(l){r-=l.$eLI.width()+h;if(r<u)r=u}else{r-=r+h-(a+u)}}}this.$eDIV.css({left:r,top:i})},onClick:function(t){if(this.visible){this.hide();this.setActive()}else{e.Menu.closeAll();this.show(t)}},addTimer:function(e,t){var n=this;this.timer=setTimeout(function(){e.call(n);n.timer=null},t)},removeTimer:function(){if(this.timer){clearTimeout(this.timer);this.timer=null}},selectNextItem:function(e){var t,n=0,r=this.menuItems.length,i=e||1;for(t=0;t<r;t++){if(this.menuItems[t].active){n=t;break}}this.menuItems[n].hoverOut();do{n+=i;if(n>=r)n=0;else if(n<0)n=r-1}while(this.menuItems[n].separator);this.menuItems[n].hoverIn(true)},inMenuCollection:function(){var e=this;while(e.parentMenuItem)e=e.parentMenuItem.parentMenu;return e.menuCollection?e:null},destroy:function(){var n,r;this.hide();if(!this.parentMenuItem)e(this.target).unbind("click").unbind("mouseover").unbind("mouseout");else this.$eDIV.unbind("mouseover").unbind("mouseout");while(this.menuItems.length){r=this.menuItems[0];r.destroy();delete r}if((n=e.inArray(this,t))>-1)t.splice(n,1);if(this.menuCollection){if((n=e.inArray(this,this.menuCollection.menus))>-1)this.menuCollection.menus.splice(n,1)}this.$eDIV.remove()}}});e.extend({MenuItem:function(t,n){if(typeof t=="string")t={src:t};this.src=t.src||"";this.url=t.url||null;this.urlTarget=t.target||null;this.addClass=t.addClass||null;this.data=t.data||null;this.$eLI=null;this.parentMenu=null;this.subMenu=null;this.settings=e.extend({},f,n);this.active=false;this.enabled=true;this.separator=false;this.init();if(t.subMenu)new e.Menu(this,t.subMenu,n)}});e.extend(e.MenuItem,{prototype:{init:function(){var t,n,r=this.src,i=this;this.$eLI=e(o.cloneNode(1));if(this.addClass)this.$eLI[0].setAttribute("class",this.addClass);if(this.settings.addExpando&&this.data)this.$eLI[0].menuData=this.data;if(r==""){this.$eLI.addClass("menu-separator");this.separator=true}else{n=typeof r=="string";if(n&&this.url)r=e('<a href="'+this.url+'"'+(this.urlTarget?'target="'+this.urlTarget+'"':"")+">"+r+"</a>");else if(n||!r.length)r=[r];for(t=0;t<r.length;t++){if(typeof r[t]=="string"){elem=document.createElement("span");elem.innerHTML=r[t];this.$eLI[0].firstChild.appendChild(elem)}else this.$eLI[0].firstChild.appendChild(r[t].cloneNode(1))}}this.$eLI.click(function(e){i.click(e,this)});this.bindHover()},click:function(e,t){if(this.enabled&&this.settings.onClick)this.settings.onClick.call(t,e,this)},bindHover:function(){var e=this;this.$eLI.hover(function(){e.hoverIn()},function(){e.hoverOut()})},hoverIn:function(e){this.removeTimer();var t,n=this.parentMenu.subMenus,i=this.parentMenu.menuItems,s=this;if(this.parentMenu.timer)this.parentMenu.removeTimer();if(!this.enabled)return;for(t=0;t<i.length;t++){if(i[t].active)i[t].setInactive()}this.setActive();r=this.parentMenu;for(t=0;t<n.length;t++){if(n[t].visible&&n[t]!=this.subMenu&&!n[t].timer)n[t].addTimer(function(){this.hide()},n[t].settings.hideDelay)}if(this.subMenu&&!e){this.subMenu.addTimer(function(){this.show()},this.subMenu.settings.showDelay)}},hoverOut:function(){this.removeTimer();if(!this.enabled)return;if(!this.subMenu||!this.subMenu.visible)this.setInactive()},removeTimer:function(){if(this.subMenu){this.subMenu.removeTimer()}},setActive:function(){this.active=true;this.$eLI.addClass("active");var e=this.parentMenu.parentMenuItem;if(e&&!e.active)e.setActive();activeItem=this},setInactive:function(){this.active=false;this.$eLI.removeClass("active");if(this==activeItem)activeItem=null},enable:function(){this.$eLI.removeClass("disabled");this.enabled=true},disable:function(){this.$eLI.addClass("disabled");this.enabled=false},destroy:function(){this.removeTimer();this.$eLI.remove();this.$eLI.unbind("mouseover").unbind("mouseout").unbind("click");if(this.subMenu){this.subMenu.destroy();delete this.subMenu}this.parentMenu.removeItem(this)},addSubMenu:function(t){if(this.subMenu)return;this.subMenu=t;if(this.parentMenu&&e.inArray(t,this.parentMenu.subMenus)==-1)this.parentMenu.subMenus.push(t);if(this.settings.arrowSrc){var n=u.cloneNode(0);n.setAttribute("src",this.settings.arrowSrc);this.$eLI[0].firstChild.appendChild(n)}}}});e.extend(e.fn,{menuFromElement:function(t,n,r){var i=function(n){var r=[],s,o,u,a,f,h,p,d,v=null;u=c(n,"LI");for(f=0;f<u.length;f++){s=[];if(!u[f].childNodes.length){r.push(new e.MenuItem("",t));continue}if(h=l(u[f],"UL")){s=i(h);e(h).remove()}a=e(u[f]);if(a[0].childNodes.length==1&&a[0].childNodes[0].nodeType==3)d=a[0].childNodes[0].nodeValue;else d=a[0].childNodes;if(t&&t.copyClassAttr)v=a.attr("class");o=new e.MenuItem({src:d,addClass:v},t);r.push(o);if(s.length)new e.Menu(o,s,t)}return r};return this.each(function(){var s,o;if(n||(s=l(this,"UL"))){s=n?e(n).clone(true)[0]:s;menuItems=i(s);if(menuItems.length){o=new e.Menu(this,menuItems,t);if(r)r.addMenu(o)}e(s).hide()}})},menuBarFromUL:function(t){return this.each(function(){var n,r=c(this,"LI");if(r.length){bar=new e.MenuCollection;for(n=0;n<r.length;n++)e(r[n]).menuFromElement(t,null,bar)}})},menuBar:function(t,n){return this.each(function(){if(n&&n.constructor==Array)new e.Menu(this,n,t);else{if(this.nodeName.toUpperCase()=="UL")e(this).menuBarFromUL(t);else e(this).menuFromElement(t,n)}})}});var l=function(e,t){if(!e)return null;var n=e.firstChild;for(;n;n=n.nextSibling){if(n.nodeType==1&&n.nodeName.toUpperCase()==t)return n}return null};var c=function(e,t){if(!e)return[];var n=[],r=e.firstChild;for(;r;r=r.nextSibling){if(r.nodeType==1&&r.nodeName.toUpperCase()==t)n[n.length]=r}return n}})(jQuery) +!function(e){var t=[],i=[],n=activeItem=null,s=e('<div class="menu-div outerbox" style="position:absolute;top:0;left:0;display:none;"><div class="shadowbox1"></div><div class="shadowbox2"></div><div class="shadowbox3"></div></div>')[0],h=e('<ul class="menu-ul innerbox"></ul>')[0],u=e('<li style="position:relative;"><div class="menu-item"></div></li>')[0],o=e('<div id="root-menu-div" style="position:absolute;top:0;left:0;"></div>'),l={showDelay:200,hideDelay:200,hoverOpenDelay:0,offsetTop:0,offsetLeft:0,minWidth:0,onOpen:null,onClose:null,onClick:null,arrowClass:null,addExpando:!1,copyClassAttr:!1};e(function(){o.appendTo("body")}),e.extend({MenuCollection:function(e){this.menus=[],this.init(e)}}),e.extend(e.MenuCollection,{prototype:{init:function(e){if(e&&e.length)for(var t=0;t<e.length;t++)this.addMenu(e[t]),e[t].menuCollection=this},addMenu:function(t){t instanceof e.Menu&&this.menus.push(t),t.menuCollection=this;var i=this;e(t.target).hover(function(){if(!t.visible)for(var e=0;e<i.menus.length;e++)if(i.menus[e].visible)return i.menus[e].hide(),void t.show()},function(){})}}}),e.extend({Menu:function(t,i,n){this.menuItems=[],this.subMenus=[],this.visible=!1,this.active=!1,this.parentMenuItem=null,this.settings=e.extend({},l,n),this.target=t,this.$eDIV=null,this.$eUL=null,this.timer=null,this.menuCollection=null,this.openTimer=null,this.init(),i&&i.constructor==Array&&this.addItems(i)}}),e.extend(e.Menu,{checkMouse:function(t){var n=t.target;if(!i.length||n!=i[0].target){for(;n.parentNode&&n.parentNode!=o[0];)n=n.parentNode;e(i).filter(function(){return this.$eDIV[0]==n}).length||e.Menu.closeAll()}},checkKey:function(t){switch(t.keyCode){case 13:activeItem&&activeItem.click(t,activeItem.$eLI[0]);break;case 27:e.Menu.closeAll();break;case 37:if(n||(n=i[0]),(u=n)&&u.parentMenuItem){var s=u.parentMenuItem;s.$eLI.unbind("mouseout").unbind("mouseover"),u.hide(),s.hoverIn(!0),setTimeout(function(){s.bindHover()})}else if(u&&u.menuCollection){var h=u.menuCollection.menus;(l=e.inArray(u,h))>-1&&(--l<0&&(l=h.length-1),e.Menu.closeAll(),h[l].show(),h[l].setActive(),h[l].menuItems.length&&h[l].menuItems[0].hoverIn(!0))}break;case 38:n&&n.selectNextItem(-1);break;case 39:n||(n=i[0]);var u=n,o=activeItem?activeItem.subMenu:null;if(u)if(o&&o.menuItems.length)o.show(),o.menuItems[0].hoverIn();else if(u=u.inMenuCollection()){var l;h=u.menuCollection.menus;(l=e.inArray(u,h))>-1&&(++l>=h.length&&(l=0),e.Menu.closeAll(),h[l].show(),h[l].setActive(),h[l].menuItems.length&&h[l].menuItems[0].hoverIn(!0))}break;case 40:n?n.selectNextItem():i.length&&i[0].menuItems.length&&i[0].menuItems[0].hoverIn()}if(t.keyCode>36&&t.keyCode<41)return!1},closeAll:function(){for(;i.length;)i[0].hide()},setDefaults:function(t){e.extend(l,t)},prototype:{init:function(){var i=this;this.target&&(this.target instanceof e.MenuItem&&(this.parentMenuItem=this.target,this.target.addSubMenu(this),this.target=this.target.$eLI),t.push(this),this.$eDIV=e(s.cloneNode(1)),this.$eUL=e(h.cloneNode(1)),this.$eDIV[0].appendChild(this.$eUL[0]),o[0].appendChild(this.$eDIV[0]),this.parentMenuItem?this.$eDIV.hover(function(){i.setActive()},function(){}):e(this.target).click(function(e){i.onClick(e)}).hover(function(e){i.setActive(),i.settings.hoverOpenDelay&&(i.openTimer=setTimeout(function(){i.visible||i.onClick(e)},i.settings.hoverOpenDelay))},function(){i.visible||e(this).removeClass("activetarget"),i.openTimer&&clearTimeout(i.openTimer)}))},setActive:function(){this.parentMenuItem?this.active=!0:e(this.target).addClass("activetarget")},addItem:function(t){t instanceof e.MenuItem?-1==e.inArray(t,this.menuItems)&&(this.$eUL.append(t.$eLI),this.menuItems.push(t),t.parentMenu=this,t.subMenu&&this.subMenus.push(t.subMenu)):this.addItem(new e.MenuItem(t,this.settings))},addItems:function(e){for(var t=0;t<e.length;t++)this.addItem(e[t])},removeItem:function(t){var i=e.inArray(t,this.menuItems);i>-1&&this.menuItems.splice(i,1),t.parentMenu=null},hide:function(){if(this.visible){var t,s=e.inArray(this,i);for(this.$eDIV.hide(),s>=0&&i.splice(s,1),this.visible=this.active=!1,e(this.target).removeClass("activetarget"),t=0;t<this.subMenus.length;t++)this.subMenus[t].hide();for(t=0;t<this.menuItems.length;t++)this.menuItems[t].active&&this.menuItems[t].setInactive();i.length||e(document).unbind("mousedown",e.Menu.checkMouse).unbind("keydown",e.Menu.checkKey),n==this&&(n=null),this.settings.onClose&&this.settings.onClose.call(this)}},show:function(t){if(!this.visible){var n,s=this.parentMenuItem;this.menuItems.length&&(s&&(n=parseInt(s.parentMenu.$eDIV.css("z-index")),this.$eDIV.css("z-index",isNaN(n)?1:n+1)),this.$eDIV.css({visibility:"hidden",display:"block"}),this.settings.minWidth&&this.$eDIV.width()<this.settings.minWidth&&this.$eDIV.css("width",this.settings.minWidth),this.setPosition(),this.$eDIV.css({display:"none",visibility:""}).show(),this.settings.onOpen&&this.settings.onOpen.call(this)),0==i.length&&e(document).bind("mousedown",e.Menu.checkMouse).bind("keydown",e.Menu.checkKey),this.visible=!0,i.push(this)}},setPosition:function(){var t,i,n,s,h,u,o,l,r=e(window).width(),a=e(window).height(),c=this.parentMenuItem,d=this.$eDIV[0].clientHeight,m=this.$eDIV[0].clientWidth;c?(n=(i=c.$eLI.offset()).left+c.$eLI.width(),s=i.top):(n=(i=(t=e(this.target)).offset()).left+this.settings.offsetLeft,s=i.top+t.height()+this.settings.offsetTop),e.fn.scrollTop&&(u=e(window).scrollTop(),a<d?s=u:a+u<s+d&&(c?(h=c.parentMenu.$eDIV.offset(),a+u<(s=d<=(l=c.parentMenu.$eDIV[0].clientHeight)?h.top+l-d:h.top)+d&&(s-=s+d-(a+u))):s-=s+d-(a+u))),e.fn.scrollLeft&&r+(o=e(window).scrollLeft())<n+m&&(c?(n-=c.$eLI.width()+m)<o&&(n=o):n-=n+m-(r+o)),this.$eDIV.css({left:n,top:s})},onClick:function(t){this.visible?(this.hide(),this.setActive()):(e.Menu.closeAll(),this.show(t))},addTimer:function(e,t){var i=this;this.timer=setTimeout(function(){e.call(i),i.timer=null},t)},removeTimer:function(){this.timer&&(clearTimeout(this.timer),this.timer=null)},selectNextItem:function(e){var t,i=0,n=this.menuItems.length,s=e||1;for(t=0;t<n;t++)if(this.menuItems[t].active){i=t;break}this.menuItems[i].hoverOut();do{(i+=s)>=n?i=0:i<0&&(i=n-1)}while(this.menuItems[i].separator);this.menuItems[i].hoverIn(!0)},inMenuCollection:function(){for(var e=this;e.parentMenuItem;)e=e.parentMenuItem.parentMenu;return e.menuCollection?e:null},destroy:function(){var i;for(this.hide(),this.parentMenuItem?this.$eDIV.unbind("mouseover").unbind("mouseout"):e(this.target).unbind("click").unbind("mouseover").unbind("mouseout");this.menuItems.length;)this.menuItems[0].destroy(),0;(i=e.inArray(this,t))>-1&&t.splice(i,1),this.menuCollection&&(i=e.inArray(this,this.menuCollection.menus))>-1&&this.menuCollection.menus.splice(i,1),this.$eDIV.remove()}}}),e.extend({MenuItem:function(t,i){"string"==typeof t&&(t={src:t}),this.src=t.src||"",this.url=t.url||null,this.urlTarget=t.target||null,this.addClass=t.addClass||null,this.data=t.data||null,this.$eLI=null,this.parentMenu=null,this.subMenu=null,this.settings=e.extend({},l,i),this.active=!1,this.enabled=!0,this.separator=!1,this.init(),t.subMenu&&new e.Menu(this,t.subMenu,i)}}),e.extend(e.MenuItem,{prototype:{init:function(){var t,i,n=this.src,s=this;if(this.$eLI=e(u.cloneNode(1)),this.addClass&&this.$eLI[0].setAttribute("class",this.addClass),this.settings.addExpando&&this.data&&(this.$eLI[0].menuData=this.data),""==n)this.$eLI.addClass("menu-separator"),this.separator=!0;else for((i="string"==typeof n)&&this.url?n=e('<a href="'+this.url+'"'+(this.urlTarget?'target="'+this.urlTarget+'"':"")+">"+n+"</a>"):!i&&n.length||(n=[n]),t=0;t<n.length;t++)"string"==typeof n[t]?(elem=document.createElement("span"),elem.innerHTML=n[t],this.$eLI[0].firstChild.appendChild(elem)):this.$eLI[0].firstChild.appendChild(n[t].cloneNode(1));this.$eLI.click(function(e){s.click(e,this)}),this.bindHover()},click:function(e,t){this.enabled&&this.settings.onClick&&this.settings.onClick.call(t,e,this)},bindHover:function(){var e=this;this.$eLI.hover(function(){e.hoverIn()},function(){e.hoverOut()})},hoverIn:function(e){this.removeTimer();var t,i=this.parentMenu.subMenus,s=this.parentMenu.menuItems;if(this.parentMenu.timer&&this.parentMenu.removeTimer(),this.enabled){for(t=0;t<s.length;t++)s[t].active&&s[t].setInactive();for(this.setActive(),n=this.parentMenu,t=0;t<i.length;t++)i[t].visible&&i[t]!=this.subMenu&&!i[t].timer&&i[t].addTimer(function(){this.hide()},i[t].settings.hideDelay);this.subMenu&&!e&&this.subMenu.addTimer(function(){this.show()},this.subMenu.settings.showDelay)}},hoverOut:function(){this.removeTimer(),this.enabled&&(this.subMenu&&this.subMenu.visible||this.setInactive())},removeTimer:function(){this.subMenu&&this.subMenu.removeTimer()},setActive:function(){this.active=!0,this.$eLI.addClass("active");var e=this.parentMenu.parentMenuItem;e&&!e.active&&e.setActive(),activeItem=this},setInactive:function(){this.active=!1,this.$eLI.removeClass("active"),this==activeItem&&(activeItem=null)},enable:function(){this.$eLI.removeClass("disabled"),this.enabled=!0},disable:function(){this.$eLI.addClass("disabled"),this.enabled=!1},destroy:function(){this.removeTimer(),this.$eLI.remove(),this.$eLI.unbind("mouseover").unbind("mouseout").unbind("click"),this.subMenu&&(this.subMenu.destroy(),delete this.subMenu),this.parentMenu.removeItem(this)},addSubMenu:function(t){if(!this.subMenu&&(this.subMenu=t,this.parentMenu&&-1==e.inArray(t,this.parentMenu.subMenus)&&this.parentMenu.subMenus.push(t),this.settings.arrowClass)){var i=e('<i class="menu-item-arrow"></i>').addClass(this.settings.arrowClass);this.$eLI[0].firstChild.appendChild(i[0])}}}}),e.extend(e.fn,{menuFromElement:function(t,i,n){var s=function(i){var n,h,u,o,l,c,d,m=[],f=null;for(u=a(i,"LI"),l=0;l<u.length;l++)n=[],u[l].childNodes.length?((c=r(u[l],"UL"))&&(n=s(c),e(c).remove()),d=1==(o=e(u[l]))[0].childNodes.length&&3==o[0].childNodes[0].nodeType?o[0].childNodes[0].nodeValue:o[0].childNodes,t&&t.copyClassAttr&&(f=o.attr("class")),h=new e.MenuItem({src:d,addClass:f},t),m.push(h),n.length&&new e.Menu(h,n,t)):m.push(new e.MenuItem("",t));return m};return this.each(function(){var h,u;(i||(h=r(this,"UL")))&&(h=i?e(i).clone(!0)[0]:h,menuItems=s(h),menuItems.length&&(u=new e.Menu(this,menuItems,t),n&&n.addMenu(u)),e(h).hide())})},menuBarFromUL:function(t){return this.each(function(){var i,n=a(this,"LI");if(n.length)for(bar=new e.MenuCollection,i=0;i<n.length;i++)e(n[i]).menuFromElement(t,null,bar)})},menuBar:function(t,i){return this.each(function(){i&&i.constructor==Array?new e.Menu(this,i,t):"UL"==this.nodeName.toUpperCase()?e(this).menuBarFromUL(t):e(this).menuFromElement(t,i)})}});var r=function(e,t){if(!e)return null;for(var i=e.firstChild;i;i=i.nextSibling)if(1==i.nodeType&&i.nodeName.toUpperCase()==t)return i;return null},a=function(e,t){if(!e)return[];for(var i=[],n=e.firstChild;n;n=n.nextSibling)1==n.nodeType&&n.nodeName.toUpperCase()==t&&(i[i.length]=n);return i}}(jQuery); \ No newline at end of file diff --git a/civicrm/packages/kcfinder/integration/civicrm.php b/civicrm/packages/kcfinder/integration/civicrm.php index 9ba3ab4d5b521008db06ebefac02f45bd793dc71..b1887bd5d81576be15a9abb9ec675c10e521979f 100644 --- a/civicrm/packages/kcfinder/integration/civicrm.php +++ b/civicrm/packages/kcfinder/integration/civicrm.php @@ -57,6 +57,9 @@ function checkAuthentication() { case 'Drupal6': $auth_function = 'authenticate_drupal'; break; + case 'Backdrop': + $auth_function = 'authenticate_backdrop'; + break; case 'Joomla': $auth_function = 'authenticate_joomla'; break; @@ -108,6 +111,39 @@ function authenticate_drupal($config) { return false; } +/** + * If the user is already logged into Backdrop, bootstrap + * Backdrop with this user's permissions. + */ +function authenticate_backdrop($config) { + global $base_url; + $base_root = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http'; + $base_url = $base_root .= '://'. preg_replace('/[^a-z0-9-:._]/i', '', $_SERVER['HTTP_HOST']); + + if ($dir = trim(dirname($_SERVER['SCRIPT_NAME']), '\,/')) { + $base_path = "/$dir"; + $base_url .= $base_path; + } + + // Correct base_url so it points to Backdrop root. + $pos = strpos($base_url, '/sites/'); + if ($pos === FALSE) { + $pos = strpos($base_url, '/profiles/'); + } + if ($pos === FALSE) { + $pos = strpos($base_url, '/modules/'); + } + $base_url = substr($base_url, 0, $pos); // Backdrop root absolute url + + CRM_Utils_System::loadBootStrap(CRM_Core_DAO::$_nullArray, true, false); + + // Check if user has access permission. + if (CRM_Core_Permission::check('access CiviCRM')) { + return true; + } + return false; +} + function authenticate_wordpress($config) { // make sure user has access to civicrm CRM_Utils_System::loadBootStrap(); diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md index f32d8821676e367f109cb0b28b29818ecf96cba3..e09dfee0fadec98f2c69d24a7fac56689d1849da 100644 --- a/civicrm/release-notes.md +++ b/civicrm/release-notes.md @@ -14,6 +14,26 @@ Other resources for identifying changes are: * https://github.com/civicrm/civicrm-joomla * https://github.com/civicrm/civicrm-wordpress +## CiviCRM 5.5.0 + +Released September 5, 2018 + +- **[Synopsis](release-notes/5.5.0.md#synopsis)** +- **[Features](release-notes/5.5.0.md#features)** +- **[Bugs resolved](release-notes/5.5.0.md#bugs)** +- **[Miscellany](release-notes/5.5.0.md#misc)** +- **[Credits](release-notes/5.5.0.md#credits)** +- **[Feedback](release-notes/5.5.0.md#feedback)** + +## CiviCRM 5.4.1 + +Released August 25, 2018 + +- **[Synopsis](release-notes/5.4.1.md#synopsis)** +- **[Bugs resolved](release-notes/5.4.1.md#bugs)** +- **[Credits](release-notes/5.4.1.md#credits)** +- **[Feedback](release-notes/5.4.1.md#feedback)** + ## CiviCRM 5.4.0 Released August 1, 2018 diff --git a/civicrm/release-notes/5.4.1.md b/civicrm/release-notes/5.4.1.md new file mode 100644 index 0000000000000000000000000000000000000000..3dac5b7a391d2e560e01365523d41b6eaf9315b2 --- /dev/null +++ b/civicrm/release-notes/5.4.1.md @@ -0,0 +1,49 @@ +# CiviCRM 5.4.1 + +Released 25 Aug 2018 + +- **[Synopsis](#synopsis)** +- **[Bugs resolved](#bugs)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +|:--------------------------------------------------------------- |:-------:| +| Fix security vulnerabilities? | no | +| Change the database schema? | no | +| Alter the API? | no | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | **yes** | +| Introduce features? | no | +| **Fix bugs?** | **yes** | + +## <a name="bugs"></a>Bugs resolved + +- **(dev/core#316) Fix crash on Memcache systems when session key involves + whitespace ([12653](https://github.com/civicrm/civicrm-core/pull/12653))** + +- **(dev/core#304) Fix crash in upgrading option-group data on some Drupal/Views + configurations ([12649](https://github.com/civicrm/civicrm-core/pull/12649))** + +- **(dev/core#273) Fix SMS failure and handling of `do_not_sms` + ([12654](https://github.com/civicrm/civicrm-core/pull/12654))** + +- **Fix quirks in upgrader UI + ([12675](https://github.com/civicrm/civicrm-core/pull/12675))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Australian Greens - Seamus Lee; Chris Burgess; Christian Wach; Circle +Interactive - Dave Jenkins; CiviCRM - Coleman Watts, Tim Otten; CompuCorp - René +Olivo; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie +McClelland; Wikimedia Foundation - Eileen McNaughton + +## <a name="feedback"></a>Feedback + +These release notes are edited by Tim Otten and Andrew 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.5.0.md b/civicrm/release-notes/5.5.0.md new file mode 100644 index 0000000000000000000000000000000000000000..eb9b91af7fcbebdcb1fb2702a0ba69d545525ecb --- /dev/null +++ b/civicrm/release-notes/5.5.0.md @@ -0,0 +1,814 @@ +# CiviCRM 5.5.0 + +Released September 11, 2018 + +- **[Synopsis](#synopsis)** +- **[Features](#features)** +- **[Bugs resolved](#bugs)** +- **[Miscellany](#misc)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +|:--------------------------------------------------------------- |:-------:| +| Fix security vulnerabilities? | no | +| Change the database schema? | no | +| **Alter the API?** | **yes** | +| Require attention to configuration options? | no | +| **Fix problems installing or upgrading to a previous version?** | **yes** | +| **Introduce features?** | **yes** | +| **Fix bugs?** | **yes** | + +#### Api4 Extension now included +The [Api v4 extension](https://github.com/civicrm/org.civicrm.api4) is now included in the CiviCRM download. +It provides the latest version of CiviCRM's api for integration with extensions and other software; is is still under active development but considered complete enough to use. +Because it is not yet used by CiviCRM core, it is disabled by default. +If you install an extension which requires this api, it will be enabled automatically. + +## <a name="features"></a>Features + +### Core CiviCRM + +- **Further fix for updating custom fields linked to optiongroups. + ([12729](https://github.com/civicrm/civicrm-core/pull/12729))** + + When a user editing a custom field that uses an option group, you may now + switch to any non-reserved option groups. + +- **Further Fix for updating custom field when not linked to an option group. + ([12789](https://github.com/civicrm/civicrm-core/pull/12789))** + + Further following fix from 12729 to ensure that the Edit Custom Field form works when + not linked to an option group. + +- **Upgrader - When updating message templates, identify them by name + ([12674](https://github.com/civicrm/civicrm-core/pull/12674))** + + On the Upgrade screen, when a change has been made to a message template, this + change makes it so that the name of the message template is included in the + message displayed. + +- **Refine upgrade message for `save Report Criteria` + ([12670](https://github.com/civicrm/civicrm-core/pull/12670))** + + This change alters the update message for "save Report Criteria" to be more + readable and concise. + +- **[dev/core#217](https://lab.civicrm.org/dev/core/issues/217) Allow + replacement of PrevNextCache implementation (for search screens) + ([12558](https://github.com/civicrm/civicrm-core/pull/12558), + [12556](https://github.com/civicrm/civicrm-core/pull/12556), + [12543](https://github.com/civicrm/civicrm-core/pull/12543), + [12544](https://github.com/civicrm/civicrm-core/pull/12544), + [12545](https://github.com/civicrm/civicrm-core/pull/12545), + [12528](https://github.com/civicrm/civicrm-core/pull/12528), + [12438](https://github.com/civicrm/civicrm-core/pull/12438)) (preliminary + work)** + + Preliminary work to allow contact searches to retain their results via + Redis/Memcache (instead of MySQL). + +- **Export - add tests out header output, move phone_type_id to metadata + ([12587](https://github.com/civicrm/civicrm-core/pull/12587))** + + This change makes it so one can export phone_type_id. + +- **api - CustomValue::get - add handling for comma separated return fields + ([12604](https://github.com/civicrm/civicrm-core/pull/12604))** + + This change makes it so twhen using the CustomValue get api accepts comma + separated return fields. + +- **[dev/core#291](https://lab.civicrm.org/dev/core/issues/291) Allow password + field sizes to be set in props a la text fields + ([12589](https://github.com/civicrm/civicrm-core/pull/12589))** + + This change makes it so password fields can be any size. Prior to this change + password fields were all the same size. + +- **Entity form : Establish methodology to allow default values to be passed in + on the url ([12185](https://github.com/civicrm/civicrm-core/pull/12185))** + + This change makes it so that some values can be passed thru the url for more + information see: [dev/core#115](https://lab.civicrm.org/dev/core/issues/115). + +- **[dev/core#244](https://lab.civicrm.org/dev/core/issues/244) Allow use of + custom fields of type select without specifying an optiongroup + ([12440](https://github.com/civicrm/civicrm-core/pull/12440))** + + This change makes it so one can dynamically populate a custom field of type + select using hooks without using an optiongroup. + +- **Reduce config required to use Redis. + ([12546](https://github.com/civicrm/civicrm-core/pull/12546))** + + This change makes it so if using Redis, Sysadmins only have to specify the port + if not using the standard port 6379. + +- **Update navigation menu items to use FontAwesome + ([12541](https://github.com/civicrm/civicrm-core/pull/12541) and + [223](https://github.com/civicrm/civicrm-packages/pull/223))** + + Updates the menu "caret" (triangles) to use FontAwesome instead of + an image file. This is a performance improvement. + +- **Link to option group page from option group menu item + ([12540](https://github.com/civicrm/civicrm-core/pull/12540))** + + This change adds a link to the option group page from the option group menu + item to make it easier to access the "Option Groups" page. + +- **[dev/core#259](https://lab.civicrm.org/dev/core/issues/259) OptionGroup + Admin UI workflow improvements + ([12473](https://github.com/civicrm/civicrm-core/pull/12473))** + + This change improves the Option Group Administration workflow by adding + options to edit group settings, displaying a Reserved column on the option + group settings, not allowing users to change the data type on reserved option + groups, when a user edits an option group redirecting them to the option + groups list instead of the default admin page. + +- **Icons in colored boxes for relationship permissions + ([12526](https://github.com/civicrm/civicrm-core/pull/12526))** + + This change makes it so that on the Relationship tab for a contact permissioned + relationships are denoted by icons in squares. Specifically, view permissions + appear as a green box with an eye icon and edit permissions as a blue box with + a pencil icon. Before this change relationship permissions were denoted with + an asterisk and view permissions with an eye icon. + +- **[dev/accessibility#3](https://lab.civicrm.org/dev/accessibility/issues/3) + Add aria-label (and label?) to form elements missing them + ([12207](https://github.com/civicrm/civicrm-core/pull/12207) and + [12373](https://github.com/civicrm/civicrm-core/pull/12373)) (preliminary work)** + + Advances work to to use accessible labels on all pages/forms specifically on + the Contribution form and the Contact Edit Form. + +- **[dev/core#233](https://lab.civicrm.org/dev/core/issues/233) Expose + information about where a contact has been merged to + ([12489](https://github.com/civicrm/civicrm-core/pull/12489))** + + This change makes it so that if a contact has been merged and is still in the + trash next to the contacts name is text explaining which ontact the contact + has been merged to. Additionally this change makes it so one can access + information on where a contact was merged from/to via the api. + +- **[dev/core#34](https://lab.civicrm.org/dev/core/issues/34) Split edit/view + access on permissioned relationships + ([12487](https://github.com/civicrm/civicrm-core/pull/12487) and + [12415](https://github.com/civicrm/civicrm-core/pull/12415))** + + This change makes it so that permissioned relationships can be view only, + before this change permissioned relationships were view AND edit. Now one can + permission a relationship as view only or view and edit. This change also adds + a title to the icon tags that specify if a user has view or edit + permissions. + +- **BAO_Navigation: Respect domain_id param + ([12476](https://github.com/civicrm/civicrm-core/pull/12476))** + + This change makes it so that when creating or updating a navigation menu item + one can set the domain_id. + +- **[dev/core#93](https://lab.civicrm.org/dev/core/issues/93) Update + CRM_Utils_Rule::mysqlOrderBy() to accommodate more than 2 joins + ([12456](https://github.com/civicrm/civicrm-core/pull/12456))** + + This change makes it so that API users can do more than two joins. + +- **[dev/core#176](https://lab.civicrm.org/dev/core/issues/176) Odd / Even + street number sort column missing from Reports + ([12422](https://github.com/civicrm/civicrm-core/pull/12422))** + + This change adds a Odd/Even street number sort column to reports. + +### CiviContribute + +- **[dev/core#219](https://lab.civicrm.org/dev/core/issues/219) + Improve consistency displaying "Test Transactions" + ([12385](https://github.com/civicrm/civicrm-core/pull/12385))** + + This change makes it so that when you are viewing a test membership help text + appears at the top stating that the membership is a test. + +- **Expose UI support for custom fields on financial types + ([12501](https://github.com/civicrm/civicrm-core/pull/12501))** + + This change makes a user interface for custom fields on financial types. + +- **[dev/financial#28](https://lab.civicrm.org/dev/financial/issues/28) + Financial Account cannot be change to non deductible + ([12500](https://github.com/civicrm/civicrm-core/pull/12500))** + + This change makes it so that a Financial Account can be changed from + deductible to non-deductible. + +- **[dev/core#241](https://lab.civicrm.org/dev/core/issues/241) Fix Manage + Premiums UI ([12436](https://github.com/civicrm/civicrm-core/pull/12436))** + + This change makes it so that on the Manage Premiums Form Financial Type is + displayed properly, Money is formatted properly and the Cost field is + displayed. + +### CiviMail + +- **[CRM-21768](https://issues.civicrm.org/jira/browse/CRM-21768) NOFOLLOW + Trackable links in public online view of mailings + ([12561](https://github.com/civicrm/civicrm-core/pull/12561))** + + This change adds the nofollow tag to the trackable URLs in the public view of + mailings to prevent the links from being indexed by google. + +- **[CRM-21574](https://issues.civicrm.org/jira/browse/CRM-21574) Allow to + disable sending of email from source contact for tell a friend on pcp + ([12475](https://github.com/civicrm/civicrm-core/pull/12475))** + + When sending an email using the "Tell a Friend" functionality for personal + campaign pages this change makes it so you can choose whether the email should + come from the default email for the organization OR the contact IDs email + address. Before this change the emails would always go out from the contact + which can break SPF/DMARC and lead to bounced/failed email delivery. + +- **[CRM-20845](https://issues.civicrm.org/jira/browse/CRM-20845) create + alterMailingRecipients hook + ([10673](https://github.com/civicrm/civicrm-core/pull/10673))** + + This change creates a hook to alter the mailing recipients after they have + been constructed but before the mailing is sent. + +- **[CRM-21425](https://issues.civicrm.org/jira/browse/CRM-21425) Make 'Inbound + E-mail' Activities Editable + ([12445](https://github.com/civicrm/civicrm-core/pull/12445))** + + Before this change no one had permission to edit activities of type "Inbound + Email", this change adds two new permissions 'edit inbound email basic + information' and 'edit inbound email basic information and content' users with + these permissions can edit activities of type "Inbound Email". + +### CiviMember + +- **[dev/core#111](https://lab.civicrm.org/dev/core/issues/111) Support Custom + Data for MembershipType entity + ([12439](https://github.com/civicrm/civicrm-core/pull/12439))** + + This change makes it so that one can view/edit custom data on the + MembershipType form. + +## <a name="bugs"></a>Bugs resolved + +### Core CiviCRM + +- **[infrastructure/ops#842](https://lab.civicrm.org/infrastructure/ops/issues/842) + RSS feed and Getting Started are not displaying in dashlets + ([12756](https://github.com/civicrm/civicrm-core/pull/12756))** + +- **[dev/core#353](https://lab.civicrm.org/dev/core/issues/353) As of 5.4.0, + Activity Search gives an empty result set + ([12742](https://github.com/civicrm/civicrm-core/pull/12742))** + +- **Fix for issue editing custom fields with option groups after #12423 + ([12718](https://github.com/civicrm/civicrm-core/pull/12718))** + + This change fixes a bug where one could not save changes to a custom field + that uses option groups so that one can save changes to a custom field with + option groups. + +- **Update civicrm_generated mysql file following changes to custom mysql… + ([12719](https://github.com/civicrm/civicrm-core/pull/12719))** + + This change ensures that some default custom groups are not reserved. + +- **[dev/core#293](https://lab.civicrm.org/dev/core/issues/293) Error log is + filled with geocoding configuration errors when no provider is set + ([12600](https://github.com/civicrm/civicrm-core/pull/12600))** + + This change fixes a bug where if no geocoding provider is set on a site an + error was thrown to the error log so that no error is thrown. + +- **[dev/core#232](https://lab.civicrm.org/dev/core/issues/232) Contact types + with double hyphens in 'name' field : searches not returning any contactsh + ([12416](https://github.com/civicrm/civicrm-core/pull/12416))** + + This change fixes a bug where when searching for contacts using a contact sub type + no results were returned so that contacts of that sub type are returned. + +- **[dev/core#210](https://lab.civicrm.org/dev/core/issues/210) Regex filter + broken in Search Builder + ([12364](https://github.com/civicrm/civicrm-core/pull/12364))** + + This change fixes the Regex filter in the Search Builder so that it returns + more accurate results. + +- **Theme layer Fix search for Shoreditch compatibility + ([12536](https://github.com/civicrm/civicrm-core/pull/12536))** + + This change fixes the ui on the search page to show the table headers for + sites using the shoreditch theme. + +- **Shoreditch support: Fix following change in core that resulted in visual + regression in shoreditch in advanced search + ([12524](https://github.com/civicrm/civicrm-core/pull/12524))** + + This change improves the layout of the advanced search page for users using + Shoreditch. + +- **[dev/core#150](https://lab.civicrm.org/dev/core/issues/150) Chain select for + country/state in Search Builder does not stay within OR groupings + ([12230](https://github.com/civicrm/civicrm-core/pull/12230))** + + This change fixes a bug in search builder where if one Choose a Country in the + "Include contacts where" section that would also filter the available state + options in the "Also include contacts where" section. + +- **[dev/core#230](https://lab.civicrm.org/dev/core/issues/230) Saved Search : + Set Mapping id to null on mapping delete + ([12486](https://github.com/civicrm/civicrm-core/pull/12486))** + + This change fixes a db error when deleting a saved search so that one can + delete a saved search without getting a database error. + +- **Fix false negatives in checkResourceUrl() + ([12460](https://github.com/civicrm/civicrm-core/pull/12460))** + + This change fixes a bug where an "The Resource URL is not set correctly. + Please set the CiviCRM Resource URL." error was being thrown when the CiviCRM + Resource URL was set to "[civicrm.root]/" so that no error is thrown when + the CiviCRM Resource URL is set. + +- **Fix activity report to bring it under standardised report testing + ([12453](https://github.com/civicrm/civicrm-core/pull/12453))** + + This change makes it possible to write unit tests for the Activity Report. + +- **[dev/core#155](https://lab.civicrm.org/dev/core/issues/155) Improvements and + bugfixes to Option Groups UI + ([12423](https://github.com/civicrm/civicrm-core/pull/12423)) (preliminary work)** + + This change makes it so that Option Groups that are created thru the user + interface can be used with custom fields. + +- **Disable inline-edit of multi-record custom fields in profiles + ([12312](https://github.com/civicrm/civicrm-core/pull/12312))** + + This change makes it so that one cannot inline-edit multi-record custom fields + in profiles. Before this change there was a button to edit but clicking it + would throw a javascript error. + +- **Make domain_id optional in membership_type api. + ([12461](https://github.com/civicrm/civicrm-core/pull/12461))** + + This change makes the domain_id a optional parameter in the membership_type + api, if it is not sent it is set to be the current domain. + +- **[dev/core#141](https://lab.civicrm.org/dev/core/issues/141) Custom groups + with different names but same title would not be saved + ([12464](https://github.com/civicrm/civicrm-core/pull/12464))** + + This change makes it so you can have custom groups with the same title so long + as they have different names. + +- **CustomValue gettree api - More accurate permission check + ([12449](https://github.com/civicrm/civicrm-core/pull/12449))** + + This change makes it so that a user can call the gettree api from ajax if they + have the permission to view the main object. Prior to this change the user had + to have the permission 'administer CiviCRM' to access the gettree api from + ajax. + +- **[dev/core#221](https://lab.civicrm.org/dev/core/issues/221) Inappropriate + warning on preview page of empty custom data set + ([12392](https://github.com/civicrm/civicrm-core/pull/12392))** + + Removes an Undefined Offset error being thrown when a new custom data set is + created and then previewed. + +- **[dev/core#228](https://lab.civicrm.org/dev/core/issues/228) Option group + disabled on update + ([12410](https://github.com/civicrm/civicrm-core/pull/12410))** + + Fixes a bug where Option Groups being being created or updated thru the api + without the is_active parameter set were being set as not active. + +- **Implement CRM_Utils_SQL_Delete + ([12441](https://github.com/civicrm/civicrm-core/pull/12441))** + + This change makes CRM_Utils_SQL_Delete a query-building utility and has it + extend a common base-class as CRM_Utils_SQL_Select. + +- **[dev/core#174](https://lab.civicrm.org/dev/core/issues/174) Consistently use + swappable cache interfaces + ([12427](https://github.com/civicrm/civicrm-core/pull/12427)) (preliminary + work)** + + This patch makes tests more reliable by refining the way SqlGroup handles + trivially short TTLs. + +- **[dev/core#212](https://lab.civicrm.org/dev/core/issues/212) Contribution + Details report fails when "Is not one of" condition is used for Groups field + ([12406](https://github.com/civicrm/civicrm-core/pull/12406))** + + Fixes a DB error when contribution detail report is filtered by the "is not + one of" Group operator. + +- **[dev/core#292](https://lab.civicrm.org/dev/core/issues/292) Search builder + stops working after 5.3.1 (due accents on custom set fields titles) + ([225](https://github.com/civicrm/civicrm-packages/pull/225))** + + Fixes a bug where search builder would choke on accented characters in custom + set field titles so that Search builder can handle accented characters in + custom set field titles. + +- **[CRM-21754](https://issues.civicrm.org/jira/browse/CRM-21754) Duplicate + rows in Activity Details report when address fields are displayed + ([11660](https://github.com/civicrm/civicrm-core/pull/11660))** + + Fixes a bug where the Activity Details report would show duplicate rows when + activity contacts had different addresses so that only one row is shown per + Activity. + +- **[dev/core#326] (https://lab.civicrm.org/dev/core/issues/326) Fatal Error in Section Headers +of Contribution Detail report +([12766](https://github.com/civicrm/civicrm-core/pull/12766))** + + Fixes a DB fatail error when running the contribution detail report and selectng contact name as a + section header for the report. + +### CiviCase + +- **[dev/core#289](https://lab.civicrm.org/dev/core/issues/289) CiviCase + Dashboard link to edit an activity status broken + ([12607](https://github.com/civicrm/civicrm-core/pull/12607))** + + This change fixes a bug on the CiviCase dashboard where when a user clicked + the pencil to edit an activity CiviCRM would throw a 'required params missing' + error and crash so that one can edit a case from the CiviCase dashboard by + clicking the pencil. + +- **[dev/core#278](https://lab.civicrm.org/dev/core/issues/278) DB syntax error + when try to search deleted cases + ([12560](https://github.com/civicrm/civicrm-core/pull/12560))** + + This change fixes a DB syntax error that was being thrown whens searching + deleted cases. + +- **[dev/core#218](https://lab.civicrm.org/dev/core/issues/218) On Case Type + listing page, for reserved ones the, 'More' link don't show any options + ([12384](https://github.com/civicrm/civicrm-core/pull/12384))** + + Fixes a bug where on the Case Types Listing page the 'More' link would not + show any options for reserved case types. + +### CiviContribute + +- **[dev/core#325](https://lab.civicrm.org/dev/core/issues/325) and + [dev/core#327](https://lab.civicrm.org/dev/core/issues/327) Fatal errors 'DB + Error: no such field' and 'Call to undefined method' on Contribution detail + report ([12763](https://github.com/civicrm/civicrm-core/pull/12763))** + +- **[CRM-21104](https://issues.civicrm.org/jira/browse/CRM-21104) CiviCRM + Contribution pages which have no Profile associated with them do not include a + ReCaptcha and as a result are prime targets for credit card fraud. + ([11197](https://github.com/civicrm/civicrm-core/pull/11197))** + + This change makes it so that ReCaptcha is shown on all Contribution pages that + use a payment processor to process online payments. Before this change + ReCaptcha only was shown on contribution pages that used profiles. + +- **[dev/core#277](https://lab.civicrm.org/dev/core/issues/277) Recurring + contribution tab shouldn't count test transactions + ([12610](https://github.com/civicrm/civicrm-core/pull/12610) and + [12553](https://github.com/civicrm/civicrm-core/pull/12553))** + + This change makes it so that the Recurring Contributions tab count only counts + the 'Active Recurring Contributions' (does not count 'Inactive Recurring + Contributions') and sorts the Recurring Contributions by start date starting + with the newest. + +- **[dev/core#242](https://lab.civicrm.org/dev/core/issues/242) Fix display of + premiums on contribution pages + ([12437](https://github.com/civicrm/civicrm-core/pull/12437))** + + This change fixes a bug where premium products without financial types + were not being displayed on contribution pages so that premium products are displayed on + contribution pages regardless of whether they have a financial type. + +- **[dev/financial#27](https://lab.civicrm.org/dev/financial/issues/27) Paypal + recurring IPNs don't work under some circumstances + ([12387](https://github.com/civicrm/civicrm-core/pull/12387))** + + This change fixes a bug where IPNs for recurring donations made using PayPal + Standard did not work if the business emails did not match. + +- **[dev/core#188](https://lab.civicrm.org/dev/core/issues/188) Fix Floating + Point Precision Comparison Exception on Order Creation + ([12352](https://github.com/civicrm/civicrm-core/pull/12352))** + + This change fixes a bug where sometimes contributions would fail because the + total amount and the total of the line items would not be exactly equal + because of floating point precision issues. + +- **PriceField: show pre/post help if not empty, not if isset. + ([12458](https://github.com/civicrm/civicrm-core/pull/12458))** + + Fixes a bug for multilingual mode where radio options in price sets with empty + pre/post help were displaying pre/post help as ':' so that no ':' are shown. + +- **[dev/core#346](https://lab.civicrm.org/dev/core/issues/346) Fix Online Pay Now links when used from Dashboard. + ([12777](https://github.com/civicrm/civicrm-core/pull/12777))** + + This fixes an issue with the Online Paynow link when the dashboard is access by an annonmyous user using a checksum link. + +### CiviEvent + +- **Fix + Add test for exporting location types with changed names + ([12671](https://github.com/civicrm/civicrm-core/pull/12671))** + + This change fixes a bug where if a location types name did not exactly match + its value it was not exporting properly so that the label exports properly. + +- **Event Info: show waitinglist statusline only when registration is open + ([11949](https://github.com/civicrm/civicrm-core/pull/11949))** + + This change makes it so when on an Event Info page, if the event is closed, no + other notices about registration are shown. + +- **[dev/core#255](https://lab.civicrm.org/dev/core/issues/255) Changes to + copied event location reflects in original event location + ([12459](https://github.com/civicrm/civicrm-core/pull/12459))** + + Fixes a bug where if one copied an event and then changed the location, the + location would also be changed on the original event so that one can change + the event on the copy without it having an effect on the original. + +- **[dev/core#239](https://lab.civicrm.org/dev/core/issues/239) Huge title + dialog box on hovering form element on Event's configuration backend form + ([12430](https://github.com/civicrm/civicrm-core/pull/12430))** + + This change improves the user interface on the Event Configuration Form by + making the dialog boxes when hovering on form elements cleaner. + +### CiviMail + + This change fixes a bug where DoNotSms preference was not being respected when + sending Mass Sms messages. + +- **[dev/core#256](https://lab.civicrm.org/dev/core/issues/256) - Wrong A/B test + recipient assignment when reaching 2^31 recipients overall + ([12465](https://github.com/civicrm/civicrm-core/pull/12465))** + + This change fixes a bug where when submitting an A/B mailing to a big enough + group (2^31) the whole target group would receive Version A, so that 50% of + the sample group receives version A, the other half version B, and the rest is + assigned to Final mailing. + +- **CiviMail: Fix logic for handling SMTP socket errors, temporary failures and + permanent failures + ([11838](https://github.com/civicrm/civicrm-core/pull/11838))** + + Fixes support for sending mail directly to AWS SES via SMTP by detecting + additional temporary failure modes. + +- **[dev/mail#15](https://lab.civicrm.org/dev/mail/issues/15) Extraneous space + in From address causes on-hold set on all recipients + ([12346](https://github.com/civicrm/civicrm-core/pull/12346))** + + This change fixes a bug where if there were extraneous spaces in the From + address for a CiviMail mailing then no emails were sent and all recipients + were marked as On-Hold so that the extraneous space is stripped out and the + mailing goes out successfully. + +### CiviMember + +- **[dev/core#368](https://lab.civicrm.org/dev/core/issues/368) Scheduled + Reminder edit form does not populate date criteria correctly when editing old + reminders ([12755](https://github.com/civicrm/civicrm-core/pull/12755))** + +- **Only auto-renew membership when contribution status is completed + ([12315](https://github.com/civicrm/civicrm-core/pull/12315))** + + This change makes it so that Membership will only auto-renew when the + contribution is in state "Completed". + +### Backdrop Integration + +- **[dev/core#243](https://lab.civicrm.org/dev/core/issues/243) Backdrop + authentication function missing in kcfinder package. + ([216](https://github.com/civicrm/civicrm-packages/pull/216))** + + Fixes Kcfinder package authentication for Backdrop users. + +### Drupal Integration + +- **Allow Drupal 8 vendor folder outside webroot + ([12499](https://github.com/civicrm/civicrm-core/pull/12499))** + + This change makes it so that civicrm Drupal 8 integrations can store vendor + folders outside the webroot. + +- **Fix Views custom field handler not displaying select value labels when + fields share the same label. + ([532](https://github.com/civicrm/civicrm-drupal/pull/532))** + + Fixes a bug where views custom field handler was not displaying select value + labels when more than one field had the same label. + +### WordPress Integration + +- **[CRM-21812](https://issues.civicrm.org/jira/browse/CRM-21812) WordPress + install variable causes conflict with some WP plugins + ([125](https://github.com/civicrm/civicrm-wordpress/pull/125))** + + This change makes it so civicrm is compatible with the wp-cli-login-server + wordpress plugin. + +## <a name="misc"></a>Miscellany + +- **Extract contact summary basic block to its own tpl + ([12751](https://github.com/civicrm/civicrm-core/pull/12751))** + +- **Simplify input params on OptionValue::addOptionValue + ([12414](https://github.com/civicrm/civicrm-core/pull/12414))** + +- **Enable syntaxConformance on entities that now succeed + ([12412](https://github.com/civicrm/civicrm-core/pull/12412))** + +- **CRM_Core_BAO_PrevNextCache - Remove unused buildSelectedContactPager() + ([12418](https://github.com/civicrm/civicrm-core/pull/12418))** + +- **NFC - Deprecate duplicate function + ([12602](https://github.com/civicrm/civicrm-core/pull/12602))** + +- **[NFC] Update comment link + ([12429](https://github.com/civicrm/civicrm-core/pull/12429))** + +- **[NFC] Export - don't pass arrays as reference when they are not changed + ([12596](https://github.com/civicrm/civicrm-core/pull/12596))** + +- **(NFC) Update readme to link to GitLab instead of JIRA + ([12578](https://github.com/civicrm/civicrm-core/pull/12578))** + +- **(NFC) Remove deprecated recursive array utils + ([12539](https://github.com/civicrm/civicrm-core/pull/12539))** + +- **(NFC) Deprecate redundant array util function + ([12529](https://github.com/civicrm/civicrm-core/pull/12529))** + +- **[NFC] Comment fixes + ([12450](https://github.com/civicrm/civicrm-core/pull/12450))** + +- **(NFC) Remove deprecated function use + ([221](https://github.com/civicrm/civicrm-packages/pull/221))** + +- **(NFC) Ignore generated karma.cv.js file + ([12462](https://github.com/civicrm/civicrm-core/pull/12462))** + +- **(NFC) Update comment on membership type domain_id API Test + ([12477](https://github.com/civicrm/civicrm-core/pull/12477))** + +- **(NFC) Regenerate OptionGroup DAO file + ([12478](https://github.com/civicrm/civicrm-core/pull/12478))** + +- **NFC cleanup to financial classes + ([12482](https://github.com/civicrm/civicrm-core/pull/12482))** + +- **Stdise references to BAO_Query->_fields [nfc] + ([12585](https://github.com/civicrm/civicrm-core/pull/12585))** + +- **Test fix for intermittant error + ([12673](https://github.com/civicrm/civicrm-core/pull/12673))** + +- **Test fix, update activity report adds a this.month filter by default, + accomodate ([12616](https://github.com/civicrm/civicrm-core/pull/12616))** + +- **Customvalue ID is ignored + ([12606](https://github.com/civicrm/civicrm-core/pull/12606))** + +- **Towards using EntityForm.tpl for Membership type & enabling custom data + ([12591](https://github.com/civicrm/civicrm-core/pull/12591))** + +- **Export Add unit test + minor refactor covering specifiable payment output + fields for participant export. + ([12535](https://github.com/civicrm/civicrm-core/pull/12535))** + +- **Export clean up sql columns + ([12577](https://github.com/civicrm/civicrm-core/pull/12577))** + +- **crmRouteBinder - Don't convert arrays to objects + ([12530](https://github.com/civicrm/civicrm-core/pull/12530))** + +- **Added code to throw exception on getvalue api call + ([12573](https://github.com/civicrm/civicrm-core/pull/12573))** + +- **[dev/financial#24](https://lab.civicrm.org/dev/financial/issues/24) Link + payment method to financial account when created using api + ([12388](https://github.com/civicrm/civicrm-core/pull/12388))** + +- **Move relationship return properties to the processor class to fix leakage + related test fail + ([12521](https://github.com/civicrm/civicrm-core/pull/12521))** + +- **Extract code for getting additional return properties, test + ([12505](https://github.com/civicrm/civicrm-core/pull/12505))** + +- **Fix signature on BAO_Product::add to make ids optional + ([12523](https://github.com/civicrm/civicrm-core/pull/12523))** + +- **Export : Add a lot of unit tests. Fix an enotice + ([12518](https://github.com/civicrm/civicrm-core/pull/12518))** + +- **Fix regression on case export from recent export fix + ([12517](https://github.com/civicrm/civicrm-core/pull/12517))** + +- **Remove LOWER from street_address search, rely on mysql to handle. + ([12503](https://github.com/civicrm/civicrm-core/pull/12503))** + +- **Respect '0' as a default when generating DAOs + ([12483](https://github.com/civicrm/civicrm-core/pull/12483))** + +- **Export cleanup Extract bulk of the transformation for each field to its own + function ([12469](https://github.com/civicrm/civicrm-core/pull/12469))** + +- **Fix enotice in test + ([12507](https://github.com/civicrm/civicrm-core/pull/12507))** + +- **Test fix, use separate emails so distinct doesn't meld them + ([12490](https://github.com/civicrm/civicrm-core/pull/12490))** + +- **Export cleanup - pass processor object rather than the query object + ([12485](https://github.com/civicrm/civicrm-core/pull/12485))** + +- **Minor refactor preparatory to function extraction + ([12468](https://github.com/civicrm/civicrm-core/pull/12468))** + +- **Cleanup redundant array functions + ([12452](https://github.com/civicrm/civicrm-core/pull/12452))** + +- **Export code tidy up Use queryFields rather than query. Look to stop passing + around query. ([12484](https://github.com/civicrm/civicrm-core/pull/12484))** + +- **Export class code cleanup Start building export processor class. + ([12479](https://github.com/civicrm/civicrm-core/pull/12479))** + +- **Rename CRM_Contribute_BAO_ManagePremiums to CRM_Contribute_BAO_Product and + deprecate CRM_Contribute_BAO_ManagePremiums + ([12474](https://github.com/civicrm/civicrm-core/pull/12474))** + +- **Remove unused variables & comment cleanup + ([12472](https://github.com/civicrm/civicrm-core/pull/12472))** + +- **Non functional changes towards shared functions in Core_Form_Task + ([12320](https://github.com/civicrm/civicrm-core/pull/12320))** + +- **Export class code readability - Reduce passing of variable, define on class + ([12290](https://github.com/civicrm/civicrm-core/pull/12290))** + +- **Deprecate array on ManagePremiums + ([12451](https://github.com/civicrm/civicrm-core/pull/12451))** + +- **Remove old deprecated crmeditable.tpl + ([12442](https://github.com/civicrm/civicrm-core/pull/12442))** + +- **Fix potential undefined array index + ([12443](https://github.com/civicrm/civicrm-core/pull/12443))** + +- **CRM_Utils_StringTest - Fix false-negative on systems with non-standard HTTP port + ([12786](https://github.com/civicrm/civicrm-core/pull/12786))** + +## <a name="credits"></a>Credits + +This release was developed by the following code authors: + +AGH Strategies - Andrew Hunt; Agileware - Alok Patel; Australian Greens - Seamus +Lee; Calibrate - Wannes De Roy; Caltha - Tomasz Pietrzkowski; Chris Burgess; +CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Sunil +Pawar, Yashodha Chaku; CompuCorp - Camilo Rodriguez, Mukesh Ram; Coop SymbioTIC - +Mathieu Lutfy; Electronic Frontier Foundation - Mark Burdett; eQuality +Technology - Greg Rundlett; Freeform Solutions - Herb van den Dool; Fuzion - +Jitendra Purohit; JMA Consulting - Monish Deb; John Kingsnorth; Left Join Labs - +Sean Madsen; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - +Matthew Wire; OSSeed Technologies - Madhavi Malgaonkar; Oxfam Germany - Thomas +Schüttler; Pradeep Nayak; Progressive Technology Project - Jamie McClelland; +Richard van Oosterhout; Romain Thouvenin; Squiffle Consulting - Aidan Saunders; +Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew; +Wikimedia Foundation - Eileen McNaughton + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +AGH Strategies - Alice Frumin; Agileware - Agileware Team; Andrew +Cormick-Dockery; Ben Mango; CEDC - Laryn Kragt Bakker; Chris Burgess; Christian +Wach; Circle Interactive - Dave Jenkins; Francesc Bassas i Bullich; Fuzion - +Luke Stewart, Peter Davis; GMCVO Databases - Jon-Man Cheung; Greenleaf +Advancement - Karen Stevenson; Laurynn Lowe; Lemniscus - Noah Miller; Lighthouse +Design and Consulting - Brian Shaughnessy; marsh-circle; MillerTech - Chamil +Wijesooriya; myDropWizard - David Snopek; Semper IT - Karin Gerritsen; Tanya +Bouman + +## <a name="feedback"></a>Feedback + +These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like +to provide feedback on them, please log in to https://chat.civicrm.org/civicrm +and contact `@agh1`. diff --git a/civicrm/release-notes/5.5.1.md b/civicrm/release-notes/5.5.1.md new file mode 100644 index 0000000000000000000000000000000000000000..af61298ba89aae0d0cf938ed234536dedbed615b --- /dev/null +++ b/civicrm/release-notes/5.5.1.md @@ -0,0 +1,38 @@ +# CiviCRM 5.5.1 + +Released 12 Sep 2018 + +- **[Synopsis](#synopsis)** +- **[Bugs resolved](#bugs)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +|:--------------------------------------------------------------- |:-------:| +| Fix security vulnerabilities? | no | +| Change the database schema? | no | +| Alter the API? | no | +| Require attention to configuration options? | no | +| **Fix problems installing or upgrading from previous version?** | **yes** | +| Introduce features? | no | +| **Fix bugs?** | **yes** | + +## <a name="bugs"></a>Bugs resolved + +- **([dev/core#390](https://lab.civicrm.org/dev/core/issues/390)) + Fix regression affecting smart-groups which predate 5.5.0 ([12803](https://github.com/civicrm/civicrm-core/pull/12803))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors: + +Australian Greens - Seamus Lee; CiviCRM - Tim Otten; Lemniscus - Noah Miller; Wikimedia +Foundation - Eileen McNaughton + +## <a name="feedback"></a>Feedback + +These release notes are edited by Tim Otten and Andrew 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/settings/Core.setting.php b/civicrm/settings/Core.setting.php index c95ed3d01850e49bb91d0f9c9591ac644a194aae..9d91ed59c03a6a4e1bd8314d98c5cbc2a59bc062 100644 --- a/civicrm/settings/Core.setting.php +++ b/civicrm/settings/Core.setting.php @@ -530,6 +530,21 @@ return array( 'description' => NULL, 'help_text' => NULL, ), + 'forceRecaptcha' => array( + 'add' => '4.7', + 'help_text' => NULL, + 'is_domain' => 1, + 'is_contact' => 0, + 'group_name' => 'CiviCRM Preferences', + 'group' => 'core', + 'name' => 'forceRecaptcha', + 'type' => 'Boolean', + 'quick_form_type' => 'YesNo', + 'html_type' => '', + 'default' => '0', + 'title' => 'Force reCAPTCHA on Contribution pages', + 'description' => 'If enabled, reCAPTCHA will show on all contribution pages.', + ), 'recaptchaPrivateKey' => array( 'group_name' => 'CiviCRM Preferences', 'group' => 'core', diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql index 3702ee53c90c72c49f07a8abadc5f7679bb74215..6c12afa0f59659be7ff75a9b58a208245f4f0cca 100644 --- a/civicrm/sql/civicrm.mysql +++ b/civicrm/sql/civicrm.mysql @@ -390,9 +390,9 @@ CREATE TABLE `civicrm_option_group` ( `title` varchar(255) COMMENT 'Option Group title.', `description` varchar(255) COMMENT 'Option group description.', `data_type` varchar(128) COMMENT 'Option group description.', - `is_reserved` tinyint DEFAULT 1 COMMENT 'Is this a predefined system option group (i.e. it can not be deleted)?', - `is_active` tinyint COMMENT 'Is this option group active?', - `is_locked` tinyint COMMENT 'A lock to remove the ability to add new options via the UI.' + `is_reserved` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this a predefined system option group (i.e. it can not be deleted)?', + `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this option group active?', + `is_locked` tinyint NOT NULL DEFAULT 0 COMMENT 'A lock to remove the ability to add new options via the UI.' , PRIMARY KEY (`id`) @@ -850,7 +850,7 @@ CREATE TABLE `civicrm_saved_search` ( PRIMARY KEY (`id`) -, CONSTRAINT FK_civicrm_saved_search_mapping_id FOREIGN KEY (`mapping_id`) REFERENCES `civicrm_mapping`(`id`) +, CONSTRAINT FK_civicrm_saved_search_mapping_id FOREIGN KEY (`mapping_id`) REFERENCES `civicrm_mapping`(`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- /******************************************************* @@ -3713,8 +3713,8 @@ CREATE TABLE `civicrm_relationship` ( `end_date` date COMMENT 'date when the relationship ended', `is_active` tinyint DEFAULT 1 COMMENT 'is the relationship active ?', `description` varchar(255) COMMENT 'Optional verbose description for the relationship.', - `is_permission_a_b` tinyint DEFAULT 0 COMMENT 'is contact a has permission to view / edit contact and\n related data for contact b ?\n ', - `is_permission_b_a` tinyint DEFAULT 0 COMMENT 'is contact b has permission to view / edit contact and\n related data for contact a ?\n ', + `is_permission_a_b` int unsigned NOT NULL DEFAULT 0 COMMENT 'Permission that Contact A has to view/update Contact B', + `is_permission_b_a` int unsigned NOT NULL DEFAULT 0 COMMENT 'Permission that Contact B has to view/update Contact A', `case_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_case' , PRIMARY KEY (`id`) diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql index 07f1af5c9bcc67c04d8e82b6d0ad19773b9d7a60..3fd3140e8f52819a9fbbb72cbf3852d0e89fbb32 100644 --- a/civicrm/sql/civicrm_data.mysql +++ b/civicrm/sql/civicrm_data.mysql @@ -4836,7 +4836,7 @@ VALUES ('wysiwyg_presets' , 'WYSIWYG Editor Presets' , NULL, 1, 1, 0), ('relative_date_filters' , 'Relative Date Filters' , NULL, 1, 1, 0), ('pledge_status' , 'Pledge Status' , NULL, 1, 1, 1), - ('environment' , 'Environment' , NULL, 0, 1, 0); + ('environment' , 'Environment' , NULL, 1, 1, 0); SELECT @option_group_id_pcm := max(id) from civicrm_option_group where name = 'preferred_communication_method'; SELECT @option_group_id_act := max(id) from civicrm_option_group where name = 'activity_type'; @@ -23475,7 +23475,7 @@ VALUES INSERT INTO civicrm_navigation ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) VALUES - ( @domainID, NULL, 'Dropdown Options', 'Dropdown Options', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 8 ); + ( @domainID, 'civicrm/admin/options?action=browse&reset=1', 'Dropdown Options', 'Dropdown Options', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 8 ); SET @optionListlastID:=LAST_INSERT_ID(); INSERT INTO civicrm_navigation @@ -23970,4 +23970,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.4.0'; +UPDATE civicrm_domain SET version = '5.5.1'; diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql index 81b14ab734bcf081275b0acc09cfa195d1dc026b..36089c287b67c0a347b6d0a80c8779ab89ccbf7a 100644 --- a/civicrm/sql/civicrm_generated.mysql +++ b/civicrm/sql/civicrm_generated.mysql @@ -1,8 +1,8 @@ --- MySQL dump 10.13 Distrib 5.5.42, for osx10.6 (i386) +-- MySQL dump 10.13 Distrib 5.7.23, for Linux (x86_64) -- --- Host: 127.0.0.1 Database: civicrm_master +-- Host: 127.0.0.1 Database: 47democivi_idrpw -- ------------------------------------------------------ --- Server version 5.5.42 +-- Server version 5.7.23-0ubuntu0.18.04.1-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -87,7 +87,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity` WRITE; /*!40000 ALTER TABLE `civicrm_activity` DISABLE KEYS */; -INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES (1,NULL,10,'Subject for Pledge Acknowledgment','2018-01-17 11:37:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(2,NULL,9,'Subject for Tell a Friend','2017-10-19 07:43:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(3,NULL,10,'Subject for Pledge Acknowledgment','2018-04-30 00:35:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(4,NULL,9,'Subject for Tell a Friend','2018-01-05 09:28:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(5,NULL,9,'Subject for Tell a Friend','2018-05-15 06:15:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(6,NULL,10,'Subject for Pledge Acknowledgment','2017-10-06 18:30:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(7,NULL,10,'Subject for Pledge Acknowledgment','2018-05-10 14:31:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(8,NULL,10,'Subject for Pledge Acknowledgment','2018-02-22 15:57:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(9,NULL,10,'Subject for Pledge Acknowledgment','2018-05-19 08:37:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(10,NULL,10,'Subject for Pledge Acknowledgment','2018-02-12 08:46:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(11,NULL,9,'Subject for Tell a Friend','2017-10-19 10:01:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(12,NULL,9,'Subject for Tell a Friend','2017-11-19 10:51:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(13,NULL,9,'Subject for Tell a Friend','2017-11-30 05:22:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(14,NULL,9,'Subject for Tell a Friend','2017-06-05 01:18:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(15,NULL,10,'Subject for Pledge Acknowledgment','2018-05-14 16:59:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(16,NULL,9,'Subject for Tell a Friend','2018-01-29 23:35:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(17,NULL,10,'Subject for Pledge Acknowledgment','2018-05-07 10:32:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(18,NULL,10,'Subject for Pledge Acknowledgment','2017-09-23 00:36:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(19,NULL,9,'Subject for Tell a Friend','2017-05-22 05:08:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(20,NULL,10,'Subject for Pledge Acknowledgment','2018-03-11 06:02:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(21,NULL,9,'Subject for Tell a Friend','2017-11-21 21:07:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(22,NULL,9,'Subject for Tell a Friend','2017-11-06 01:43:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(23,NULL,9,'Subject for Tell a Friend','2018-01-07 23:10:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(24,NULL,10,'Subject for Pledge Acknowledgment','2018-05-10 23:45:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(25,NULL,10,'Subject for Pledge Acknowledgment','2018-03-30 21:28:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(26,NULL,10,'Subject for Pledge Acknowledgment','2017-09-09 08:53:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(27,NULL,10,'Subject for Pledge Acknowledgment','2017-09-18 09:21:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(28,NULL,10,'Subject for Pledge Acknowledgment','2018-01-05 07:32:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(29,NULL,10,'Subject for Pledge Acknowledgment','2017-11-10 12:32:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(30,NULL,10,'Subject for Pledge Acknowledgment','2018-03-13 13:42:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(31,NULL,9,'Subject for Tell a Friend','2018-04-02 04:56:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(32,NULL,10,'Subject for Pledge Acknowledgment','2017-10-25 04:18:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(33,NULL,9,'Subject for Tell a Friend','2017-09-09 19:20:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(34,NULL,9,'Subject for Tell a Friend','2017-06-30 12:20:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(35,NULL,10,'Subject for Pledge Acknowledgment','2018-02-27 07:39:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(36,NULL,9,'Subject for Tell a Friend','2017-09-22 04:36:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(37,NULL,10,'Subject for Pledge Acknowledgment','2018-02-10 19:29:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(38,NULL,9,'Subject for Tell a Friend','2017-09-03 14:34:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(39,NULL,10,'Subject for Pledge Acknowledgment','2017-11-02 15:14:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(40,NULL,9,'Subject for Tell a Friend','2018-02-01 02:15:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(41,NULL,9,'Subject for Tell a Friend','2017-10-06 04:14:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(42,NULL,10,'Subject for Pledge Acknowledgment','2018-02-05 03:03:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(43,NULL,9,'Subject for Tell a Friend','2018-04-16 15:50:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(44,NULL,9,'Subject for Tell a Friend','2017-08-05 23:44:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(45,NULL,10,'Subject for Pledge Acknowledgment','2018-04-09 11:25:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(46,NULL,10,'Subject for Pledge Acknowledgment','2018-03-19 06:46:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(47,NULL,9,'Subject for Tell a Friend','2018-04-24 13:44:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(48,NULL,9,'Subject for Tell a Friend','2018-04-23 08:22:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(49,NULL,10,'Subject for Pledge Acknowledgment','2018-01-27 21:37:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(50,NULL,10,'Subject for Pledge Acknowledgment','2018-03-18 19:00:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(51,NULL,9,'Subject for Tell a Friend','2017-08-22 02:17:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(52,NULL,9,'Subject for Tell a Friend','2017-08-31 20:40:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(53,NULL,9,'Subject for Tell a Friend','2017-09-10 08:12:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(54,NULL,9,'Subject for Tell a Friend','2017-11-23 10:54:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(55,NULL,9,'Subject for Tell a Friend','2017-08-17 21:14:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(56,NULL,9,'Subject for Tell a Friend','2017-10-05 21:00:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(57,NULL,10,'Subject for Pledge Acknowledgment','2017-08-16 19:10:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(58,NULL,9,'Subject for Tell a Friend','2017-09-08 21:36:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(59,NULL,9,'Subject for Tell a Friend','2017-10-28 07:08:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(60,NULL,10,'Subject for Pledge Acknowledgment','2017-06-20 15:03:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(61,NULL,10,'Subject for Pledge Acknowledgment','2018-03-13 08:31:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(62,NULL,9,'Subject for Tell a Friend','2018-01-11 05:26:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(63,NULL,10,'Subject for Pledge Acknowledgment','2018-05-04 14:44:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(64,NULL,9,'Subject for Tell a Friend','2017-06-15 06:48:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(65,NULL,10,'Subject for Pledge Acknowledgment','2017-08-01 07:01:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(66,NULL,10,'Subject for Pledge Acknowledgment','2017-08-13 10:11:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(67,NULL,10,'Subject for Pledge Acknowledgment','2017-08-06 09:59:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(68,NULL,9,'Subject for Tell a Friend','2018-02-12 23:34:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(69,NULL,9,'Subject for Tell a Friend','2018-02-08 08:24:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(70,NULL,9,'Subject for Tell a Friend','2017-10-03 04:40:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(71,NULL,10,'Subject for Pledge Acknowledgment','2018-02-13 12:45:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(72,NULL,10,'Subject for Pledge Acknowledgment','2017-11-02 06:02:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(73,NULL,10,'Subject for Pledge Acknowledgment','2018-02-13 12:35:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(74,NULL,9,'Subject for Tell a Friend','2018-05-17 02:10:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(75,NULL,10,'Subject for Pledge Acknowledgment','2017-12-01 04:19:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(76,NULL,9,'Subject for Tell a Friend','2017-06-18 09:03:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(77,NULL,9,'Subject for Tell a Friend','2017-08-29 16:57:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(78,NULL,9,'Subject for Tell a Friend','2017-07-14 15:33:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(79,NULL,10,'Subject for Pledge Acknowledgment','2018-04-28 13:56:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(80,NULL,10,'Subject for Pledge Acknowledgment','2018-02-09 09:07:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(81,NULL,10,'Subject for Pledge Acknowledgment','2017-07-27 14:20:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(82,NULL,9,'Subject for Tell a Friend','2017-11-19 06:58:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(83,NULL,9,'Subject for Tell a Friend','2018-01-04 22:01:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(84,NULL,10,'Subject for Pledge Acknowledgment','2018-05-14 14:49:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(85,NULL,10,'Subject for Pledge Acknowledgment','2017-09-15 01:56:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(86,NULL,9,'Subject for Tell a Friend','2018-04-20 00:11:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(87,NULL,10,'Subject for Pledge Acknowledgment','2017-07-02 06:10:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(88,NULL,9,'Subject for Tell a Friend','2017-06-07 20:41:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(89,NULL,10,'Subject for Pledge Acknowledgment','2017-09-26 11:33:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(90,NULL,10,'Subject for Pledge Acknowledgment','2017-10-04 03:18:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(91,NULL,10,'Subject for Pledge Acknowledgment','2018-04-15 14:26:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(92,NULL,10,'Subject for Pledge Acknowledgment','2017-10-01 00:24:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(93,NULL,10,'Subject for Pledge Acknowledgment','2018-02-01 10:00:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(94,NULL,9,'Subject for Tell a Friend','2017-12-13 07:16:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(95,NULL,10,'Subject for Pledge Acknowledgment','2018-02-22 18:32:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(96,NULL,9,'Subject for Tell a Friend','2018-05-15 17:22:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(97,NULL,9,'Subject for Tell a Friend','2018-01-16 08:59:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(98,NULL,10,'Subject for Pledge Acknowledgment','2017-10-17 00:36:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(99,NULL,9,'Subject for Tell a Friend','2017-08-22 18:15:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(100,NULL,10,'Subject for Pledge Acknowledgment','2018-03-21 16:30:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(101,NULL,9,'Subject for Tell a Friend','2018-04-04 21:36:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(102,NULL,9,'Subject for Tell a Friend','2017-06-30 07:28:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(103,NULL,9,'Subject for Tell a Friend','2018-02-23 19:16:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(104,NULL,10,'Subject for Pledge Acknowledgment','2018-01-07 11:31:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(105,NULL,10,'Subject for Pledge Acknowledgment','2018-03-05 04:22:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(106,NULL,9,'Subject for Tell a Friend','2018-05-20 05:25:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(107,NULL,10,'Subject for Pledge Acknowledgment','2018-04-28 07:31:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(108,NULL,9,'Subject for Tell a Friend','2017-05-22 13:14:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(109,NULL,10,'Subject for Pledge Acknowledgment','2017-08-25 12:50:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(110,NULL,9,'Subject for Tell a Friend','2017-12-04 21:05:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(111,NULL,10,'Subject for Pledge Acknowledgment','2017-08-13 14:55:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(112,NULL,10,'Subject for Pledge Acknowledgment','2017-06-05 09:20:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(113,NULL,10,'Subject for Pledge Acknowledgment','2018-04-18 22:14:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(114,NULL,9,'Subject for Tell a Friend','2018-01-05 01:53:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(115,NULL,9,'Subject for Tell a Friend','2018-01-21 13:54:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(116,NULL,10,'Subject for Pledge Acknowledgment','2018-05-09 17:06:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(117,NULL,10,'Subject for Pledge Acknowledgment','2017-08-07 23:56:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(118,NULL,9,'Subject for Tell a Friend','2018-03-22 10:19:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(119,NULL,9,'Subject for Tell a Friend','2018-02-26 16:33:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(120,NULL,10,'Subject for Pledge Acknowledgment','2017-06-09 02:46:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(121,NULL,9,'Subject for Tell a Friend','2018-02-14 16:56:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(122,NULL,9,'Subject for Tell a Friend','2018-01-06 23:32:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(123,NULL,10,'Subject for Pledge Acknowledgment','2018-04-25 12:04:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(124,NULL,9,'Subject for Tell a Friend','2018-02-08 16:44:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(125,NULL,9,'Subject for Tell a Friend','2018-03-12 08:12:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(126,NULL,9,'Subject for Tell a Friend','2017-09-05 23:58:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(127,NULL,10,'Subject for Pledge Acknowledgment','2018-04-19 03:28:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(128,NULL,10,'Subject for Pledge Acknowledgment','2018-02-02 05:29:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(129,NULL,10,'Subject for Pledge Acknowledgment','2017-10-02 00:25:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(130,NULL,9,'Subject for Tell a Friend','2017-12-23 03:27:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(131,NULL,10,'Subject for Pledge Acknowledgment','2017-06-11 11:48:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(132,NULL,9,'Subject for Tell a Friend','2018-05-18 06:05:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(133,NULL,9,'Subject for Tell a Friend','2017-11-02 08:29:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(134,NULL,10,'Subject for Pledge Acknowledgment','2018-04-07 11:46:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(135,NULL,10,'Subject for Pledge Acknowledgment','2017-10-16 15:06:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(136,NULL,9,'Subject for Tell a Friend','2018-05-17 19:32:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(137,NULL,10,'Subject for Pledge Acknowledgment','2018-05-05 07:38:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(138,NULL,9,'Subject for Tell a Friend','2017-08-27 17:18:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(139,NULL,9,'Subject for Tell a Friend','2018-04-20 08:56:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(140,NULL,10,'Subject for Pledge Acknowledgment','2018-01-17 16:03:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(141,NULL,9,'Subject for Tell a Friend','2017-09-30 13:54:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(142,NULL,9,'Subject for Tell a Friend','2017-06-22 22:49:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(143,NULL,9,'Subject for Tell a Friend','2018-05-09 11:13:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(144,NULL,9,'Subject for Tell a Friend','2017-05-29 09:37:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(145,NULL,9,'Subject for Tell a Friend','2017-06-19 09:20:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(146,NULL,9,'Subject for Tell a Friend','2018-04-14 01:59:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(147,NULL,9,'Subject for Tell a Friend','2017-12-18 20:35:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(148,NULL,9,'Subject for Tell a Friend','2017-09-14 03:14:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(149,NULL,9,'Subject for Tell a Friend','2018-01-31 03:57:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(150,NULL,10,'Subject for Pledge Acknowledgment','2018-01-23 00:56:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(151,NULL,9,'Subject for Tell a Friend','2017-06-24 13:28:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(152,NULL,9,'Subject for Tell a Friend','2018-03-21 05:04:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(153,NULL,9,'Subject for Tell a Friend','2017-11-23 14:54:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(154,NULL,10,'Subject for Pledge Acknowledgment','2017-09-02 03:28:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(155,NULL,10,'Subject for Pledge Acknowledgment','2018-03-25 18:51:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(156,NULL,9,'Subject for Tell a Friend','2017-07-06 23:14:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(157,NULL,10,'Subject for Pledge Acknowledgment','2018-03-31 19:35:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(158,NULL,10,'Subject for Pledge Acknowledgment','2017-11-10 13:52:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(159,NULL,10,'Subject for Pledge Acknowledgment','2018-02-25 10:13:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(160,NULL,9,'Subject for Tell a Friend','2017-11-09 22:18:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(161,NULL,9,'Subject for Tell a Friend','2017-11-18 14:49:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(162,NULL,9,'Subject for Tell a Friend','2017-11-15 12:06:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(163,NULL,10,'Subject for Pledge Acknowledgment','2017-12-24 08:03:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(164,NULL,10,'Subject for Pledge Acknowledgment','2017-10-27 12:57:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(165,NULL,9,'Subject for Tell a Friend','2018-01-27 12:44:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(166,NULL,10,'Subject for Pledge Acknowledgment','2018-02-19 10:51:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(167,NULL,9,'Subject for Tell a Friend','2017-11-13 00:38:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(168,NULL,10,'Subject for Pledge Acknowledgment','2018-05-16 17:29:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(169,NULL,10,'Subject for Pledge Acknowledgment','2018-04-06 23:33:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(170,NULL,9,'Subject for Tell a Friend','2017-08-08 05:26:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(171,NULL,10,'Subject for Pledge Acknowledgment','2017-05-27 10:59:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(172,NULL,9,'Subject for Tell a Friend','2017-07-27 06:53:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(173,NULL,9,'Subject for Tell a Friend','2018-02-09 19:12:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(174,NULL,9,'Subject for Tell a Friend','2018-01-19 13:17:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(175,NULL,9,'Subject for Tell a Friend','2017-10-07 09:36:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(176,NULL,9,'Subject for Tell a Friend','2017-12-09 15:55:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(177,NULL,9,'Subject for Tell a Friend','2018-04-13 05:37:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(178,NULL,10,'Subject for Pledge Acknowledgment','2017-08-01 22:28:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(179,NULL,9,'Subject for Tell a Friend','2017-12-18 13:24:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(180,NULL,9,'Subject for Tell a Friend','2018-03-26 03:42:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(181,NULL,9,'Subject for Tell a Friend','2018-04-24 18:26:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(182,NULL,9,'Subject for Tell a Friend','2017-08-30 10:59:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(183,NULL,10,'Subject for Pledge Acknowledgment','2018-03-04 19:56:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(184,NULL,9,'Subject for Tell a Friend','2018-02-21 19:46:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(185,NULL,10,'Subject for Pledge Acknowledgment','2017-11-13 22:57:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(186,NULL,10,'Subject for Pledge Acknowledgment','2018-01-13 20:53:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(187,NULL,9,'Subject for Tell a Friend','2017-06-11 19:08:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(188,NULL,9,'Subject for Tell a Friend','2017-09-19 08:38:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(189,NULL,10,'Subject for Pledge Acknowledgment','2018-05-16 10:40:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(190,NULL,9,'Subject for Tell a Friend','2018-05-14 00:10:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(191,NULL,10,'Subject for Pledge Acknowledgment','2017-08-07 21:07:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(192,NULL,10,'Subject for Pledge Acknowledgment','2017-10-18 01:49:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(193,NULL,10,'Subject for Pledge Acknowledgment','2017-12-17 17:24:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(194,NULL,10,'Subject for Pledge Acknowledgment','2017-11-11 20:38:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(195,NULL,9,'Subject for Tell a Friend','2017-08-10 12:18:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(196,NULL,9,'Subject for Tell a Friend','2018-02-15 13:41:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(197,NULL,10,'Subject for Pledge Acknowledgment','2017-10-02 21:56:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(198,NULL,9,'Subject for Tell a Friend','2017-05-31 02:38:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(199,NULL,9,'Subject for Tell a Friend','2017-10-29 06:07:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(200,NULL,10,'Subject for Pledge Acknowledgment','2017-06-25 17:09:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(201,NULL,9,'Subject for Tell a Friend','2018-05-01 20:06:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(202,NULL,9,'Subject for Tell a Friend','2017-07-19 07:27:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(203,NULL,9,'Subject for Tell a Friend','2018-05-01 21:35:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(204,NULL,9,'Subject for Tell a Friend','2017-12-19 13:46:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(205,NULL,9,'Subject for Tell a Friend','2017-09-09 12:15:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(206,NULL,10,'Subject for Pledge Acknowledgment','2018-05-13 12:37:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(207,NULL,10,'Subject for Pledge Acknowledgment','2017-07-26 21:33:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(208,NULL,10,'Subject for Pledge Acknowledgment','2017-10-03 20:28:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(209,NULL,10,'Subject for Pledge Acknowledgment','2017-12-22 15:43:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(210,NULL,9,'Subject for Tell a Friend','2018-02-26 17:07:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(211,NULL,9,'Subject for Tell a Friend','2017-07-22 20:05:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(212,NULL,10,'Subject for Pledge Acknowledgment','2017-11-27 22:58:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(213,NULL,9,'Subject for Tell a Friend','2017-11-22 00:39:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(214,NULL,10,'Subject for Pledge Acknowledgment','2017-06-16 07:04:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(215,NULL,9,'Subject for Tell a Friend','2017-05-23 10:58:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(216,NULL,9,'Subject for Tell a Friend','2018-03-08 23:56:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(217,NULL,10,'Subject for Pledge Acknowledgment','2017-12-25 08:44:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(218,NULL,9,'Subject for Tell a Friend','2017-06-11 22:28:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(219,NULL,9,'Subject for Tell a Friend','2018-05-03 11:32:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(220,NULL,9,'Subject for Tell a Friend','2018-03-11 00:25:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(221,NULL,9,'Subject for Tell a Friend','2018-04-25 17:15:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(222,NULL,10,'Subject for Pledge Acknowledgment','2017-07-09 06:28:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(223,NULL,10,'Subject for Pledge Acknowledgment','2018-04-28 17:20:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(224,NULL,9,'Subject for Tell a Friend','2017-06-30 04:15:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(225,NULL,9,'Subject for Tell a Friend','2017-11-24 14:30:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(226,NULL,9,'Subject for Tell a Friend','2018-01-19 08:10:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(227,NULL,9,'Subject for Tell a Friend','2017-07-10 00:38:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(228,NULL,9,'Subject for Tell a Friend','2018-01-14 19:24:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(229,NULL,9,'Subject for Tell a Friend','2017-08-01 08:56:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(230,NULL,10,'Subject for Pledge Acknowledgment','2017-06-27 22:36:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(231,NULL,10,'Subject for Pledge Acknowledgment','2017-12-29 23:38:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(232,NULL,10,'Subject for Pledge Acknowledgment','2017-12-03 20:18:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(233,NULL,9,'Subject for Tell a Friend','2017-08-11 22:44:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(234,NULL,10,'Subject for Pledge Acknowledgment','2017-06-07 00:23:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(235,NULL,9,'Subject for Tell a Friend','2017-06-28 04:07:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(236,NULL,9,'Subject for Tell a Friend','2017-10-11 10:19:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(237,NULL,9,'Subject for Tell a Friend','2017-12-05 03:50:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(238,NULL,10,'Subject for Pledge Acknowledgment','2017-12-20 06:04:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(239,NULL,10,'Subject for Pledge Acknowledgment','2017-08-04 00:35:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(240,NULL,9,'Subject for Tell a Friend','2017-06-22 02:29:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(241,NULL,10,'Subject for Pledge Acknowledgment','2018-04-29 03:41:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(242,NULL,10,'Subject for Pledge Acknowledgment','2018-04-11 20:20:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(243,NULL,9,'Subject for Tell a Friend','2017-09-07 03:23:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(244,NULL,9,'Subject for Tell a Friend','2018-02-15 02:55:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(245,NULL,10,'Subject for Pledge Acknowledgment','2017-08-31 19:29:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(246,NULL,9,'Subject for Tell a Friend','2017-11-18 00:53:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(247,NULL,10,'Subject for Pledge Acknowledgment','2017-05-31 22:40:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(248,NULL,10,'Subject for Pledge Acknowledgment','2017-06-03 21:33:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(249,NULL,10,'Subject for Pledge Acknowledgment','2017-09-24 05:22:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(250,NULL,9,'Subject for Tell a Friend','2018-01-09 23:51:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(251,NULL,9,'Subject for Tell a Friend','2017-10-04 04:05:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(252,NULL,10,'Subject for Pledge Acknowledgment','2017-12-05 11:32:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(253,NULL,9,'Subject for Tell a Friend','2017-06-21 05:36:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(254,NULL,9,'Subject for Tell a Friend','2017-09-02 19:49:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(255,NULL,9,'Subject for Tell a Friend','2017-08-12 07:06:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(256,NULL,9,'Subject for Tell a Friend','2018-04-07 07:28:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(257,NULL,9,'Subject for Tell a Friend','2018-02-23 09:01:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(258,NULL,10,'Subject for Pledge Acknowledgment','2017-06-30 08:59:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(259,NULL,10,'Subject for Pledge Acknowledgment','2017-11-10 16:13:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(260,NULL,10,'Subject for Pledge Acknowledgment','2017-07-04 13:40:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(261,NULL,9,'Subject for Tell a Friend','2017-09-11 03:21:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(262,NULL,9,'Subject for Tell a Friend','2018-03-04 23:03:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(263,NULL,10,'Subject for Pledge Acknowledgment','2017-10-04 00:26:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(264,NULL,10,'Subject for Pledge Acknowledgment','2017-10-29 08:04:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(265,NULL,9,'Subject for Tell a Friend','2017-08-14 02:10:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(266,NULL,9,'Subject for Tell a Friend','2018-01-05 22:11:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(267,NULL,9,'Subject for Tell a Friend','2017-12-30 14:37:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(268,NULL,9,'Subject for Tell a Friend','2018-05-06 01:05:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(269,NULL,9,'Subject for Tell a Friend','2017-06-19 19:39:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(270,NULL,10,'Subject for Pledge Acknowledgment','2018-05-06 18:42:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(271,NULL,10,'Subject for Pledge Acknowledgment','2017-05-25 10:09:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(272,NULL,10,'Subject for Pledge Acknowledgment','2018-01-20 09:00:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(273,NULL,9,'Subject for Tell a Friend','2017-06-24 08:53:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(274,NULL,10,'Subject for Pledge Acknowledgment','2017-11-05 20:48:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(275,NULL,9,'Subject for Tell a Friend','2018-05-06 19:52:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(276,NULL,9,'Subject for Tell a Friend','2017-12-08 09:21:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(277,NULL,9,'Subject for Tell a Friend','2017-12-17 15:30:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(278,NULL,10,'Subject for Pledge Acknowledgment','2017-12-17 20:42:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(279,NULL,10,'Subject for Pledge Acknowledgment','2017-10-07 17:15:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(280,NULL,9,'Subject for Tell a Friend','2017-09-25 08:17:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(281,NULL,9,'Subject for Tell a Friend','2018-03-25 12:52:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(282,NULL,10,'Subject for Pledge Acknowledgment','2017-07-14 22:16:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(283,NULL,9,'Subject for Tell a Friend','2018-04-12 18:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(284,NULL,10,'Subject for Pledge Acknowledgment','2018-02-19 02:21:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(285,NULL,10,'Subject for Pledge Acknowledgment','2018-01-04 15:26:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(286,NULL,9,'Subject for Tell a Friend','2017-11-28 13:09:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(287,NULL,9,'Subject for Tell a Friend','2018-01-08 12:59:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(288,NULL,9,'Subject for Tell a Friend','2017-08-14 16:25:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(289,NULL,10,'Subject for Pledge Acknowledgment','2017-09-14 05:50:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(290,NULL,9,'Subject for Tell a Friend','2018-01-02 08:38:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(291,NULL,9,'Subject for Tell a Friend','2017-11-09 04:32:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(292,NULL,10,'Subject for Pledge Acknowledgment','2018-04-28 16:39:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(293,NULL,9,'Subject for Tell a Friend','2017-12-21 10:17:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(294,NULL,9,'Subject for Tell a Friend','2017-09-03 23:31:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(295,NULL,9,'Subject for Tell a Friend','2018-02-01 12:52:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(296,NULL,10,'Subject for Pledge Acknowledgment','2018-03-20 10:32:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(297,NULL,10,'Subject for Pledge Acknowledgment','2017-11-24 18:53:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(298,NULL,10,'Subject for Pledge Acknowledgment','2017-07-08 06:14:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(299,NULL,10,'Subject for Pledge Acknowledgment','2018-03-23 02:33:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(300,NULL,10,'Subject for Pledge Acknowledgment','2018-04-17 00:24:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(301,NULL,9,'Subject for Tell a Friend','2017-09-26 03:03:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(302,NULL,9,'Subject for Tell a Friend','2017-09-08 16:29:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(303,NULL,10,'Subject for Pledge Acknowledgment','2017-10-02 16:47:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(304,NULL,10,'Subject for Pledge Acknowledgment','2018-01-02 00:10:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(305,NULL,10,'Subject for Pledge Acknowledgment','2017-11-27 18:30:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(306,NULL,9,'Subject for Tell a Friend','2017-08-06 22:58:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(307,NULL,10,'Subject for Pledge Acknowledgment','2017-10-28 16:44:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(308,NULL,10,'Subject for Pledge Acknowledgment','2017-10-08 21:24:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(309,NULL,10,'Subject for Pledge Acknowledgment','2018-04-04 17:22:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(310,NULL,9,'Subject for Tell a Friend','2018-04-28 22:13:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(311,NULL,9,'Subject for Tell a Friend','2017-11-11 20:18:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(312,NULL,10,'Subject for Pledge Acknowledgment','2018-05-04 13:03:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(313,NULL,10,'Subject for Pledge Acknowledgment','2017-12-16 07:18:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(314,NULL,10,'Subject for Pledge Acknowledgment','2017-08-19 19:19:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(315,NULL,9,'Subject for Tell a Friend','2017-09-23 15:14:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(316,NULL,10,'Subject for Pledge Acknowledgment','2018-01-13 06:41:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(317,NULL,10,'Subject for Pledge Acknowledgment','2017-09-24 04:30:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(318,NULL,10,'Subject for Pledge Acknowledgment','2017-07-07 21:57:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(319,NULL,9,'Subject for Tell a Friend','2017-10-01 16:13:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(320,NULL,10,'Subject for Pledge Acknowledgment','2017-05-23 04:54:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(321,NULL,10,'Subject for Pledge Acknowledgment','2017-11-02 20:36:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(322,NULL,10,'Subject for Pledge Acknowledgment','2017-11-07 12:47:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(323,NULL,10,'Subject for Pledge Acknowledgment','2017-08-15 12:20:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(324,NULL,9,'Subject for Tell a Friend','2018-04-12 03:02:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(325,NULL,9,'Subject for Tell a Friend','2017-06-22 22:51:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(326,NULL,10,'Subject for Pledge Acknowledgment','2017-06-11 22:01:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(327,NULL,10,'Subject for Pledge Acknowledgment','2017-07-25 04:51:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(328,NULL,10,'Subject for Pledge Acknowledgment','2018-02-16 11:58:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(329,NULL,10,'Subject for Pledge Acknowledgment','2018-04-10 20:01:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(330,NULL,10,'Subject for Pledge Acknowledgment','2017-08-23 09:01:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(331,NULL,10,'Subject for Pledge Acknowledgment','2017-10-31 01:47:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(332,NULL,9,'Subject for Tell a Friend','2017-10-18 16:39:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(333,NULL,10,'Subject for Pledge Acknowledgment','2017-08-24 22:19:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(334,NULL,9,'Subject for Tell a Friend','2017-12-28 18:48:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(335,NULL,9,'Subject for Tell a Friend','2017-07-21 05:40:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(336,NULL,10,'Subject for Pledge Acknowledgment','2018-04-25 01:27:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(337,NULL,10,'Subject for Pledge Acknowledgment','2018-02-20 14:09:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(338,NULL,10,'Subject for Pledge Acknowledgment','2017-07-14 09:55:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(339,NULL,9,'Subject for Tell a Friend','2017-12-03 03:54:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(340,NULL,10,'Subject for Pledge Acknowledgment','2017-11-13 02:03:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(341,NULL,9,'Subject for Tell a Friend','2017-05-31 06:02:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(342,NULL,9,'Subject for Tell a Friend','2017-11-03 02:32:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(343,NULL,10,'Subject for Pledge Acknowledgment','2017-06-18 10:55:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(344,NULL,10,'Subject for Pledge Acknowledgment','2017-12-31 23:48:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(345,NULL,10,'Subject for Pledge Acknowledgment','2017-10-23 10:54:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(346,NULL,9,'Subject for Tell a Friend','2018-01-07 01:51:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(347,NULL,10,'Subject for Pledge Acknowledgment','2017-07-22 14:18:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(348,NULL,10,'Subject for Pledge Acknowledgment','2017-05-30 14:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(349,NULL,9,'Subject for Tell a Friend','2017-10-06 07:02:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(350,NULL,10,'Subject for Pledge Acknowledgment','2017-08-05 20:00:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(351,NULL,9,'Subject for Tell a Friend','2017-09-16 11:44:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(352,NULL,9,'Subject for Tell a Friend','2017-10-25 09:30:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(353,NULL,10,'Subject for Pledge Acknowledgment','2018-03-14 22:25:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(354,NULL,10,'Subject for Pledge Acknowledgment','2018-04-25 06:30:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(355,NULL,9,'Subject for Tell a Friend','2018-05-11 04:01:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(356,NULL,9,'Subject for Tell a Friend','2017-07-20 08:38:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(357,NULL,10,'Subject for Pledge Acknowledgment','2017-11-06 13:36:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(358,NULL,10,'Subject for Pledge Acknowledgment','2017-08-14 23:58:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(359,NULL,9,'Subject for Tell a Friend','2017-09-05 09:19:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(360,NULL,9,'Subject for Tell a Friend','2018-03-27 17:06:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(361,NULL,9,'Subject for Tell a Friend','2018-01-22 11:07:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(362,NULL,9,'Subject for Tell a Friend','2017-11-23 12:21:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(363,NULL,9,'Subject for Tell a Friend','2017-07-02 07:52:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(364,NULL,9,'Subject for Tell a Friend','2018-03-20 01:40:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(365,NULL,10,'Subject for Pledge Acknowledgment','2018-01-21 15:19:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(366,NULL,9,'Subject for Tell a Friend','2017-11-04 20:17:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(367,NULL,9,'Subject for Tell a Friend','2017-12-08 02:44:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(368,NULL,9,'Subject for Tell a Friend','2017-11-01 12:20:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(369,NULL,9,'Subject for Tell a Friend','2018-01-10 16:47:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(370,NULL,9,'Subject for Tell a Friend','2017-10-26 18:13:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(371,NULL,9,'Subject for Tell a Friend','2017-06-09 06:55:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(372,NULL,9,'Subject for Tell a Friend','2018-01-13 02:21:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(373,NULL,10,'Subject for Pledge Acknowledgment','2017-11-21 22:51:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(374,NULL,10,'Subject for Pledge Acknowledgment','2017-12-31 12:17:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(375,NULL,9,'Subject for Tell a Friend','2017-05-26 21:51:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(376,NULL,9,'Subject for Tell a Friend','2018-02-25 18:30:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(377,NULL,9,'Subject for Tell a Friend','2018-04-29 10:09:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(378,NULL,9,'Subject for Tell a Friend','2018-03-26 07:39:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(379,NULL,10,'Subject for Pledge Acknowledgment','2017-09-15 11:55:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(380,NULL,9,'Subject for Tell a Friend','2017-08-04 15:08:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(381,NULL,10,'Subject for Pledge Acknowledgment','2017-12-26 11:39:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(382,NULL,9,'Subject for Tell a Friend','2017-08-22 12:33:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(383,NULL,9,'Subject for Tell a Friend','2017-06-20 10:22:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(384,NULL,9,'Subject for Tell a Friend','2018-04-11 10:10:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(385,NULL,9,'Subject for Tell a Friend','2017-07-11 14:25:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(386,NULL,10,'Subject for Pledge Acknowledgment','2018-04-09 19:53:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(387,NULL,9,'Subject for Tell a Friend','2018-04-12 10:12:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:22','2018-05-21 20:27:22'),(388,NULL,9,'Subject for Tell a Friend','2017-10-25 19:08:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(389,NULL,9,'Subject for Tell a Friend','2018-01-02 15:30:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(390,NULL,9,'Subject for Tell a Friend','2018-03-19 03:38:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(391,NULL,10,'Subject for Pledge Acknowledgment','2018-03-21 05:41:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(392,NULL,10,'Subject for Pledge Acknowledgment','2018-05-02 00:43:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(393,NULL,10,'Subject for Pledge Acknowledgment','2017-11-18 13:14:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(394,NULL,9,'Subject for Tell a Friend','2018-01-08 22:36:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(395,NULL,10,'Subject for Pledge Acknowledgment','2018-04-28 12:22:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(396,NULL,9,'Subject for Tell a Friend','2018-04-25 07:21:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(397,NULL,9,'Subject for Tell a Friend','2017-06-14 16:40:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(398,NULL,9,'Subject for Tell a Friend','2018-04-19 15:32:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(399,NULL,10,'Subject for Pledge Acknowledgment','2017-06-11 23:37:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(400,NULL,9,'Subject for Tell a Friend','2017-10-24 14:31:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(401,NULL,10,'Subject for Pledge Acknowledgment','2017-07-07 18:34:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(402,NULL,10,'Subject for Pledge Acknowledgment','2017-10-23 14:01:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(403,NULL,10,'Subject for Pledge Acknowledgment','2018-03-15 17:28:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(404,NULL,9,'Subject for Tell a Friend','2018-05-11 15:47:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(405,NULL,10,'Subject for Pledge Acknowledgment','2017-08-28 06:00:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(406,NULL,9,'Subject for Tell a Friend','2018-02-22 22:01:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(407,NULL,10,'Subject for Pledge Acknowledgment','2017-08-12 14:51:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(408,NULL,9,'Subject for Tell a Friend','2017-06-19 16:56:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(409,NULL,10,'Subject for Pledge Acknowledgment','2017-07-24 06:26:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(410,NULL,10,'Subject for Pledge Acknowledgment','2017-09-01 22:42:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(411,NULL,9,'Subject for Tell a Friend','2017-08-11 09:09:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(412,NULL,9,'Subject for Tell a Friend','2018-01-26 19:53:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(413,NULL,10,'Subject for Pledge Acknowledgment','2017-11-24 08:25:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(414,NULL,10,'Subject for Pledge Acknowledgment','2017-08-01 04:35:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(415,NULL,10,'Subject for Pledge Acknowledgment','2017-11-25 06:41:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(416,NULL,10,'Subject for Pledge Acknowledgment','2017-10-10 20:17:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(417,NULL,10,'Subject for Pledge Acknowledgment','2017-07-29 11:04:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(418,NULL,9,'Subject for Tell a Friend','2017-06-16 07:24:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(419,NULL,9,'Subject for Tell a Friend','2018-03-27 15:55:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(420,NULL,10,'Subject for Pledge Acknowledgment','2017-12-15 15:39:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(421,NULL,10,'Subject for Pledge Acknowledgment','2018-03-30 04:40:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(422,NULL,10,'Subject for Pledge Acknowledgment','2017-11-12 00:33:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(423,NULL,10,'Subject for Pledge Acknowledgment','2017-08-18 09:21:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(424,NULL,9,'Subject for Tell a Friend','2017-10-22 02:35:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(425,NULL,9,'Subject for Tell a Friend','2018-03-22 01:50:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(426,NULL,10,'Subject for Pledge Acknowledgment','2017-10-20 21:45:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(427,NULL,10,'Subject for Pledge Acknowledgment','2018-03-21 11:08:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(428,NULL,10,'Subject for Pledge Acknowledgment','2017-10-22 14:41:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(429,NULL,10,'Subject for Pledge Acknowledgment','2017-10-11 11:29:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(430,NULL,9,'Subject for Tell a Friend','2018-01-13 02:53:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(431,NULL,9,'Subject for Tell a Friend','2017-07-25 07:40:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(432,NULL,10,'Subject for Pledge Acknowledgment','2017-09-02 16:51:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(433,NULL,10,'Subject for Pledge Acknowledgment','2017-11-24 23:52:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(434,NULL,10,'Subject for Pledge Acknowledgment','2017-06-20 14:52:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(435,NULL,9,'Subject for Tell a Friend','2018-04-25 23:18:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(436,NULL,9,'Subject for Tell a Friend','2018-05-07 08:57:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(437,NULL,10,'Subject for Pledge Acknowledgment','2017-07-30 08:27:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(438,NULL,9,'Subject for Tell a Friend','2017-07-09 07:14:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(439,NULL,9,'Subject for Tell a Friend','2017-07-10 11:49:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(440,NULL,10,'Subject for Pledge Acknowledgment','2017-06-08 11:13:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(441,NULL,9,'Subject for Tell a Friend','2018-01-29 08:25:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(442,NULL,10,'Subject for Pledge Acknowledgment','2018-02-17 04:28:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(443,NULL,9,'Subject for Tell a Friend','2017-06-07 19:59:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(444,NULL,10,'Subject for Pledge Acknowledgment','2018-02-02 15:33:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(445,NULL,10,'Subject for Pledge Acknowledgment','2018-03-09 19:47:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(446,NULL,10,'Subject for Pledge Acknowledgment','2018-04-20 01:27:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(447,NULL,10,'Subject for Pledge Acknowledgment','2018-03-02 21:47:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(448,NULL,9,'Subject for Tell a Friend','2018-02-11 05:19:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(449,NULL,9,'Subject for Tell a Friend','2018-02-24 07:09:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(450,NULL,10,'Subject for Pledge Acknowledgment','2017-06-12 00:30:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(464,1,7,'General','2018-05-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(465,2,7,'Student','2018-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,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(466,3,7,'General','2018-05-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(467,4,7,'Student','2018-05-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(468,5,7,'General','2016-04-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(469,6,7,'Student','2018-05-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(470,7,7,'General','2018-05-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(471,8,7,'Student','2018-05-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(472,9,7,'General','2018-05-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(473,10,7,'Student','2017-05-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(474,11,7,'Lifetime','2018-05-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(475,12,7,'Student','2018-05-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(476,13,7,'General','2018-05-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(477,14,7,'Student','2018-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,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(478,15,7,'Student','2017-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,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(479,16,7,'Student','2018-05-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(480,17,7,'General','2018-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,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(481,18,7,'Student','2018-05-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(482,19,7,'General','2018-05-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(483,20,7,'General','2015-12-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(484,21,7,'General','2018-05-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(485,22,7,'Lifetime','2018-04-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(486,23,7,'General','2018-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(487,24,7,'Student','2018-04-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(488,25,7,'Student','2017-04-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(489,26,7,'Student','2018-04-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(490,27,7,'General','2018-04-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(491,28,7,'Student','2018-04-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(492,29,7,'General','2018-04-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(493,30,7,'Student','2017-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(495,15,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(497,17,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(498,18,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(499,19,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(501,21,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(503,23,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(504,24,6,'$ 1200.00 - Lifetime Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(505,25,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(507,27,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(508,28,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(510,30,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(512,32,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(513,33,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(514,34,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(515,35,6,'$ 1200.00 - Lifetime Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(516,36,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(518,38,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(520,40,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(522,42,6,'$ 100.00 - General Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(523,43,6,'$ 50.00 - Student Membership: Offline signup','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(525,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(526,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(527,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(528,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(529,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(530,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(531,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(532,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(533,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(534,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(535,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(536,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(537,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(538,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(539,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(540,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(541,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(542,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(543,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(544,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(545,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(546,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(547,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(548,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(549,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(550,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(551,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(552,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(553,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(554,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(555,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(556,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(557,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(558,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(559,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(560,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(561,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(562,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(563,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(564,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(565,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(566,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(567,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(568,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(569,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(570,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(571,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(572,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(573,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(574,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(575,45,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(576,46,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(577,47,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(578,48,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(579,49,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(580,50,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(581,51,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(582,52,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(583,53,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(584,54,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(585,55,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(586,56,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(587,57,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(588,58,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(589,59,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(590,60,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(591,61,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(592,62,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(593,63,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(594,64,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(595,65,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(596,66,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(598,68,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(599,69,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(600,70,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(608,78,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(609,79,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(610,80,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(611,81,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(612,82,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(618,88,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(619,89,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(620,90,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(621,91,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(622,92,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'),(624,94,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-05-22 01:57:23',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-05-21 20:27:23','2018-05-21 20:27:23'); +INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES (1,NULL,9,'Subject for Tell a Friend','2018-06-23 21:41:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(2,NULL,9,'Subject for Tell a Friend','2017-09-08 08:18:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(3,NULL,10,'Subject for Pledge Acknowledgment','2018-05-08 19:17:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(4,NULL,10,'Subject for Pledge Acknowledgment','2018-02-06 16:22:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(5,NULL,10,'Subject for Pledge Acknowledgment','2017-09-10 21:53:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(6,NULL,10,'Subject for Pledge Acknowledgment','2018-03-02 20:07:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(7,NULL,9,'Subject for Tell a Friend','2018-04-09 22:33:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(8,NULL,10,'Subject for Pledge Acknowledgment','2017-08-25 06:09:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(9,NULL,10,'Subject for Pledge Acknowledgment','2018-04-30 06:04:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(10,NULL,10,'Subject for Pledge Acknowledgment','2018-02-05 01:14:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(11,NULL,10,'Subject for Pledge Acknowledgment','2018-01-27 20:41:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(12,NULL,9,'Subject for Tell a Friend','2017-08-28 08:27:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(13,NULL,10,'Subject for Pledge Acknowledgment','2018-01-27 22:04:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(14,NULL,10,'Subject for Pledge Acknowledgment','2018-04-02 21:01:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(15,NULL,10,'Subject for Pledge Acknowledgment','2018-05-16 02:22:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(16,NULL,10,'Subject for Pledge Acknowledgment','2017-12-27 13:14:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(17,NULL,9,'Subject for Tell a Friend','2017-11-12 23:43:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(18,NULL,9,'Subject for Tell a Friend','2018-01-12 13:49:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(19,NULL,10,'Subject for Pledge Acknowledgment','2018-08-02 14:23:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(20,NULL,9,'Subject for Tell a Friend','2018-08-19 05:47:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(21,NULL,9,'Subject for Tell a Friend','2017-09-07 05:35:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(22,NULL,10,'Subject for Pledge Acknowledgment','2018-06-04 04:27:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(23,NULL,10,'Subject for Pledge Acknowledgment','2018-05-13 18:24:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(24,NULL,9,'Subject for Tell a Friend','2017-09-05 03:13:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(25,NULL,10,'Subject for Pledge Acknowledgment','2018-06-07 15:15:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(26,NULL,10,'Subject for Pledge Acknowledgment','2018-04-29 23:39:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(27,NULL,9,'Subject for Tell a Friend','2017-11-19 15:19:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(28,NULL,10,'Subject for Pledge Acknowledgment','2018-05-02 16:24:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(29,NULL,10,'Subject for Pledge Acknowledgment','2017-12-30 02:56:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(30,NULL,10,'Subject for Pledge Acknowledgment','2017-11-10 16:24:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(31,NULL,9,'Subject for Tell a Friend','2018-04-21 18:37:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(32,NULL,10,'Subject for Pledge Acknowledgment','2017-08-31 14:01:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(33,NULL,10,'Subject for Pledge Acknowledgment','2018-04-26 10:12:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(34,NULL,9,'Subject for Tell a Friend','2018-01-08 02:50:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(35,NULL,9,'Subject for Tell a Friend','2017-08-24 09:33:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(36,NULL,10,'Subject for Pledge Acknowledgment','2017-11-03 23:35:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(37,NULL,9,'Subject for Tell a Friend','2018-03-11 02:56:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(38,NULL,10,'Subject for Pledge Acknowledgment','2018-05-26 15:24:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(39,NULL,10,'Subject for Pledge Acknowledgment','2017-11-08 19:25:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(40,NULL,10,'Subject for Pledge Acknowledgment','2018-01-10 09:27:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(41,NULL,9,'Subject for Tell a Friend','2018-03-01 08:29:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(42,NULL,9,'Subject for Tell a Friend','2017-12-01 19:26:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(43,NULL,10,'Subject for Pledge Acknowledgment','2018-06-15 20:22:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(44,NULL,9,'Subject for Tell a Friend','2018-06-26 01:40:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(45,NULL,10,'Subject for Pledge Acknowledgment','2017-11-24 18:56:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(46,NULL,9,'Subject for Tell a Friend','2018-02-04 22:01:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(47,NULL,9,'Subject for Tell a Friend','2018-06-22 09:12:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(48,NULL,10,'Subject for Pledge Acknowledgment','2017-12-11 16:50:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(49,NULL,10,'Subject for Pledge Acknowledgment','2018-02-09 16:24:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(50,NULL,9,'Subject for Tell a Friend','2018-06-01 21:01:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(51,NULL,9,'Subject for Tell a Friend','2018-07-30 17:15:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(52,NULL,10,'Subject for Pledge Acknowledgment','2017-09-01 22:45:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(53,NULL,10,'Subject for Pledge Acknowledgment','2018-05-09 18:26:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(54,NULL,10,'Subject for Pledge Acknowledgment','2018-05-23 09:34:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(55,NULL,9,'Subject for Tell a Friend','2018-05-29 13:03:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(56,NULL,10,'Subject for Pledge Acknowledgment','2018-08-09 20:44:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(57,NULL,9,'Subject for Tell a Friend','2018-08-11 18:38:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(58,NULL,9,'Subject for Tell a Friend','2017-09-07 14:17:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(59,NULL,9,'Subject for Tell a Friend','2018-03-03 03:16:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(60,NULL,9,'Subject for Tell a Friend','2018-01-28 01:14:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(61,NULL,10,'Subject for Pledge Acknowledgment','2018-01-11 22:55:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(62,NULL,9,'Subject for Tell a Friend','2018-03-29 03:12:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(63,NULL,10,'Subject for Pledge Acknowledgment','2018-04-25 10:02:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(64,NULL,9,'Subject for Tell a Friend','2017-11-26 09:26:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(65,NULL,9,'Subject for Tell a Friend','2018-07-26 17:55:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(66,NULL,9,'Subject for Tell a Friend','2018-04-28 17:08:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(67,NULL,9,'Subject for Tell a Friend','2018-08-02 20:41:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(68,NULL,9,'Subject for Tell a Friend','2018-02-07 23:23:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(69,NULL,9,'Subject for Tell a Friend','2017-10-04 10:12:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(70,NULL,9,'Subject for Tell a Friend','2018-02-03 00:28:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(71,NULL,10,'Subject for Pledge Acknowledgment','2018-01-20 13:07:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(72,NULL,9,'Subject for Tell a Friend','2018-06-22 02:53:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(73,NULL,9,'Subject for Tell a Friend','2017-11-13 23:37:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(74,NULL,10,'Subject for Pledge Acknowledgment','2018-01-04 07:14:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(75,NULL,10,'Subject for Pledge Acknowledgment','2017-11-24 21:55:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(76,NULL,9,'Subject for Tell a Friend','2018-05-22 12:13:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(77,NULL,10,'Subject for Pledge Acknowledgment','2017-12-09 00:19:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(78,NULL,10,'Subject for Pledge Acknowledgment','2018-01-15 17:43:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(79,NULL,10,'Subject for Pledge Acknowledgment','2017-08-23 23:55:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(80,NULL,10,'Subject for Pledge Acknowledgment','2018-04-10 17:35:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(81,NULL,10,'Subject for Pledge Acknowledgment','2018-08-21 05:48:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(82,NULL,10,'Subject for Pledge Acknowledgment','2017-12-29 07:13:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(83,NULL,9,'Subject for Tell a Friend','2017-10-03 12:22:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(84,NULL,10,'Subject for Pledge Acknowledgment','2017-10-22 08:34:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(85,NULL,10,'Subject for Pledge Acknowledgment','2018-02-21 09:51:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(86,NULL,10,'Subject for Pledge Acknowledgment','2018-02-06 08:07:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(87,NULL,9,'Subject for Tell a Friend','2018-01-15 13:26:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(88,NULL,9,'Subject for Tell a Friend','2018-05-02 11:48:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(89,NULL,9,'Subject for Tell a Friend','2018-04-13 12:03:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(90,NULL,9,'Subject for Tell a Friend','2018-03-19 01:38:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(91,NULL,10,'Subject for Pledge Acknowledgment','2018-02-11 18:04:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(92,NULL,9,'Subject for Tell a Friend','2017-12-14 01:28:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(93,NULL,10,'Subject for Pledge Acknowledgment','2017-08-28 18:17:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(94,NULL,9,'Subject for Tell a Friend','2018-05-19 10:58:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(95,NULL,10,'Subject for Pledge Acknowledgment','2018-06-27 00:21:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(96,NULL,10,'Subject for Pledge Acknowledgment','2017-11-10 14:42:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(97,NULL,10,'Subject for Pledge Acknowledgment','2018-04-18 21:00:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(98,NULL,9,'Subject for Tell a Friend','2018-02-03 21:44:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(99,NULL,9,'Subject for Tell a Friend','2017-10-14 08:57:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(100,NULL,10,'Subject for Pledge Acknowledgment','2017-11-25 02:43:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(101,NULL,10,'Subject for Pledge Acknowledgment','2017-11-18 04:58:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(102,NULL,9,'Subject for Tell a Friend','2018-02-08 10:09:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(103,NULL,10,'Subject for Pledge Acknowledgment','2018-04-28 07:49:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(104,NULL,9,'Subject for Tell a Friend','2018-05-19 05:44:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(105,NULL,10,'Subject for Pledge Acknowledgment','2018-01-31 14:32:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(106,NULL,10,'Subject for Pledge Acknowledgment','2018-08-20 14:48:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(107,NULL,9,'Subject for Tell a Friend','2017-11-14 09:00:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(108,NULL,10,'Subject for Pledge Acknowledgment','2017-11-12 18:27:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(109,NULL,10,'Subject for Pledge Acknowledgment','2018-04-08 04:50:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(110,NULL,9,'Subject for Tell a Friend','2018-05-19 22:33:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(111,NULL,9,'Subject for Tell a Friend','2017-11-27 16:00:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(112,NULL,10,'Subject for Pledge Acknowledgment','2018-05-08 14:08:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(113,NULL,9,'Subject for Tell a Friend','2017-12-12 00:03:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(114,NULL,10,'Subject for Pledge Acknowledgment','2018-03-01 17:59:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(115,NULL,10,'Subject for Pledge Acknowledgment','2017-11-30 10:09:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(116,NULL,10,'Subject for Pledge Acknowledgment','2017-10-24 13:42:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(117,NULL,9,'Subject for Tell a Friend','2017-12-16 01:11:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(118,NULL,9,'Subject for Tell a Friend','2018-01-28 14:10:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(119,NULL,9,'Subject for Tell a Friend','2018-08-19 22:16:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(120,NULL,10,'Subject for Pledge Acknowledgment','2017-10-27 12:05:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(121,NULL,10,'Subject for Pledge Acknowledgment','2018-04-05 17:12:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(122,NULL,10,'Subject for Pledge Acknowledgment','2017-12-11 04:45:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(123,NULL,9,'Subject for Tell a Friend','2017-12-29 15:56:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(124,NULL,10,'Subject for Pledge Acknowledgment','2018-03-13 11:29:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(125,NULL,10,'Subject for Pledge Acknowledgment','2017-11-10 10:52:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(126,NULL,9,'Subject for Tell a Friend','2017-08-27 05:11:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(127,NULL,10,'Subject for Pledge Acknowledgment','2017-12-31 02:48:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(128,NULL,10,'Subject for Pledge Acknowledgment','2017-11-10 08:54:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(129,NULL,10,'Subject for Pledge Acknowledgment','2017-09-02 12:18:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(130,NULL,9,'Subject for Tell a Friend','2018-05-22 14:20:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(131,NULL,9,'Subject for Tell a Friend','2017-09-27 12:26:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(132,NULL,10,'Subject for Pledge Acknowledgment','2017-10-09 13:43:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(133,NULL,9,'Subject for Tell a Friend','2017-08-28 02:04:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(134,NULL,10,'Subject for Pledge Acknowledgment','2017-09-04 19:34:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(135,NULL,9,'Subject for Tell a Friend','2017-12-02 10:37:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(136,NULL,10,'Subject for Pledge Acknowledgment','2017-09-29 21:30:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(137,NULL,10,'Subject for Pledge Acknowledgment','2017-11-28 07:33:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(138,NULL,9,'Subject for Tell a Friend','2017-10-28 22:57:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(139,NULL,9,'Subject for Tell a Friend','2018-02-16 00:36:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(140,NULL,10,'Subject for Pledge Acknowledgment','2018-02-28 14:34:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(141,NULL,9,'Subject for Tell a Friend','2017-11-19 07:21:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(142,NULL,9,'Subject for Tell a Friend','2018-05-13 10:01:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(143,NULL,10,'Subject for Pledge Acknowledgment','2018-06-14 05:58:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(144,NULL,9,'Subject for Tell a Friend','2017-11-10 02:55:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(145,NULL,9,'Subject for Tell a Friend','2018-05-08 09:34:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(146,NULL,9,'Subject for Tell a Friend','2018-03-30 05:24:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(147,NULL,9,'Subject for Tell a Friend','2018-05-08 08:04:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(148,NULL,10,'Subject for Pledge Acknowledgment','2018-03-30 00:32:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(149,NULL,10,'Subject for Pledge Acknowledgment','2018-05-05 18:58:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(150,NULL,9,'Subject for Tell a Friend','2017-08-25 14:25:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(151,NULL,9,'Subject for Tell a Friend','2018-02-11 14:35:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(152,NULL,10,'Subject for Pledge Acknowledgment','2017-10-15 12:58:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(153,NULL,10,'Subject for Pledge Acknowledgment','2018-04-19 17:35:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(154,NULL,9,'Subject for Tell a Friend','2017-11-23 04:01:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(155,NULL,10,'Subject for Pledge Acknowledgment','2018-08-11 23:51:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(156,NULL,10,'Subject for Pledge Acknowledgment','2017-08-30 07:01:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(157,NULL,10,'Subject for Pledge Acknowledgment','2018-03-06 08:20:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(158,NULL,9,'Subject for Tell a Friend','2018-08-16 21:23:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(159,NULL,9,'Subject for Tell a Friend','2018-02-15 06:06:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(160,NULL,9,'Subject for Tell a Friend','2018-02-21 05:05:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(161,NULL,9,'Subject for Tell a Friend','2018-02-24 06:33:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(162,NULL,9,'Subject for Tell a Friend','2017-10-05 21:58:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(163,NULL,10,'Subject for Pledge Acknowledgment','2018-02-17 23:14:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(164,NULL,10,'Subject for Pledge Acknowledgment','2018-04-29 13:40:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(165,NULL,9,'Subject for Tell a Friend','2018-04-18 17:04:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(166,NULL,10,'Subject for Pledge Acknowledgment','2018-05-22 12:42:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(167,NULL,9,'Subject for Tell a Friend','2017-11-25 08:24:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(168,NULL,9,'Subject for Tell a Friend','2017-09-20 06:40:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(169,NULL,10,'Subject for Pledge Acknowledgment','2018-06-13 10:59:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(170,NULL,9,'Subject for Tell a Friend','2018-01-20 20:06:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(171,NULL,9,'Subject for Tell a Friend','2017-10-05 08:54:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(172,NULL,10,'Subject for Pledge Acknowledgment','2017-09-25 11:57:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(173,NULL,9,'Subject for Tell a Friend','2018-02-10 20:02:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(174,NULL,9,'Subject for Tell a Friend','2018-06-11 11:21:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(175,NULL,9,'Subject for Tell a Friend','2018-08-01 12:05:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(176,NULL,10,'Subject for Pledge Acknowledgment','2017-11-01 12:05:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(177,NULL,10,'Subject for Pledge Acknowledgment','2017-10-19 09:38:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(178,NULL,10,'Subject for Pledge Acknowledgment','2018-03-24 03:21:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(179,NULL,10,'Subject for Pledge Acknowledgment','2018-06-05 15:55:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(180,NULL,9,'Subject for Tell a Friend','2018-04-09 16:35:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(181,NULL,9,'Subject for Tell a Friend','2018-04-13 01:44:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(182,NULL,10,'Subject for Pledge Acknowledgment','2017-09-15 20:17:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(183,NULL,9,'Subject for Tell a Friend','2017-08-23 12:35:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(184,NULL,9,'Subject for Tell a Friend','2017-09-16 01:40:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(185,NULL,9,'Subject for Tell a Friend','2018-03-31 13:13:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(186,NULL,10,'Subject for Pledge Acknowledgment','2018-04-03 16:46:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(187,NULL,9,'Subject for Tell a Friend','2018-08-19 08:33:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(188,NULL,9,'Subject for Tell a Friend','2017-12-17 04:11:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(189,NULL,9,'Subject for Tell a Friend','2018-06-30 05:11:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(190,NULL,9,'Subject for Tell a Friend','2018-02-08 08:02:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(191,NULL,9,'Subject for Tell a Friend','2017-08-27 16:23:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(192,NULL,10,'Subject for Pledge Acknowledgment','2018-02-15 02:37:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(193,NULL,10,'Subject for Pledge Acknowledgment','2018-01-15 19:00:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(194,NULL,10,'Subject for Pledge Acknowledgment','2018-07-21 21:58:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(195,NULL,10,'Subject for Pledge Acknowledgment','2018-05-31 17:23:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(196,NULL,10,'Subject for Pledge Acknowledgment','2018-03-12 11:06:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(197,NULL,9,'Subject for Tell a Friend','2017-08-25 23:54:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(198,NULL,9,'Subject for Tell a Friend','2018-02-28 03:45:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(199,NULL,10,'Subject for Pledge Acknowledgment','2018-06-18 20:39:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(200,NULL,9,'Subject for Tell a Friend','2017-11-20 08:24:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(201,NULL,10,'Subject for Pledge Acknowledgment','2018-03-13 20:56:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(202,NULL,10,'Subject for Pledge Acknowledgment','2018-01-09 05:50:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(203,NULL,9,'Subject for Tell a Friend','2018-07-30 03:45:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(204,NULL,9,'Subject for Tell a Friend','2018-07-07 13:26:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(205,NULL,10,'Subject for Pledge Acknowledgment','2018-04-25 06:58:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(206,NULL,9,'Subject for Tell a Friend','2018-05-06 19:57:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(207,NULL,10,'Subject for Pledge Acknowledgment','2018-03-04 15:05:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(208,NULL,10,'Subject for Pledge Acknowledgment','2018-07-31 03:44:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(209,NULL,9,'Subject for Tell a Friend','2017-12-23 23:41:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(210,NULL,10,'Subject for Pledge Acknowledgment','2018-02-11 12:03:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(211,NULL,9,'Subject for Tell a Friend','2017-12-06 18:15:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(212,NULL,9,'Subject for Tell a Friend','2017-11-26 17:47:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(213,NULL,10,'Subject for Pledge Acknowledgment','2018-01-11 21:07:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(214,NULL,9,'Subject for Tell a Friend','2018-06-09 05:29:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(215,NULL,10,'Subject for Pledge Acknowledgment','2018-04-01 07:42:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(216,NULL,10,'Subject for Pledge Acknowledgment','2018-02-03 09:38:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(217,NULL,9,'Subject for Tell a Friend','2018-02-16 05:49:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(218,NULL,9,'Subject for Tell a Friend','2018-05-26 20:55:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(219,NULL,9,'Subject for Tell a Friend','2018-03-05 15:58:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(220,NULL,10,'Subject for Pledge Acknowledgment','2018-03-06 23:42:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(221,NULL,9,'Subject for Tell a Friend','2017-11-17 22:31:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(222,NULL,9,'Subject for Tell a Friend','2017-09-21 22:43:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(223,NULL,10,'Subject for Pledge Acknowledgment','2018-06-13 06:18:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(224,NULL,10,'Subject for Pledge Acknowledgment','2018-05-04 09:48:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(225,NULL,9,'Subject for Tell a Friend','2018-07-30 10:04:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(226,NULL,9,'Subject for Tell a Friend','2018-05-22 11:37:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(227,NULL,10,'Subject for Pledge Acknowledgment','2017-10-11 19:51:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(228,NULL,10,'Subject for Pledge Acknowledgment','2018-04-23 19:45:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(229,NULL,10,'Subject for Pledge Acknowledgment','2017-12-20 14:18:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(230,NULL,9,'Subject for Tell a Friend','2018-01-16 13:54:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(231,NULL,9,'Subject for Tell a Friend','2017-12-28 05:21:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(232,NULL,10,'Subject for Pledge Acknowledgment','2018-03-04 22:08:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(233,NULL,10,'Subject for Pledge Acknowledgment','2018-05-09 22:06:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(234,NULL,9,'Subject for Tell a Friend','2018-01-14 22:02:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(235,NULL,9,'Subject for Tell a Friend','2017-10-21 12:00:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(236,NULL,10,'Subject for Pledge Acknowledgment','2018-08-12 07:49:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(237,NULL,10,'Subject for Pledge Acknowledgment','2018-05-24 05:06:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(238,NULL,9,'Subject for Tell a Friend','2017-09-06 20:32:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(239,NULL,9,'Subject for Tell a Friend','2017-12-02 18:12:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(240,NULL,10,'Subject for Pledge Acknowledgment','2017-12-15 20:56:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(241,NULL,10,'Subject for Pledge Acknowledgment','2017-09-30 17:52:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(242,NULL,9,'Subject for Tell a Friend','2017-09-12 08:28:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(243,NULL,10,'Subject for Pledge Acknowledgment','2017-12-09 21:39:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(244,NULL,9,'Subject for Tell a Friend','2017-09-16 11:53:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(245,NULL,9,'Subject for Tell a Friend','2017-10-04 15:30:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(246,NULL,10,'Subject for Pledge Acknowledgment','2018-03-31 06:09:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(247,NULL,9,'Subject for Tell a Friend','2018-03-14 08:05:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(248,NULL,9,'Subject for Tell a Friend','2018-04-07 20:35:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(249,NULL,10,'Subject for Pledge Acknowledgment','2017-10-07 01:10:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(250,NULL,9,'Subject for Tell a Friend','2018-06-01 10:13:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(251,NULL,9,'Subject for Tell a Friend','2017-09-22 19:47:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(252,NULL,10,'Subject for Pledge Acknowledgment','2018-04-29 17:50:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(253,NULL,9,'Subject for Tell a Friend','2018-02-16 12:13:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(254,NULL,10,'Subject for Pledge Acknowledgment','2018-03-13 18:39:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(255,NULL,10,'Subject for Pledge Acknowledgment','2018-04-27 04:39:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(256,NULL,10,'Subject for Pledge Acknowledgment','2018-08-15 19:47:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(257,NULL,9,'Subject for Tell a Friend','2018-07-10 10:15:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(258,NULL,10,'Subject for Pledge Acknowledgment','2018-06-17 23:01:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(259,NULL,9,'Subject for Tell a Friend','2018-04-24 21:44:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(260,NULL,10,'Subject for Pledge Acknowledgment','2018-02-10 11:16:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(261,NULL,10,'Subject for Pledge Acknowledgment','2018-05-26 22:22:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(262,NULL,10,'Subject for Pledge Acknowledgment','2018-07-16 19:37:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(263,NULL,9,'Subject for Tell a Friend','2018-04-30 19:24:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(264,NULL,9,'Subject for Tell a Friend','2018-05-14 08:05:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(265,NULL,9,'Subject for Tell a Friend','2017-09-13 10:50:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(266,NULL,9,'Subject for Tell a Friend','2017-09-14 09:47:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(267,NULL,10,'Subject for Pledge Acknowledgment','2017-12-23 20:11:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(268,NULL,9,'Subject for Tell a Friend','2018-06-17 23:48:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(269,NULL,10,'Subject for Pledge Acknowledgment','2018-05-15 20:40:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(270,NULL,9,'Subject for Tell a Friend','2018-02-04 15:07:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(271,NULL,10,'Subject for Pledge Acknowledgment','2017-11-28 03:44:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(272,NULL,9,'Subject for Tell a Friend','2017-10-31 08:27:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(273,NULL,9,'Subject for Tell a Friend','2018-04-13 02:24:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(274,NULL,10,'Subject for Pledge Acknowledgment','2017-11-14 13:48:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(275,NULL,10,'Subject for Pledge Acknowledgment','2018-07-30 20:49:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(276,NULL,10,'Subject for Pledge Acknowledgment','2018-05-08 18:24:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(277,NULL,10,'Subject for Pledge Acknowledgment','2018-06-20 00:17:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(278,NULL,10,'Subject for Pledge Acknowledgment','2018-05-03 22:42:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(279,NULL,10,'Subject for Pledge Acknowledgment','2017-11-27 08:21:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(280,NULL,10,'Subject for Pledge Acknowledgment','2018-03-05 03:40:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(281,NULL,9,'Subject for Tell a Friend','2018-08-16 06:31:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(282,NULL,9,'Subject for Tell a Friend','2017-12-14 02:19:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(283,NULL,9,'Subject for Tell a Friend','2018-07-16 15:28:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(284,NULL,10,'Subject for Pledge Acknowledgment','2018-05-03 01:46:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(285,NULL,9,'Subject for Tell a Friend','2017-10-31 06:12:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(286,NULL,10,'Subject for Pledge Acknowledgment','2018-01-12 02:03:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(287,NULL,10,'Subject for Pledge Acknowledgment','2018-01-05 12:43:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(288,NULL,9,'Subject for Tell a Friend','2018-01-25 14:07:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(289,NULL,10,'Subject for Pledge Acknowledgment','2018-06-06 23:56:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(290,NULL,10,'Subject for Pledge Acknowledgment','2018-04-20 01:56:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(291,NULL,9,'Subject for Tell a Friend','2017-11-28 23:29:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(292,NULL,10,'Subject for Pledge Acknowledgment','2018-05-21 20:16:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(293,NULL,10,'Subject for Pledge Acknowledgment','2018-05-13 03:02:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(294,NULL,10,'Subject for Pledge Acknowledgment','2018-06-02 07:50:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(295,NULL,9,'Subject for Tell a Friend','2017-11-30 13:58:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(296,NULL,9,'Subject for Tell a Friend','2018-02-24 13:05:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(297,NULL,9,'Subject for Tell a Friend','2018-02-20 01:36:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(298,NULL,10,'Subject for Pledge Acknowledgment','2017-12-10 20:54:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(299,NULL,9,'Subject for Tell a Friend','2017-11-27 19:18:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(300,NULL,10,'Subject for Pledge Acknowledgment','2018-04-15 00:50:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(301,NULL,10,'Subject for Pledge Acknowledgment','2018-07-25 19:30:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(302,NULL,9,'Subject for Tell a Friend','2018-03-18 23:16:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(303,NULL,10,'Subject for Pledge Acknowledgment','2018-03-24 09:28:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(304,NULL,10,'Subject for Pledge Acknowledgment','2017-10-01 22:40:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(305,NULL,9,'Subject for Tell a Friend','2018-05-13 02:27:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(306,NULL,9,'Subject for Tell a Friend','2017-09-10 19:56:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(307,NULL,10,'Subject for Pledge Acknowledgment','2018-08-10 17:32:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(308,NULL,10,'Subject for Pledge Acknowledgment','2018-07-24 12:52:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(309,NULL,9,'Subject for Tell a Friend','2018-05-23 08:12:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(310,NULL,9,'Subject for Tell a Friend','2017-12-23 17:20:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(311,NULL,9,'Subject for Tell a Friend','2018-06-13 05:07:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(312,NULL,10,'Subject for Pledge Acknowledgment','2018-05-28 00:02:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(313,NULL,9,'Subject for Tell a Friend','2018-05-09 14:16:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(314,NULL,10,'Subject for Pledge Acknowledgment','2018-07-09 00:25:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(315,NULL,9,'Subject for Tell a Friend','2018-04-04 18:35:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(316,NULL,9,'Subject for Tell a Friend','2018-07-25 15:03:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(317,NULL,9,'Subject for Tell a Friend','2018-06-11 14:47:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(318,NULL,10,'Subject for Pledge Acknowledgment','2017-10-19 11:36:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(319,NULL,9,'Subject for Tell a Friend','2017-08-27 22:37:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(320,NULL,10,'Subject for Pledge Acknowledgment','2018-06-23 15:56:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(321,NULL,9,'Subject for Tell a Friend','2017-10-21 11:06:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(322,NULL,9,'Subject for Tell a Friend','2017-11-01 17:33:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(323,NULL,9,'Subject for Tell a Friend','2017-10-20 04:15:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(324,NULL,9,'Subject for Tell a Friend','2018-04-28 04:31:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(325,NULL,10,'Subject for Pledge Acknowledgment','2018-04-04 01:30:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(326,NULL,10,'Subject for Pledge Acknowledgment','2018-06-26 00:43:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(327,NULL,9,'Subject for Tell a Friend','2017-09-20 09:02:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(328,NULL,9,'Subject for Tell a Friend','2017-09-01 19:02:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(329,NULL,9,'Subject for Tell a Friend','2018-05-08 22:15:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(330,NULL,10,'Subject for Pledge Acknowledgment','2018-02-19 06:58:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(331,NULL,9,'Subject for Tell a Friend','2018-06-30 23:30:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(332,NULL,10,'Subject for Pledge Acknowledgment','2018-08-20 05:57:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(333,NULL,10,'Subject for Pledge Acknowledgment','2018-06-23 05:05:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(334,NULL,10,'Subject for Pledge Acknowledgment','2017-09-20 05:10:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(335,NULL,10,'Subject for Pledge Acknowledgment','2018-01-06 13:18:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(336,NULL,10,'Subject for Pledge Acknowledgment','2018-05-27 07:21:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(337,NULL,10,'Subject for Pledge Acknowledgment','2018-05-18 00:58:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(338,NULL,9,'Subject for Tell a Friend','2017-11-04 01:41:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(339,NULL,10,'Subject for Pledge Acknowledgment','2018-04-15 10:04:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(340,NULL,9,'Subject for Tell a Friend','2018-02-02 13:14:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(341,NULL,9,'Subject for Tell a Friend','2018-03-16 11:12:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(342,NULL,9,'Subject for Tell a Friend','2018-06-12 07:04:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(343,NULL,9,'Subject for Tell a Friend','2018-01-23 08:30:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(344,NULL,10,'Subject for Pledge Acknowledgment','2018-01-04 08:24:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(345,NULL,9,'Subject for Tell a Friend','2018-08-11 06:19:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(346,NULL,10,'Subject for Pledge Acknowledgment','2017-09-05 02:40:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(347,NULL,10,'Subject for Pledge Acknowledgment','2018-03-05 11:23:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(348,NULL,9,'Subject for Tell a Friend','2017-12-30 10:42:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(349,NULL,10,'Subject for Pledge Acknowledgment','2017-09-27 17:29:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(350,NULL,10,'Subject for Pledge Acknowledgment','2018-03-10 23:45:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(351,NULL,10,'Subject for Pledge Acknowledgment','2018-08-11 04:18:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(352,NULL,9,'Subject for Tell a Friend','2018-02-06 15:53:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(353,NULL,10,'Subject for Pledge Acknowledgment','2017-12-09 07:13:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(354,NULL,10,'Subject for Pledge Acknowledgment','2018-05-27 04:11:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(355,NULL,9,'Subject for Tell a Friend','2018-06-02 11:51:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(356,NULL,10,'Subject for Pledge Acknowledgment','2017-11-07 11:49:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(357,NULL,10,'Subject for Pledge Acknowledgment','2018-04-15 15:28:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(358,NULL,9,'Subject for Tell a Friend','2017-12-21 20:12:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(359,NULL,9,'Subject for Tell a Friend','2018-04-15 14:36:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(360,NULL,10,'Subject for Pledge Acknowledgment','2018-03-27 00:12:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(361,NULL,9,'Subject for Tell a Friend','2018-01-10 02:43:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(362,NULL,9,'Subject for Tell a Friend','2018-01-07 02:05:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(363,NULL,9,'Subject for Tell a Friend','2017-12-06 15:28:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(364,NULL,9,'Subject for Tell a Friend','2017-11-19 14:34:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(365,NULL,9,'Subject for Tell a Friend','2017-11-26 17:07:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(366,NULL,9,'Subject for Tell a Friend','2017-11-13 01:50:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(367,NULL,9,'Subject for Tell a Friend','2018-03-22 18:04:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(368,NULL,9,'Subject for Tell a Friend','2017-09-06 09:33:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(369,NULL,9,'Subject for Tell a Friend','2018-04-11 14:36:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(370,NULL,10,'Subject for Pledge Acknowledgment','2018-07-21 00:32:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(371,NULL,10,'Subject for Pledge Acknowledgment','2017-12-24 05:38:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(372,NULL,10,'Subject for Pledge Acknowledgment','2017-12-21 07:40:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(373,NULL,9,'Subject for Tell a Friend','2017-10-20 14:27:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(374,NULL,10,'Subject for Pledge Acknowledgment','2017-11-27 10:46:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(375,NULL,9,'Subject for Tell a Friend','2018-06-06 13:08:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(376,NULL,9,'Subject for Tell a Friend','2018-03-28 08:43:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(377,NULL,10,'Subject for Pledge Acknowledgment','2018-01-18 03:28:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(378,NULL,10,'Subject for Pledge Acknowledgment','2018-03-26 14:23:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(379,NULL,10,'Subject for Pledge Acknowledgment','2018-07-05 18:19:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(380,NULL,9,'Subject for Tell a Friend','2018-02-28 14:40:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(381,NULL,10,'Subject for Pledge Acknowledgment','2017-11-12 11:48:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(382,NULL,10,'Subject for Pledge Acknowledgment','2018-01-09 00:18:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(383,NULL,10,'Subject for Pledge Acknowledgment','2018-05-13 08:23:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(384,NULL,10,'Subject for Pledge Acknowledgment','2018-07-04 09:44:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(385,NULL,9,'Subject for Tell a Friend','2018-01-11 12:31:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(386,NULL,10,'Subject for Pledge Acknowledgment','2017-10-22 11:51:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(387,NULL,9,'Subject for Tell a Friend','2018-03-03 00:23:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(388,NULL,9,'Subject for Tell a Friend','2017-09-23 14:36:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(389,NULL,9,'Subject for Tell a Friend','2018-06-21 10:15:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(390,NULL,9,'Subject for Tell a Friend','2017-12-17 01:23:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(391,NULL,9,'Subject for Tell a Friend','2017-10-12 05:34:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(392,NULL,9,'Subject for Tell a Friend','2017-11-02 03:22:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(393,NULL,10,'Subject for Pledge Acknowledgment','2018-08-17 21:13:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(394,NULL,10,'Subject for Pledge Acknowledgment','2018-04-14 22:11:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(395,NULL,9,'Subject for Tell a Friend','2017-11-28 11:53:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(396,NULL,10,'Subject for Pledge Acknowledgment','2018-06-12 22:54:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(397,NULL,9,'Subject for Tell a Friend','2018-08-16 04:52:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(398,NULL,10,'Subject for Pledge Acknowledgment','2018-02-14 01:54:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(399,NULL,10,'Subject for Pledge Acknowledgment','2017-10-09 13:00:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(400,NULL,10,'Subject for Pledge Acknowledgment','2017-11-04 10:53:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(401,NULL,9,'Subject for Tell a Friend','2018-07-02 08:05:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(402,NULL,10,'Subject for Pledge Acknowledgment','2018-04-21 06:51:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(403,NULL,10,'Subject for Pledge Acknowledgment','2018-01-10 15:35:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(404,NULL,9,'Subject for Tell a Friend','2018-02-17 13:06:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(405,NULL,9,'Subject for Tell a Friend','2018-04-14 20:12:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(406,NULL,10,'Subject for Pledge Acknowledgment','2018-05-31 09:10:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(407,NULL,10,'Subject for Pledge Acknowledgment','2018-02-01 22:47:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(408,NULL,10,'Subject for Pledge Acknowledgment','2017-10-04 00:56:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(409,NULL,10,'Subject for Pledge Acknowledgment','2018-08-19 05:24:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(410,NULL,10,'Subject for Pledge Acknowledgment','2018-06-21 13:13:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(411,NULL,10,'Subject for Pledge Acknowledgment','2018-08-18 01:33:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(412,NULL,9,'Subject for Tell a Friend','2018-02-17 02:36:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(413,NULL,10,'Subject for Pledge Acknowledgment','2017-11-17 00:12:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(414,NULL,10,'Subject for Pledge Acknowledgment','2017-09-13 20:41:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(415,NULL,9,'Subject for Tell a Friend','2018-03-10 12:30:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(416,NULL,10,'Subject for Pledge Acknowledgment','2018-05-15 12:40:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(417,NULL,9,'Subject for Tell a Friend','2017-09-16 16:03:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(418,NULL,9,'Subject for Tell a Friend','2017-09-22 03:19:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(419,NULL,10,'Subject for Pledge Acknowledgment','2018-07-22 00:39:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(420,NULL,10,'Subject for Pledge Acknowledgment','2017-08-23 23:28:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(421,NULL,10,'Subject for Pledge Acknowledgment','2017-12-13 15:08:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(422,NULL,9,'Subject for Tell a Friend','2017-12-30 09:55:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(423,NULL,10,'Subject for Pledge Acknowledgment','2018-03-18 05:46:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(424,NULL,9,'Subject for Tell a Friend','2017-12-17 13:15:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(425,NULL,9,'Subject for Tell a Friend','2018-04-10 12:54:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(426,NULL,9,'Subject for Tell a Friend','2017-09-29 07:27:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(427,NULL,9,'Subject for Tell a Friend','2018-02-18 18:40:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(428,NULL,10,'Subject for Pledge Acknowledgment','2018-01-26 00:44:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(429,NULL,10,'Subject for Pledge Acknowledgment','2017-11-20 19:43:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(430,NULL,9,'Subject for Tell a Friend','2017-09-27 20:04:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(431,NULL,10,'Subject for Pledge Acknowledgment','2018-07-30 09:20:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(432,NULL,10,'Subject for Pledge Acknowledgment','2018-02-06 16:00:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(433,NULL,10,'Subject for Pledge Acknowledgment','2017-09-03 04:26:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(434,NULL,10,'Subject for Pledge Acknowledgment','2018-03-09 03:06:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(435,NULL,10,'Subject for Pledge Acknowledgment','2018-05-07 13:02:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(436,NULL,9,'Subject for Tell a Friend','2018-02-28 13:49:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(437,NULL,10,'Subject for Pledge Acknowledgment','2018-06-08 00:00:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(438,NULL,9,'Subject for Tell a Friend','2018-02-12 00:39:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(439,NULL,9,'Subject for Tell a Friend','2018-07-26 06:06:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(440,NULL,9,'Subject for Tell a Friend','2017-09-25 10:44:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(441,NULL,10,'Subject for Pledge Acknowledgment','2017-11-04 13:31:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:47','2018-08-22 22:01:47'),(442,NULL,10,'Subject for Pledge Acknowledgment','2017-09-19 20:25:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(443,NULL,10,'Subject for Pledge Acknowledgment','2018-03-02 12:21:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(444,NULL,9,'Subject for Tell a Friend','2017-11-27 21:42:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(445,NULL,10,'Subject for Pledge Acknowledgment','2018-01-31 08:06:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(446,NULL,9,'Subject for Tell a Friend','2017-11-25 04:24:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(447,NULL,10,'Subject for Pledge Acknowledgment','2017-11-16 23:00:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(448,NULL,10,'Subject for Pledge Acknowledgment','2017-12-11 14:26:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(449,NULL,9,'Subject for Tell a Friend','2017-12-20 10:41:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(450,NULL,9,'Subject for Tell a Friend','2018-03-21 03:41:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(464,1,7,'General','2018-08-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(465,2,7,'Student','2018-08-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(466,3,7,'General','2018-08-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(467,4,7,'Student','2018-08-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(468,5,7,'General','2016-07-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(469,6,7,'Student','2018-08-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(470,7,7,'General','2018-08-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(471,8,7,'Student','2018-08-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(472,9,7,'General','2018-08-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(473,10,7,'General','2016-06-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(474,11,7,'Lifetime','2018-08-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(475,12,7,'Student','2018-08-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(476,13,7,'General','2018-08-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(477,14,7,'Student','2018-08-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(478,15,7,'Student','2017-08-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(479,16,7,'Student','2018-08-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(480,17,7,'General','2018-08-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(481,18,7,'Student','2018-08-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(482,19,7,'General','2018-08-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(483,20,7,'Student','2017-08-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(484,21,7,'General','2018-08-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(485,22,7,'Lifetime','2018-08-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(486,23,7,'General','2018-08-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(487,24,7,'Student','2018-07-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(488,25,7,'General','2016-02-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(489,26,7,'Student','2018-07-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(490,27,7,'General','2018-07-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(491,28,7,'Student','2018-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,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(492,29,7,'General','2018-07-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(493,30,7,'Student','2017-07-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(495,15,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(497,17,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(498,18,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(499,19,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(501,21,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(503,23,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(504,24,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(505,25,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(507,27,6,'$ 100.00 - General Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(508,28,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(510,30,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(512,32,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(513,33,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(514,34,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(515,35,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(516,36,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(518,38,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(520,40,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(523,43,6,'$ 1200.00 - Lifetime Membership: Offline signup','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(525,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(526,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(527,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(528,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(529,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(530,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(531,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(532,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(533,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(534,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(535,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(536,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(537,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(538,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(539,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(540,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(541,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(542,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(543,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(544,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(545,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(546,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(547,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(548,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(549,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(550,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(551,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(552,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(553,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(554,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(555,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(556,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(557,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(558,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(559,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(560,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(561,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(562,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(563,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(564,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(565,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(566,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(567,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(568,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(569,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(570,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(571,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(572,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(573,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(574,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(575,45,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(576,46,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(577,47,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(578,48,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(579,49,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(580,50,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(581,51,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(582,52,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(583,53,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(584,54,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(585,55,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(586,56,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(587,57,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(588,58,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(589,59,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(590,60,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(591,61,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(592,62,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(593,63,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(598,68,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(599,69,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(600,70,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(601,71,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(606,76,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(607,77,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(608,78,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(609,79,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(611,81,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(615,85,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(618,88,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(619,89,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(623,93,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'),(624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-08-23 08:01:48',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-08-22 22:01:48','2018-08-22 22:01:48'); /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */; UNLOCK TABLES; @@ -97,7 +97,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_activity_contact` WRITE; /*!40000 ALTER TABLE `civicrm_activity_contact` DISABLE KEYS */; -INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES (417,269,1,3),(456,294,1,3),(230,151,2,3),(489,319,2,3),(685,451,2,2),(783,549,2,2),(550,362,3,3),(630,411,3,3),(647,424,3,3),(129,86,4,3),(686,452,4,2),(793,559,4,2),(203,136,5,3),(90,59,6,3),(276,180,6,3),(657,431,6,3),(687,453,6,2),(132,88,7,3),(308,201,7,3),(784,550,7,2),(497,325,8,3),(565,370,8,3),(688,454,8,2),(716,482,8,2),(746,512,8,2),(781,547,9,2),(559,367,10,3),(433,280,11,3),(546,360,11,3),(632,412,11,3),(316,205,12,3),(125,83,15,3),(422,273,15,3),(164,110,16,3),(689,455,16,2),(33,22,17,3),(605,394,17,3),(161,108,18,3),(267,175,18,3),(269,176,18,3),(722,488,18,2),(752,518,18,2),(180,121,19,3),(341,221,19,3),(349,226,19,3),(690,456,19,2),(771,537,19,2),(8,5,20,3),(177,119,20,3),(221,146,20,3),(303,198,20,3),(449,290,20,3),(795,561,20,2),(94,62,21,3),(208,139,21,3),(510,335,21,3),(639,418,21,3),(380,246,22,3),(479,311,22,3),(662,435,22,3),(675,443,22,3),(717,483,22,2),(747,513,22,2),(63,43,23,3),(199,133,23,3),(365,236,23,3),(60,41,24,3),(118,78,24,3),(577,377,24,3),(17,12,25,3),(292,190,25,3),(796,562,25,2),(24,16,26,3),(215,143,26,3),(467,302,26,3),(508,334,26,3),(567,371,27,3),(58,40,28,3),(314,204,28,3),(563,369,28,3),(626,408,28,3),(217,144,29,3),(232,152,29,3),(569,372,29,3),(575,376,29,3),(664,436,29,3),(238,156,30,3),(322,210,30,3),(49,34,31,3),(83,55,31,3),(425,275,31,3),(465,301,31,3),(495,324,31,3),(766,532,31,2),(111,74,32,3),(223,147,32,3),(696,462,32,2),(697,463,32,2),(171,115,33,3),(258,170,33,3),(367,237,33,3),(544,359,33,3),(413,267,34,3),(458,295,34,3),(693,459,34,2),(505,332,35,3),(534,352,35,3),(778,544,35,2),(102,68,36,3),(669,439,37,3),(477,310,38,3),(104,69,39,3),(484,315,39,3),(28,19,40,3),(298,195,40,3),(345,224,40,3),(394,255,40,3),(561,368,41,3),(681,448,41,3),(772,538,41,2),(3,2,42,3),(31,21,42,3),(52,36,42,3),(185,124,42,3),(355,229,42,3),(261,172,43,3),(263,173,43,3),(695,461,43,2),(197,132,44,3),(390,253,44,3),(552,363,44,3),(801,567,44,2),(396,256,45,3),(454,293,45,3),(610,397,45,3),(655,430,45,3),(709,475,45,2),(739,505,45,2),(438,283,46,3),(594,387,46,3),(683,449,46,3),(85,56,47,3),(150,101,47,3),(557,366,47,3),(620,404,47,3),(6,4,48,3),(77,52,48,3),(116,77,48,3),(147,99,48,3),(444,287,48,3),(451,291,48,3),(608,396,48,3),(798,564,48,2),(254,167,49,3),(435,281,49,3),(540,356,49,3),(711,477,49,2),(741,507,49,2),(144,97,50,3),(283,184,50,3),(446,288,51,3),(587,383,51,3),(760,526,51,2),(243,160,52,3),(71,48,53,3),(175,118,53,3),(245,161,53,3),(330,215,53,3),(289,188,54,3),(312,203,54,3),(327,213,54,3),(385,250,55,3),(520,342,55,3),(97,64,56,3),(154,103,56,3),(158,106,57,3),(280,182,57,3),(427,276,57,3),(582,380,57,3),(169,114,58,3),(600,390,59,3),(339,220,60,3),(152,102,61,3),(287,187,61,3),(573,375,61,3),(612,398,61,3),(769,535,61,2),(114,76,62,3),(247,162,62,3),(271,177,62,3),(515,339,62,3),(699,465,62,2),(729,495,62,2),(375,243,63,3),(411,266,63,3),(548,361,63,3),(723,489,63,2),(753,519,63,2),(775,541,63,2),(591,385,64,3),(187,125,65,3),(19,13,66,3),(806,572,66,2),(363,235,67,3),(405,262,67,3),(194,130,68,3),(278,181,68,3),(398,257,68,3),(335,218,69,3),(702,468,69,2),(732,498,69,2),(75,51,71,3),(106,70,71,3),(649,425,71,3),(694,460,71,2),(44,31,72,3),(81,54,72,3),(392,254,72,3),(15,11,73,3),(55,38,73,3),(79,53,73,3),(206,138,73,3),(403,261,73,3),(802,568,73,2),(139,94,74,3),(142,96,74,3),(518,341,74,3),(219,145,75,3),(305,199,76,3),(324,211,76,3),(442,286,76,3),(525,346,76,3),(532,351,76,3),(409,265,77,3),(65,44,78,3),(234,153,78,3),(641,419,78,3),(708,474,78,2),(738,504,78,2),(579,378,79,3),(589,384,79,3),(596,388,79,3),(360,233,80,3),(251,165,81,3),(351,227,81,3),(227,149,82,3),(300,196,82,3),(667,438,82,3),(691,457,82,2),(538,355,83,3),(429,277,84,3),(225,148,85,3),(347,225,85,3),(794,560,85,2),(377,244,86,3),(672,441,86,3),(800,566,86,2),(598,389,87,3),(615,400,87,3),(706,472,87,2),(736,502,87,2),(415,268,89,3),(776,542,89,2),(189,126,90,3),(472,306,90,3),(623,406,90,3),(182,122,92,3),(265,174,92,3),(692,458,92,2),(47,33,93,3),(211,141,93,3),(274,179,93,3),(123,82,94,3),(69,47,95,3),(213,142,95,3),(332,216,95,3),(371,240,95,3),(529,349,95,3),(35,23,96,3),(353,228,96,3),(763,529,96,2),(21,14,97,3),(88,58,97,3),(337,219,98,3),(387,251,98,3),(585,382,98,3),(310,202,99,3),(554,364,101,3),(788,554,101,2),(705,471,102,2),(735,501,102,2),(780,546,103,2),(768,534,106,2),(792,558,108,2),(762,528,109,2),(779,545,110,2),(759,525,112,2),(701,467,113,2),(731,497,113,2),(786,552,113,2),(761,527,114,2),(774,540,115,2),(721,487,118,2),(751,517,118,2),(797,563,121,2),(229,151,123,2),(231,152,123,2),(233,153,123,2),(235,154,123,2),(236,155,123,2),(237,156,123,2),(239,157,123,2),(240,158,123,2),(241,159,123,2),(242,160,123,2),(244,161,123,2),(246,162,123,2),(248,163,123,2),(249,164,123,2),(250,165,123,2),(252,166,123,2),(253,167,123,2),(255,168,123,2),(256,169,123,2),(257,170,123,2),(259,171,123,2),(260,172,123,2),(262,173,123,2),(264,174,123,2),(266,175,123,2),(268,176,123,2),(270,177,123,2),(272,178,123,2),(273,179,123,2),(275,180,123,2),(277,181,123,2),(279,182,123,2),(281,183,123,2),(282,184,123,2),(284,185,123,2),(285,186,123,2),(286,187,123,2),(288,188,123,2),(290,189,123,2),(291,190,123,2),(293,191,123,2),(294,192,123,2),(295,193,123,2),(296,194,123,2),(297,195,123,2),(299,196,123,2),(301,197,123,2),(302,198,123,2),(304,199,123,2),(306,200,123,2),(307,201,123,2),(309,202,123,2),(311,203,123,2),(313,204,123,2),(315,205,123,2),(317,206,123,2),(318,207,123,2),(319,208,123,2),(320,209,123,2),(321,210,123,2),(323,211,123,2),(325,212,123,2),(326,213,123,2),(328,214,123,2),(329,215,123,2),(331,216,123,2),(333,217,123,2),(334,218,123,2),(336,219,123,2),(338,220,123,2),(340,221,123,2),(342,222,123,2),(343,223,123,2),(344,224,123,2),(346,225,123,2),(348,226,123,2),(350,227,123,2),(352,228,123,2),(354,229,123,2),(356,230,123,2),(357,231,123,2),(358,232,123,2),(359,233,123,2),(361,234,123,2),(362,235,123,2),(364,236,123,2),(366,237,123,2),(368,238,123,2),(369,239,123,2),(370,240,123,2),(372,241,123,2),(373,242,123,2),(374,243,123,2),(376,244,123,2),(378,245,123,2),(379,246,123,2),(381,247,123,2),(382,248,123,2),(383,249,123,2),(384,250,123,2),(386,251,123,2),(388,252,123,2),(389,253,123,2),(391,254,123,2),(393,255,123,2),(395,256,123,2),(397,257,123,2),(399,258,123,2),(400,259,123,2),(401,260,123,2),(402,261,123,2),(404,262,123,2),(406,263,123,2),(407,264,123,2),(408,265,123,2),(410,266,123,2),(412,267,123,2),(414,268,123,2),(416,269,123,2),(418,270,123,2),(419,271,123,2),(420,272,123,2),(421,273,123,2),(423,274,123,2),(424,275,123,2),(426,276,123,2),(428,277,123,2),(430,278,123,2),(431,279,123,2),(432,280,123,2),(434,281,123,2),(436,282,123,2),(437,283,123,2),(439,284,123,2),(440,285,123,2),(441,286,123,2),(443,287,123,2),(445,288,123,2),(447,289,123,2),(448,290,123,2),(450,291,123,2),(452,292,123,2),(453,293,123,2),(455,294,123,2),(457,295,123,2),(459,296,123,2),(460,297,123,2),(461,298,123,2),(462,299,123,2),(463,300,123,2),(727,493,123,2),(757,523,123,2),(764,530,124,2),(803,569,128,2),(726,492,129,2),(756,522,129,2),(790,556,129,2),(799,565,131,2),(791,557,133,2),(700,466,137,2),(730,496,137,2),(777,543,137,2),(712,478,140,2),(742,508,140,2),(704,470,141,2),(734,500,141,2),(1,1,147,2),(2,2,147,2),(4,3,147,2),(5,4,147,2),(7,5,147,2),(9,6,147,2),(10,7,147,2),(11,8,147,2),(12,9,147,2),(13,10,147,2),(14,11,147,2),(16,12,147,2),(18,13,147,2),(20,14,147,2),(22,15,147,2),(23,16,147,2),(25,17,147,2),(26,18,147,2),(27,19,147,2),(29,20,147,2),(30,21,147,2),(32,22,147,2),(34,23,147,2),(36,24,147,2),(37,25,147,2),(38,26,147,2),(39,27,147,2),(40,28,147,2),(41,29,147,2),(42,30,147,2),(43,31,147,2),(45,32,147,2),(46,33,147,2),(48,34,147,2),(50,35,147,2),(51,36,147,2),(53,37,147,2),(54,38,147,2),(56,39,147,2),(57,40,147,2),(59,41,147,2),(61,42,147,2),(62,43,147,2),(64,44,147,2),(66,45,147,2),(67,46,147,2),(68,47,147,2),(70,48,147,2),(72,49,147,2),(73,50,147,2),(74,51,147,2),(76,52,147,2),(78,53,147,2),(80,54,147,2),(82,55,147,2),(84,56,147,2),(86,57,147,2),(87,58,147,2),(89,59,147,2),(91,60,147,2),(92,61,147,2),(93,62,147,2),(95,63,147,2),(96,64,147,2),(98,65,147,2),(99,66,147,2),(100,67,147,2),(101,68,147,2),(103,69,147,2),(105,70,147,2),(107,71,147,2),(108,72,147,2),(109,73,147,2),(110,74,147,2),(112,75,147,2),(113,76,147,2),(115,77,147,2),(117,78,147,2),(119,79,147,2),(120,80,147,2),(121,81,147,2),(122,82,147,2),(124,83,147,2),(126,84,147,2),(127,85,147,2),(128,86,147,2),(130,87,147,2),(131,88,147,2),(133,89,147,2),(134,90,147,2),(135,91,147,2),(136,92,147,2),(137,93,147,2),(138,94,147,2),(140,95,147,2),(141,96,147,2),(143,97,147,2),(145,98,147,2),(146,99,147,2),(148,100,147,2),(149,101,147,2),(151,102,147,2),(153,103,147,2),(155,104,147,2),(156,105,147,2),(157,106,147,2),(159,107,147,2),(160,108,147,2),(162,109,147,2),(163,110,147,2),(165,111,147,2),(166,112,147,2),(167,113,147,2),(168,114,147,2),(170,115,147,2),(172,116,147,2),(173,117,147,2),(174,118,147,2),(176,119,147,2),(178,120,147,2),(179,121,147,2),(181,122,147,2),(183,123,147,2),(184,124,147,2),(186,125,147,2),(188,126,147,2),(190,127,147,2),(191,128,147,2),(192,129,147,2),(193,130,147,2),(195,131,147,2),(196,132,147,2),(198,133,147,2),(200,134,147,2),(201,135,147,2),(202,136,147,2),(204,137,147,2),(205,138,147,2),(207,139,147,2),(209,140,147,2),(210,141,147,2),(212,142,147,2),(214,143,147,2),(216,144,147,2),(218,145,147,2),(220,146,147,2),(222,147,147,2),(224,148,147,2),(226,149,147,2),(228,150,147,2),(724,490,147,2),(754,520,147,2),(719,485,149,2),(749,515,149,2),(725,491,150,2),(755,521,150,2),(770,536,151,2),(718,484,153,2),(748,514,153,2),(765,531,153,2),(785,551,155,2),(710,476,156,2),(740,506,156,2),(715,481,158,2),(745,511,158,2),(720,486,161,2),(750,516,161,2),(807,573,162,2),(713,479,163,2),(743,509,163,2),(714,480,164,2),(744,510,164,2),(804,570,164,2),(707,473,166,2),(737,503,166,2),(782,548,166,2),(767,533,177,2),(464,301,180,2),(466,302,180,2),(468,303,180,2),(469,304,180,2),(470,305,180,2),(471,306,180,2),(473,307,180,2),(474,308,180,2),(475,309,180,2),(476,310,180,2),(478,311,180,2),(480,312,180,2),(481,313,180,2),(482,314,180,2),(483,315,180,2),(485,316,180,2),(486,317,180,2),(487,318,180,2),(488,319,180,2),(490,320,180,2),(491,321,180,2),(492,322,180,2),(493,323,180,2),(494,324,180,2),(496,325,180,2),(498,326,180,2),(499,327,180,2),(500,328,180,2),(501,329,180,2),(502,330,180,2),(503,331,180,2),(504,332,180,2),(506,333,180,2),(507,334,180,2),(509,335,180,2),(511,336,180,2),(512,337,180,2),(513,338,180,2),(514,339,180,2),(516,340,180,2),(517,341,180,2),(519,342,180,2),(521,343,180,2),(522,344,180,2),(523,345,180,2),(524,346,180,2),(526,347,180,2),(527,348,180,2),(528,349,180,2),(530,350,180,2),(531,351,180,2),(533,352,180,2),(535,353,180,2),(536,354,180,2),(537,355,180,2),(539,356,180,2),(541,357,180,2),(542,358,180,2),(543,359,180,2),(545,360,180,2),(547,361,180,2),(549,362,180,2),(551,363,180,2),(553,364,180,2),(555,365,180,2),(556,366,180,2),(558,367,180,2),(560,368,180,2),(562,369,180,2),(564,370,180,2),(566,371,180,2),(568,372,180,2),(570,373,180,2),(571,374,180,2),(572,375,180,2),(574,376,180,2),(576,377,180,2),(578,378,180,2),(580,379,180,2),(581,380,180,2),(583,381,180,2),(584,382,180,2),(586,383,180,2),(588,384,180,2),(590,385,180,2),(592,386,180,2),(593,387,180,2),(595,388,180,2),(597,389,180,2),(599,390,180,2),(601,391,180,2),(602,392,180,2),(603,393,180,2),(604,394,180,2),(606,395,180,2),(607,396,180,2),(609,397,180,2),(611,398,180,2),(613,399,180,2),(614,400,180,2),(616,401,180,2),(617,402,180,2),(618,403,180,2),(619,404,180,2),(621,405,180,2),(622,406,180,2),(624,407,180,2),(625,408,180,2),(627,409,180,2),(628,410,180,2),(629,411,180,2),(631,412,180,2),(633,413,180,2),(634,414,180,2),(635,415,180,2),(636,416,180,2),(637,417,180,2),(638,418,180,2),(640,419,180,2),(642,420,180,2),(643,421,180,2),(644,422,180,2),(645,423,180,2),(646,424,180,2),(648,425,180,2),(650,426,180,2),(651,427,180,2),(652,428,180,2),(653,429,180,2),(654,430,180,2),(656,431,180,2),(658,432,180,2),(659,433,180,2),(660,434,180,2),(661,435,180,2),(663,436,180,2),(665,437,180,2),(666,438,180,2),(668,439,180,2),(670,440,180,2),(671,441,180,2),(673,442,180,2),(674,443,180,2),(676,444,180,2),(677,445,180,2),(678,446,180,2),(679,447,180,2),(680,448,180,2),(682,449,180,2),(684,450,180,2),(703,469,181,2),(733,499,181,2),(805,571,182,2),(789,555,186,2),(787,553,188,2),(808,574,190,2),(773,539,199,2),(698,464,200,2),(728,494,200,2); +INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES (222,151,1,3),(253,171,2,3),(361,242,2,3),(392,263,2,3),(670,451,2,2),(752,533,2,2),(251,170,3,3),(584,390,3,3),(595,397,3,3),(655,440,3,3),(695,476,3,2),(719,500,3,2),(671,452,4,2),(64,46,5,3),(623,418,5,3),(214,146,6,3),(562,375,6,3),(672,453,6,2),(699,480,6,2),(720,501,6,2),(749,530,6,2),(143,98,7,3),(316,212,7,3),(2,1,8,3),(89,62,8,3),(673,454,8,2),(343,230,9,3),(635,426,9,3),(24,18,10,3),(282,189,10,3),(440,296,10,3),(469,315,10,3),(507,340,10,3),(660,444,10,3),(790,571,10,2),(651,438,11,3),(641,430,12,3),(231,158,13,3),(16,12,14,3),(77,55,14,3),(80,57,14,3),(479,321,14,3),(286,191,15,3),(113,76,16,3),(674,455,16,2),(202,139,17,3),(779,560,17,2),(190,131,18,3),(504,338,18,3),(520,348,18,3),(586,391,18,3),(394,264,19,3),(669,450,19,3),(675,456,19,2),(29,21,20,3),(525,352,20,3),(529,355,20,3),(56,41,21,3),(121,83,21,3),(220,150,21,3),(546,365,21,3),(621,417,21,3),(172,118,22,3),(540,362,22,3),(461,310,23,3),(578,387,23,3),(304,204,24,3),(314,211,24,3),(102,69,25,3),(376,251,25,3),(697,478,25,2),(733,514,25,2),(58,42,26,3),(126,87,26,3),(239,162,26,3),(307,206,26,3),(455,306,26,3),(582,389,27,3),(293,197,28,3),(357,239,28,3),(188,130,29,3),(355,238,29,3),(509,341,29,3),(4,2,30,3),(374,250,30,3),(564,376,30,3),(226,154,31,3),(260,175,31,3),(325,218,31,3),(302,203,32,3),(418,281,32,3),(516,345,32,3),(681,462,32,2),(682,463,32,2),(243,165,33,3),(271,183,33,3),(387,259,33,3),(550,367,33,3),(793,574,33,2),(628,422,34,3),(631,424,34,3),(678,459,34,2),(569,380,35,3),(600,401,35,3),(785,566,35,2),(162,111,36,3),(780,561,36,2),(27,20,37,3),(170,117,37,3),(618,415,37,3),(769,550,37,2),(33,24,38,3),(96,66,38,3),(132,90,38,3),(396,265,38,3),(711,492,38,2),(726,507,38,2),(145,99,39,3),(384,257,39,3),(351,235,40,3),(511,342,40,3),(580,388,40,3),(138,94,41,3),(422,283,41,3),(433,291,41,3),(533,358,41,3),(688,469,41,2),(729,510,41,2),(767,548,41,2),(221,151,42,2),(223,152,42,2),(224,153,42,2),(225,154,42,2),(227,155,42,2),(228,156,42,2),(229,157,42,2),(230,158,42,2),(232,159,42,2),(234,160,42,2),(236,161,42,2),(238,162,42,2),(240,163,42,2),(241,164,42,2),(242,165,42,2),(244,166,42,2),(245,167,42,2),(247,168,42,2),(249,169,42,2),(250,170,42,2),(252,171,42,2),(254,172,42,2),(255,173,42,2),(257,174,42,2),(259,175,42,2),(261,176,42,2),(262,177,42,2),(263,178,42,2),(264,179,42,2),(265,180,42,2),(267,181,42,2),(269,182,42,2),(270,183,42,2),(272,184,42,2),(274,185,42,2),(276,186,42,2),(277,187,42,2),(279,188,42,2),(281,189,42,2),(283,190,42,2),(284,190,42,3),(285,191,42,2),(287,192,42,2),(288,193,42,2),(289,194,42,2),(290,195,42,2),(291,196,42,2),(292,197,42,2),(294,198,42,2),(296,199,42,2),(297,200,42,2),(299,201,42,2),(300,202,42,2),(301,203,42,2),(303,204,42,2),(305,205,42,2),(306,206,42,2),(308,207,42,2),(309,208,42,2),(310,209,42,2),(312,210,42,2),(313,211,42,2),(315,212,42,2),(317,213,42,2),(318,214,42,2),(320,215,42,2),(321,216,42,2),(322,217,42,2),(324,218,42,2),(326,219,42,2),(328,220,42,2),(329,221,42,2),(331,222,42,2),(333,223,42,2),(334,224,42,2),(335,225,42,2),(337,226,42,2),(339,227,42,2),(340,228,42,2),(341,229,42,2),(342,230,42,2),(344,231,42,2),(346,232,42,2),(347,233,42,2),(348,234,42,2),(350,235,42,2),(352,236,42,2),(353,237,42,2),(354,238,42,2),(356,239,42,2),(358,240,42,2),(359,241,42,2),(360,242,42,2),(362,243,42,2),(363,244,42,2),(365,245,42,2),(367,246,42,2),(368,247,42,2),(370,248,42,2),(372,249,42,2),(373,250,42,2),(375,251,42,2),(377,252,42,2),(378,253,42,2),(380,254,42,2),(381,255,42,2),(382,256,42,2),(383,257,42,2),(385,258,42,2),(386,259,42,2),(388,260,42,2),(389,261,42,2),(390,262,42,2),(391,263,42,2),(393,264,42,2),(395,265,42,2),(397,266,42,2),(399,267,42,2),(400,268,42,2),(402,269,42,2),(403,270,42,2),(405,271,42,2),(406,272,42,2),(408,273,42,2),(410,274,42,2),(411,275,42,2),(412,276,42,2),(413,277,42,2),(414,278,42,2),(415,279,42,2),(416,280,42,2),(417,281,42,2),(419,282,42,2),(421,283,42,2),(423,284,42,2),(424,285,42,2),(425,285,42,3),(426,286,42,2),(427,287,42,2),(428,288,42,2),(430,289,42,2),(431,290,42,2),(432,291,42,2),(434,292,42,2),(435,293,42,2),(436,294,42,2),(437,295,42,2),(438,295,42,3),(439,296,42,2),(441,297,42,2),(443,298,42,2),(444,299,42,2),(446,300,42,2),(463,311,42,3),(483,323,42,3),(701,482,42,2),(721,502,42,2),(61,44,43,3),(447,301,43,2),(448,302,43,2),(450,303,43,2),(451,304,43,2),(452,305,43,2),(454,306,43,2),(456,307,43,2),(457,308,43,2),(458,309,43,2),(460,310,43,2),(462,311,43,2),(464,312,43,2),(465,313,43,2),(467,314,43,2),(468,315,43,2),(470,316,43,2),(472,317,43,2),(474,318,43,2),(475,319,43,2),(477,320,43,2),(478,321,43,2),(480,322,43,2),(482,323,43,2),(484,324,43,2),(486,325,43,2),(487,326,43,2),(488,327,43,2),(490,328,43,2),(492,329,43,2),(494,330,43,2),(495,331,43,2),(497,332,43,2),(498,333,43,2),(499,334,43,2),(500,335,43,2),(501,336,43,2),(502,337,43,2),(503,338,43,2),(505,339,43,2),(506,340,43,2),(508,341,43,2),(510,342,43,2),(512,343,43,2),(514,344,43,2),(515,345,43,2),(517,346,43,2),(518,347,43,2),(519,348,43,2),(521,349,43,2),(522,350,43,2),(523,351,43,2),(524,352,43,2),(526,353,43,2),(527,354,43,2),(528,355,43,2),(530,356,43,2),(531,357,43,2),(532,358,43,2),(534,359,43,2),(536,360,43,2),(537,361,43,2),(539,362,43,2),(541,363,43,2),(543,364,43,2),(545,365,43,2),(547,366,43,2),(549,367,43,2),(551,368,43,2),(552,368,43,3),(553,369,43,2),(555,370,43,2),(556,371,43,2),(557,372,43,2),(558,373,43,2),(560,374,43,2),(561,375,43,2),(563,376,43,2),(565,377,43,2),(566,378,43,2),(567,379,43,2),(568,380,43,2),(570,381,43,2),(571,382,43,2),(572,383,43,2),(573,384,43,2),(574,385,43,2),(576,386,43,2),(577,387,43,2),(579,388,43,2),(581,389,43,2),(583,390,43,2),(585,391,43,2),(587,392,43,2),(589,393,43,2),(590,394,43,2),(591,395,43,2),(593,396,43,2),(594,397,43,2),(596,398,43,2),(597,399,43,2),(598,400,43,2),(599,401,43,2),(601,402,43,2),(602,403,43,2),(603,404,43,2),(605,405,43,2),(607,406,43,2),(608,407,43,2),(609,408,43,2),(610,409,43,2),(611,410,43,2),(612,411,43,2),(613,412,43,2),(615,413,43,2),(616,414,43,2),(617,415,43,2),(619,416,43,2),(620,417,43,2),(622,418,43,2),(624,419,43,2),(625,420,43,2),(626,421,43,2),(627,422,43,2),(629,423,43,2),(630,424,43,2),(632,425,43,2),(634,426,43,2),(636,427,43,2),(638,428,43,2),(639,429,43,2),(640,430,43,2),(642,431,43,2),(643,432,43,2),(644,433,43,2),(645,434,43,2),(646,435,43,2),(647,436,43,2),(649,437,43,2),(650,438,43,2),(652,439,43,2),(654,440,43,2),(656,441,43,2),(657,442,43,2),(658,443,43,2),(659,444,43,2),(661,445,43,2),(662,446,43,2),(664,447,43,2),(665,448,43,2),(666,449,43,2),(668,450,43,2),(680,461,43,2),(37,27,44,3),(130,89,44,3),(193,133,44,3),(559,373,44,3),(48,35,45,3),(107,72,45,3),(205,141,45,3),(707,488,45,2),(724,505,45,2),(792,573,45,2),(10,7,47,3),(149,102,48,3),(210,144,48,3),(459,309,49,3),(548,366,49,3),(614,412,49,3),(782,563,49,2),(212,145,50,3),(449,302,50,3),(774,555,50,2),(1,1,51,2),(3,2,51,2),(5,3,51,2),(6,4,51,2),(7,5,51,2),(8,6,51,2),(9,7,51,2),(11,8,51,2),(12,9,51,2),(13,10,51,2),(14,11,51,2),(15,12,51,2),(17,13,51,2),(18,14,51,2),(19,15,51,2),(20,16,51,2),(21,17,51,2),(23,18,51,2),(25,19,51,2),(26,20,51,2),(28,21,51,2),(30,22,51,2),(31,23,51,2),(32,24,51,2),(34,25,51,2),(35,26,51,2),(36,27,51,2),(38,28,51,2),(39,29,51,2),(40,30,51,2),(41,31,51,2),(43,32,51,2),(44,33,51,2),(45,34,51,2),(47,35,51,2),(49,36,51,2),(50,37,51,2),(52,38,51,2),(53,39,51,2),(54,40,51,2),(55,41,51,2),(57,42,51,2),(59,43,51,2),(60,44,51,2),(62,45,51,2),(63,46,51,2),(65,47,51,2),(67,48,51,2),(68,49,51,2),(69,50,51,2),(71,51,51,2),(73,52,51,2),(74,53,51,2),(75,54,51,2),(76,55,51,2),(78,56,51,2),(79,57,51,2),(81,58,51,2),(83,59,51,2),(84,59,51,3),(85,60,51,2),(87,61,51,2),(88,62,51,2),(90,63,51,2),(91,64,51,2),(93,65,51,2),(95,66,51,2),(97,67,51,2),(99,68,51,2),(101,69,51,2),(103,70,51,2),(105,71,51,2),(106,72,51,2),(108,73,51,2),(110,74,51,2),(111,75,51,2),(112,76,51,2),(114,77,51,2),(115,78,51,2),(116,79,51,2),(117,80,51,2),(118,81,51,2),(119,82,51,2),(120,83,51,2),(122,84,51,2),(123,85,51,2),(124,86,51,2),(125,87,51,2),(127,88,51,2),(129,89,51,2),(131,90,51,2),(133,91,51,2),(134,92,51,2),(136,93,51,2),(137,94,51,2),(139,95,51,2),(140,96,51,2),(141,97,51,2),(142,98,51,2),(144,99,51,2),(146,100,51,2),(147,101,51,2),(148,102,51,2),(150,103,51,2),(151,104,51,2),(153,105,51,2),(154,106,51,2),(155,107,51,2),(157,108,51,2),(158,109,51,2),(159,110,51,2),(161,111,51,2),(163,112,51,2),(164,113,51,2),(166,114,51,2),(167,115,51,2),(168,116,51,2),(169,117,51,2),(171,118,51,2),(173,119,51,2),(175,120,51,2),(176,121,51,2),(177,122,51,2),(178,123,51,2),(180,124,51,2),(181,125,51,2),(182,126,51,2),(184,127,51,2),(185,128,51,2),(186,129,51,2),(187,130,51,2),(189,131,51,2),(191,132,51,2),(192,133,51,2),(194,134,51,2),(195,135,51,2),(197,136,51,2),(198,137,51,2),(199,138,51,2),(201,139,51,2),(203,140,51,2),(204,141,51,2),(206,142,51,2),(208,143,51,2),(209,144,51,2),(211,145,51,2),(213,146,51,2),(215,147,51,2),(217,148,51,2),(218,149,51,2),(219,150,51,2),(248,168,51,3),(473,317,51,3),(686,467,51,2),(728,509,51,2),(298,200,52,3),(345,231,52,3),(379,253,53,3),(667,449,53,3),(46,34,54,3),(160,110,54,3),(542,363,54,3),(653,439,54,3),(66,47,55,3),(364,244,56,3),(471,316,56,3),(696,477,56,2),(732,513,56,2),(323,217,57,3),(453,305,57,3),(280,188,58,3),(235,160,59,3),(330,221,59,3),(758,539,60,2),(648,436,61,3),(704,485,61,2),(742,523,61,2),(663,446,62,3),(152,104,63,3),(407,272,64,3),(82,58,65,3),(481,322,65,3),(273,184,66,3),(278,187,66,3),(420,282,66,3),(588,392,66,3),(104,70,67,3),(216,147,67,3),(233,159,67,3),(491,328,67,3),(258,174,68,3),(338,226,68,3),(592,395,68,3),(633,425,68,3),(183,126,69,3),(295,198,69,3),(398,266,69,3),(756,537,69,2),(466,313,70,3),(535,359,70,3),(575,385,70,3),(100,68,71,3),(207,142,71,3),(327,219,71,3),(409,273,71,3),(679,460,71,2),(98,67,72,3),(275,185,72,3),(493,329,72,3),(237,161,74,3),(445,299,74,3),(766,547,74,2),(256,173,75,3),(485,324,75,3),(778,559,75,2),(94,65,76,3),(200,138,76,3),(266,180,76,3),(332,222,76,3),(637,427,76,3),(128,88,77,3),(174,119,77,3),(703,484,77,2),(722,503,77,2),(42,31,78,3),(366,245,78,3),(544,364,78,3),(72,51,79,3),(538,361,79,3),(92,64,81,3),(311,209,81,3),(349,234,81,3),(156,107,82,3),(179,123,82,3),(676,457,82,2),(606,405,83,3),(51,37,85,3),(86,60,85,3),(319,214,85,3),(336,225,85,3),(554,369,85,3),(371,248,86,3),(765,546,86,2),(496,331,88,3),(442,297,89,3),(401,268,90,3),(429,288,90,3),(694,475,90,2),(731,512,90,2),(776,557,90,2),(135,92,91,3),(773,554,91,2),(677,458,92,2),(404,270,93,3),(489,327,93,3),(604,404,93,3),(22,17,94,3),(476,319,94,3),(268,181,95,3),(513,343,95,3),(109,73,96,3),(196,135,97,3),(70,50,98,3),(165,113,100,3),(246,167,101,3),(369,247,101,3),(706,487,101,2),(737,518,101,2),(748,529,102,2),(764,545,105,2),(687,468,106,2),(715,496,106,2),(775,556,108,2),(784,565,109,2),(747,528,110,2),(757,538,111,2),(777,558,114,2),(691,472,118,2),(717,498,118,2),(763,544,119,2),(683,464,121,2),(713,494,121,2),(753,534,127,2),(761,542,129,2),(689,470,133,2),(716,497,133,2),(744,525,136,2),(751,532,137,2),(708,489,138,2),(738,519,138,2),(750,531,140,2),(781,562,141,2),(755,536,142,2),(693,474,143,2),(741,522,143,2),(705,486,144,2),(723,504,144,2),(768,549,144,2),(710,491,145,2),(739,520,145,2),(771,552,145,2),(754,535,146,2),(788,569,147,2),(760,541,154,2),(690,471,159,2),(730,511,159,2),(746,527,161,2),(709,490,165,2),(725,506,165,2),(772,553,165,2),(786,567,167,2),(783,564,170,2),(745,526,174,2),(685,466,175,2),(714,495,175,2),(692,473,176,2),(718,499,176,2),(712,493,177,2),(740,521,177,2),(702,483,180,2),(736,517,180,2),(762,543,180,2),(789,570,182,2),(787,568,183,2),(700,481,185,2),(735,516,185,2),(791,572,190,2),(684,465,191,2),(727,508,191,2),(770,551,191,2),(698,479,197,2),(734,515,197,2),(759,540,200,2); /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -107,7 +107,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_address` WRITE; /*!40000 ALTER TABLE `civicrm_address` DISABLE KEYS */; -INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES (1,96,1,1,0,'675M Lincoln Ln S',675,'M',NULL,'Lincoln','Ln','S',NULL,NULL,NULL,NULL,'Carmel',1,1018,NULL,'04419',NULL,1228,44.7896,-69.00587,0,NULL,NULL,NULL),(2,67,1,1,0,'715A Bay Rd NW',715,'A',NULL,'Bay','Rd','NW',NULL,NULL,NULL,NULL,'Tiona',1,1037,NULL,'16352',NULL,1228,41.764498,-79.04693,0,NULL,NULL,NULL),(3,57,1,1,0,'2G Cadell Rd E',2,'G',NULL,'Cadell','Rd','E',NULL,NULL,NULL,NULL,'Jacksonville',1,1008,NULL,'32202',NULL,1228,30.328539,-81.65101,0,NULL,NULL,NULL),(4,108,1,1,0,'579W Green Path SW',579,'W',NULL,'Green','Path','SW',NULL,NULL,NULL,NULL,'Hawleyville',1,1006,NULL,'06440',NULL,1228,41.308873,-73.363661,0,NULL,NULL,NULL),(5,161,1,1,0,'16U Jackson Ln NE',16,'U',NULL,'Jackson','Ln','NE',NULL,NULL,NULL,NULL,'Jamestown',1,1041,NULL,'38556',NULL,1228,36.409385,-84.93393,0,NULL,NULL,NULL),(6,154,1,1,0,'990W El Camino Dr E',990,'W',NULL,'El Camino','Dr','E',NULL,NULL,NULL,NULL,'Greenwood',1,1021,NULL,'49758',NULL,1228,44.682965,-84.287698,0,NULL,NULL,NULL),(7,23,1,1,0,'186E Second St SW',186,'E',NULL,'Second','St','SW',NULL,NULL,NULL,NULL,'Worcester',1,1044,NULL,'05682',NULL,1228,44.383559,-72.55088,0,NULL,NULL,NULL),(8,92,1,1,0,'530Z Martin Luther King Ln NE',530,'Z',NULL,'Martin Luther King','Ln','NE',NULL,NULL,NULL,NULL,'Chesnee',1,1039,NULL,'29323',NULL,1228,35.131971,-81.88553,0,NULL,NULL,NULL),(9,107,1,1,0,'231D Lincoln Dr SE',231,'D',NULL,'Lincoln','Dr','SE',NULL,NULL,NULL,NULL,'Lindrith',1,1030,NULL,'87029',NULL,1228,36.343007,-107.09858,0,NULL,NULL,NULL),(10,125,1,1,0,'587E Second St W',587,'E',NULL,'Second','St','W',NULL,NULL,NULL,NULL,'Fingerville',1,1039,NULL,'29338',NULL,1228,35.136333,-82.00328,0,NULL,NULL,NULL),(11,173,1,1,0,'970U Cadell Rd S',970,'U',NULL,'Cadell','Rd','S',NULL,NULL,NULL,NULL,'Henagar',1,1000,NULL,'35978',NULL,1228,34.637589,-85.73274,0,NULL,NULL,NULL),(12,80,1,1,0,'994K Woodbridge Path SW',994,'K',NULL,'Woodbridge','Path','SW',NULL,NULL,NULL,NULL,'James City',1,1037,NULL,'16734',NULL,1228,41.619029,-78.84,0,NULL,NULL,NULL),(13,69,1,1,0,'827Q Second Dr W',827,'Q',NULL,'Second','Dr','W',NULL,NULL,NULL,NULL,'El Sobrante',1,1004,NULL,'94803',NULL,1228,37.969673,-122.29413,0,NULL,NULL,NULL),(14,194,1,1,0,'64C States Dr SW',64,'C',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Jamestown',1,1016,NULL,'42629',NULL,1228,36.946642,-85.09981,0,NULL,NULL,NULL),(15,181,1,1,0,'761Y Second Way S',761,'Y',NULL,'Second','Way','S',NULL,NULL,NULL,NULL,'Vicksburg',1,1021,NULL,'49097',NULL,1228,42.117028,-85.5073,0,NULL,NULL,NULL),(16,60,1,1,0,'69J Lincoln Pl NE',69,'J',NULL,'Lincoln','Pl','NE',NULL,NULL,NULL,NULL,'Crisfield',1,1019,NULL,'21817',NULL,1228,37.985297,-75.84597,0,NULL,NULL,NULL),(17,133,1,1,0,'341R Caulder Blvd NE',341,'R',NULL,'Caulder','Blvd','NE',NULL,NULL,NULL,NULL,'Argyle',1,1022,NULL,'56713',NULL,1228,48.342579,-96.79448,0,NULL,NULL,NULL),(18,127,1,1,0,'822N Bay Blvd SE',822,'N',NULL,'Bay','Blvd','SE',NULL,NULL,NULL,NULL,'Woodbridge',1,1029,NULL,'07095',NULL,1228,40.557104,-74.28316,0,NULL,NULL,NULL),(19,191,1,1,0,'280P Main Way NW',280,'P',NULL,'Main','Way','NW',NULL,NULL,NULL,NULL,'Newport News',1,1045,NULL,'23605',NULL,1228,37.019453,-76.43651,0,NULL,NULL,NULL),(20,121,1,1,0,'541E Dowlen Pl N',541,'E',NULL,'Dowlen','Pl','N',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88576',NULL,1228,31.694842,-106.299987,0,NULL,NULL,NULL),(21,13,1,1,0,'803G Woodbridge St S',803,'G',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Prairie Grove',1,1003,NULL,'72753',NULL,1228,35.951426,-94.32246,0,NULL,NULL,NULL),(22,95,1,1,0,'128W El Camino Rd NE',128,'W',NULL,'El Camino','Rd','NE',NULL,NULL,NULL,NULL,'West Palm Beach',1,1008,NULL,'33404',NULL,1228,26.782114,-80.06528,0,NULL,NULL,NULL),(23,43,1,1,0,'754N Martin Luther King Ave SE',754,'N',NULL,'Martin Luther King','Ave','SE',NULL,NULL,NULL,NULL,'Exmore',1,1045,NULL,'23350',NULL,1228,37.522269,-75.86132,0,NULL,NULL,NULL),(24,17,1,1,0,'27R Van Ness St N',27,'R',NULL,'Van Ness','St','N',NULL,NULL,NULL,NULL,'Caseville',1,1021,NULL,'48725',NULL,1228,43.944466,-83.23974,0,NULL,NULL,NULL),(25,149,1,1,0,'802O Martin Luther King Rd E',802,'O',NULL,'Martin Luther King','Rd','E',NULL,NULL,NULL,NULL,'Huntsville',1,1000,NULL,'35802',NULL,1228,34.666041,-86.55929,0,NULL,NULL,NULL),(26,167,1,1,0,'180L Green Pl S',180,'L',NULL,'Green','Pl','S',NULL,NULL,NULL,NULL,'Abingdon',1,1045,NULL,'24211',NULL,1228,36.657812,-81.96207,0,NULL,NULL,NULL),(27,136,1,1,0,'470B Bay Blvd SE',470,'B',NULL,'Bay','Blvd','SE',NULL,NULL,NULL,NULL,'East Springfield',1,1037,NULL,'16411',NULL,1228,41.981289,-80.44277,0,NULL,NULL,NULL),(28,150,1,1,0,'709B Cadell Ln N',709,'B',NULL,'Cadell','Ln','N',NULL,NULL,NULL,NULL,'Amarillo',1,1042,NULL,'79178',NULL,1228,35.401475,-101.895089,0,NULL,NULL,NULL),(29,63,1,1,0,'691B Northpoint Blvd NE',691,'B',NULL,'Northpoint','Blvd','NE',NULL,NULL,NULL,NULL,'Salt Lake City',1,1043,NULL,'84150',NULL,1228,40.668068,-111.908297,0,NULL,NULL,NULL),(30,111,1,1,0,'308D Second Dr NW',308,'D',NULL,'Second','Dr','NW',NULL,NULL,NULL,NULL,'Fort Wayne',1,1013,NULL,'46857',NULL,1228,41.093763,-85.070713,0,NULL,NULL,NULL),(31,131,1,1,0,'867F Northpoint Dr E',867,'F',NULL,'Northpoint','Dr','E',NULL,NULL,NULL,NULL,'Bedminster',1,1037,NULL,'18910',NULL,1228,40.328645,-75.10278,0,NULL,NULL,NULL),(32,193,1,1,0,'162R Lincoln Way SW',162,'R',NULL,'Lincoln','Way','SW',NULL,NULL,NULL,NULL,'Havensville',1,1015,NULL,'66432',NULL,1228,39.496479,-96.07717,0,NULL,NULL,NULL),(33,46,1,1,0,'510Y Van Ness Ln SW',510,'Y',NULL,'Van Ness','Ln','SW',NULL,NULL,NULL,NULL,'Lovelady',1,1042,NULL,'75851',NULL,1228,31.104197,-95.46434,0,NULL,NULL,NULL),(34,14,1,1,0,'326T El Camino St NE',326,'T',NULL,'El Camino','St','NE',NULL,NULL,NULL,NULL,'Grafton',1,1026,NULL,'68365',NULL,1228,40.627475,-97.72408,0,NULL,NULL,NULL),(35,117,1,1,0,'634Q States Rd S',634,'Q',NULL,'States','Rd','S',NULL,NULL,NULL,NULL,'Palmyra',1,1024,NULL,'63461',NULL,1228,39.793879,-91.54631,0,NULL,NULL,NULL),(36,66,1,1,0,'160V Main Blvd N',160,'V',NULL,'Main','Blvd','N',NULL,NULL,NULL,NULL,'Lilesville',1,1032,NULL,'28091',NULL,1228,34.970129,-79.93705,0,NULL,NULL,NULL),(37,59,1,1,0,'137C Beech Pl N',137,'C',NULL,'Beech','Pl','N',NULL,NULL,NULL,NULL,'Charlotteville',1,1031,NULL,'12036',NULL,1228,42.546034,-74.67315,0,NULL,NULL,NULL),(38,28,1,1,0,'583S Jackson Pl E',583,'S',NULL,'Jackson','Pl','E',NULL,NULL,NULL,NULL,'Nashville',1,1041,NULL,'37240',NULL,1228,36.186605,-86.785248,0,NULL,NULL,NULL),(39,171,1,1,0,'837N Maple Blvd S',837,'N',NULL,'Maple','Blvd','S',NULL,NULL,NULL,NULL,'Mariposa',1,1004,NULL,'95338',NULL,1228,37.505484,-119.92527,0,NULL,NULL,NULL),(40,98,1,1,0,'843Z States Rd S',843,'Z',NULL,'States','Rd','S',NULL,NULL,NULL,NULL,'Normantown',1,1047,NULL,'25267',NULL,1228,38.849663,-80.96569,0,NULL,NULL,NULL),(41,53,1,1,0,'102W College Way N',102,'W',NULL,'College','Way','N',NULL,NULL,NULL,NULL,'Surprise',1,1002,NULL,'85379',NULL,1228,33.616888,-112.40158,0,NULL,NULL,NULL),(42,170,1,1,0,'56A Caulder Pl NW',56,'A',NULL,'Caulder','Pl','NW',NULL,NULL,NULL,NULL,'Phoenix',1,1002,NULL,'85003',NULL,1228,33.451143,-112.07838,0,NULL,NULL,NULL),(43,200,1,1,0,'104E Main Blvd SW',104,'E',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Aurelia',1,1014,NULL,'51005',NULL,1228,42.710831,-95.43137,0,NULL,NULL,NULL),(44,93,1,1,0,'916K El Camino Way NE',916,'K',NULL,'El Camino','Way','NE',NULL,NULL,NULL,NULL,'Orlando',1,1008,NULL,'32877',NULL,1228,28.566338,-81.260818,0,NULL,NULL,NULL),(45,56,1,1,0,'204G College Blvd NE',204,'G',NULL,'College','Blvd','NE',NULL,NULL,NULL,NULL,'Clarendon Hills',1,1012,NULL,'60514',NULL,1228,41.779533,-87.95798,0,NULL,NULL,NULL),(46,24,1,1,0,'707F El Camino St NE',707,'F',NULL,'El Camino','St','NE',NULL,NULL,NULL,NULL,'Pinedale',1,1002,NULL,'85934',NULL,1228,34.270743,-110.26032,0,NULL,NULL,NULL),(47,104,1,1,0,'175E Bay Dr W',175,'E',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Seville',1,1009,NULL,'31084',NULL,1228,31.989039,-83.394574,0,NULL,NULL,NULL),(48,174,1,1,0,'559L Lincoln Way W',559,'L',NULL,'Lincoln','Way','W',NULL,NULL,NULL,NULL,'Corpus Christi',1,1042,NULL,'78474',NULL,1228,27.777,-97.463213,0,NULL,NULL,NULL),(49,83,1,1,0,'713C Second Blvd SW',713,'C',NULL,'Second','Blvd','SW',NULL,NULL,NULL,NULL,'Akron',1,1005,NULL,'80720',NULL,1228,40.124199,-103.18362,0,NULL,NULL,NULL),(50,185,1,1,0,'810B El Camino Path S',810,'B',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Dexter',1,1036,NULL,'97431',NULL,1228,43.892577,-122.81992,0,NULL,NULL,NULL),(51,85,1,1,0,'490N States Blvd N',490,'N',NULL,'States','Blvd','N',NULL,NULL,NULL,NULL,'Twin Mountain',1,1028,NULL,'03595',NULL,1228,44.271516,-71.51746,0,NULL,NULL,NULL),(52,29,1,1,0,'483O Lincoln Ave W',483,'O',NULL,'Lincoln','Ave','W',NULL,NULL,NULL,NULL,'Seeley',1,1004,NULL,'92273',NULL,1228,32.792631,-115.69162,0,NULL,NULL,NULL),(53,12,1,1,0,'548D Jackson Rd NW',548,'D',NULL,'Jackson','Rd','NW',NULL,NULL,NULL,NULL,'Fort Walton Beach',1,1008,NULL,'32548',NULL,1228,30.414932,-86.61992,0,NULL,NULL,NULL),(54,89,1,1,0,'662B Jackson Rd SW',662,'B',NULL,'Jackson','Rd','SW',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45273',NULL,1228,39.166759,-84.53822,0,NULL,NULL,NULL),(55,51,1,1,0,'345U Pine Path W',345,'U',NULL,'Pine','Path','W',NULL,NULL,NULL,NULL,'Ocala',1,1008,NULL,'34474',NULL,1228,29.166186,-82.17027,0,NULL,NULL,NULL),(56,41,1,1,0,'827G El Camino Blvd S',827,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Pleasant Hill',1,1041,NULL,'38578',NULL,1228,36.007405,-85.162272,0,NULL,NULL,NULL),(57,90,1,1,0,'21F States Dr SW',21,'F',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Finlayson',1,1022,NULL,'55735',NULL,1228,46.250308,-93.04462,0,NULL,NULL,NULL),(58,72,1,1,0,'111M Caulder St SE',111,'M',NULL,'Caulder','St','SE',NULL,NULL,NULL,NULL,'Amberson',1,1037,NULL,'17210',NULL,1228,40.171667,-77.661354,0,NULL,NULL,NULL),(59,116,1,1,0,'123K College Ave W',123,'K',NULL,'College','Ave','W',NULL,NULL,NULL,NULL,'Kincaid',1,1012,NULL,'62540',NULL,1228,39.58755,-89.41265,0,NULL,NULL,NULL),(60,42,1,1,0,'217T Dowlen Ave NW',217,'T',NULL,'Dowlen','Ave','NW',NULL,NULL,NULL,NULL,'Girard',1,1012,NULL,'62640',NULL,1228,39.436584,-89.8028,0,NULL,NULL,NULL),(61,175,1,1,0,'319E Pine Blvd NW',319,'E',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Baltimore',1,1019,NULL,'21210',NULL,1228,39.352496,-76.63452,0,NULL,NULL,NULL),(62,183,1,1,0,'141L Maple Ln NW',141,'L',NULL,'Maple','Ln','NW',NULL,NULL,NULL,NULL,'Mulberry',1,1015,NULL,'66756',NULL,1228,37.554735,-94.63283,0,NULL,NULL,NULL),(63,192,1,1,0,'599K Van Ness Blvd S',599,'K',NULL,'Van Ness','Blvd','S',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77026',NULL,1228,29.79437,-95.33395,0,NULL,NULL,NULL),(64,157,1,1,0,'908J College Rd S',908,'J',NULL,'College','Rd','S',NULL,NULL,NULL,NULL,'Maryville',1,1041,NULL,'37804',NULL,1228,35.781607,-83.93591,0,NULL,NULL,NULL),(65,68,1,1,0,'763N Pine Blvd NE',763,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Lincolnville Center',1,1018,NULL,'04850',NULL,1228,44.478694,-69.149559,0,NULL,NULL,NULL),(66,77,1,1,0,'22Z Green Blvd W',22,'Z',NULL,'Green','Blvd','W',NULL,NULL,NULL,NULL,'Kamas',1,1043,NULL,'84036',NULL,1228,40.625883,-111.20141,0,NULL,NULL,NULL),(67,162,3,1,0,'201J Green Rd SW',201,'J',NULL,'Green','Rd','SW',NULL,'c/o OPDC',NULL,NULL,'Perry Hall',1,1019,NULL,'21128',NULL,1228,39.400296,-76.44639,0,NULL,NULL,NULL),(68,33,3,1,0,'391S Caulder St N',391,'S',NULL,'Caulder','St','N',NULL,'c/o OPDC',NULL,NULL,'Mountain Home',1,1042,NULL,'78058',NULL,1228,30.070414,-99.69191,0,NULL,NULL,NULL),(69,96,2,0,0,'391S Caulder St N',391,'S',NULL,'Caulder','St','N',NULL,'c/o OPDC',NULL,NULL,'Mountain Home',1,1042,NULL,'78058',NULL,1228,30.070414,-99.69191,0,NULL,NULL,68),(70,39,3,1,0,'888Q Second St NE',888,'Q',NULL,'Second','St','NE',NULL,'Urgent',NULL,NULL,'Dallas',1,1042,NULL,'75392',NULL,1228,32.767268,-96.777626,0,NULL,NULL,NULL),(71,88,3,1,0,'201G Maple Rd W',201,'G',NULL,'Maple','Rd','W',NULL,'Payables Dept.',NULL,NULL,'Hudson',1,1013,NULL,'46747',NULL,1228,41.556391,-85.15428,0,NULL,NULL,NULL),(72,108,2,0,0,'201G Maple Rd W',201,'G',NULL,'Maple','Rd','W',NULL,'Payables Dept.',NULL,NULL,'Hudson',1,1013,NULL,'46747',NULL,1228,41.556391,-85.15428,0,NULL,NULL,71),(73,151,3,1,0,'413F Woodbridge Dr E',413,'F',NULL,'Woodbridge','Dr','E',NULL,'Attn: Development',NULL,NULL,'Bath',1,1037,NULL,'18014',NULL,1228,40.747742,-75.40078,0,NULL,NULL,NULL),(74,44,2,1,0,'413F Woodbridge Dr E',413,'F',NULL,'Woodbridge','Dr','E',NULL,'Attn: Development',NULL,NULL,'Bath',1,1037,NULL,'18014',NULL,1228,40.747742,-75.40078,0,NULL,NULL,73),(75,189,3,1,0,'685Y States Path S',685,'Y',NULL,'States','Path','S',NULL,'Cuffe Parade',NULL,NULL,'Laddonia',1,1024,NULL,'63352',NULL,1228,39.249616,-91.64872,0,NULL,NULL,NULL),(76,199,3,1,0,'437C Lincoln Ln N',437,'C',NULL,'Lincoln','Ln','N',NULL,'Attn: Accounting',NULL,NULL,'Cheraw',1,1005,NULL,'81030',NULL,1228,38.107901,-103.51113,0,NULL,NULL,NULL),(77,169,3,1,0,'569I Lincoln Dr N',569,'I',NULL,'Lincoln','Dr','N',NULL,'Editorial Dept',NULL,NULL,'McKenney',1,1045,NULL,'23872',NULL,1228,36.993498,-77.74687,0,NULL,NULL,NULL),(78,118,2,1,0,'569I Lincoln Dr N',569,'I',NULL,'Lincoln','Dr','N',NULL,'Editorial Dept',NULL,NULL,'McKenney',1,1045,NULL,'23872',NULL,1228,36.993498,-77.74687,0,NULL,NULL,77),(79,10,3,1,0,'724Z Dowlen Rd SE',724,'Z',NULL,'Dowlen','Rd','SE',NULL,'Editorial Dept',NULL,NULL,'Whiteclay',1,1026,NULL,'69365',NULL,1228,42.963117,-102.51068,0,NULL,NULL,NULL),(80,135,3,1,0,'953O Maple St N',953,'O',NULL,'Maple','St','N',NULL,'Attn: Accounting',NULL,NULL,'Berkeley',1,1004,NULL,'94704',NULL,1228,37.868575,-122.25855,0,NULL,NULL,NULL),(81,149,2,0,0,'953O Maple St N',953,'O',NULL,'Maple','St','N',NULL,'Attn: Accounting',NULL,NULL,'Berkeley',1,1004,NULL,'94704',NULL,1228,37.868575,-122.25855,0,NULL,NULL,80),(82,100,3,1,0,'793V Lincoln Rd E',793,'V',NULL,'Lincoln','Rd','E',NULL,'Attn: Accounting',NULL,NULL,'Leburn',1,1016,NULL,'41831',NULL,1228,37.387358,-82.95633,0,NULL,NULL,NULL),(83,84,3,1,0,'496F Dowlen Path S',496,'F',NULL,'Dowlen','Path','S',NULL,'Urgent',NULL,NULL,'Southwick',1,1020,NULL,'01077',NULL,1228,42.05283,-72.76966,0,NULL,NULL,NULL),(84,97,2,1,0,'496F Dowlen Path S',496,'F',NULL,'Dowlen','Path','S',NULL,'Urgent',NULL,NULL,'Southwick',1,1020,NULL,'01077',NULL,1228,42.05283,-72.76966,0,NULL,NULL,83),(85,195,3,1,0,'682G Jackson Path SW',682,'G',NULL,'Jackson','Path','SW',NULL,'Attn: Development',NULL,NULL,'Iola',1,1048,NULL,'54945',NULL,1228,44.558941,-89.13383,0,NULL,NULL,NULL),(86,101,3,1,0,'82M Lincoln St SW',82,'M',NULL,'Lincoln','St','SW',NULL,'Churchgate',NULL,NULL,'Kearsarge',1,1028,NULL,'03847',NULL,1228,43.883871,-71.257726,0,NULL,NULL,NULL),(87,178,3,1,0,'511G Maple Pl SE',511,'G',NULL,'Maple','Pl','SE',NULL,'Attn: Accounting',NULL,NULL,'Madison',1,1048,NULL,'53718',NULL,1228,43.095178,-89.2704,0,NULL,NULL,NULL),(88,123,2,1,0,'511G Maple Pl SE',511,'G',NULL,'Maple','Pl','SE',NULL,'Attn: Accounting',NULL,NULL,'Madison',1,1048,NULL,'53718',NULL,1228,43.095178,-89.2704,0,NULL,NULL,87),(89,159,3,1,0,'833Q Cadell Path SW',833,'Q',NULL,'Cadell','Path','SW',NULL,'Receiving',NULL,NULL,'Columbia',1,1039,NULL,'29230',NULL,1228,34.107483,-81.062623,0,NULL,NULL,NULL),(90,40,2,1,0,'833Q Cadell Path SW',833,'Q',NULL,'Cadell','Path','SW',NULL,'Receiving',NULL,NULL,'Columbia',1,1039,NULL,'29230',NULL,1228,34.107483,-81.062623,0,NULL,NULL,89),(91,34,3,1,0,'861L Second Ln E',861,'L',NULL,'Second','Ln','E',NULL,'Donor Relations',NULL,NULL,'Achille',1,1035,NULL,'74720',NULL,1228,33.83464,-96.39018,0,NULL,NULL,NULL),(92,16,3,1,0,'742I Beech Dr SW',742,'I',NULL,'Beech','Dr','SW',NULL,'Mailstop 101',NULL,NULL,'Salem',1,1003,NULL,'72559',NULL,1228,34.640273,-92.558295,0,NULL,NULL,NULL),(93,14,2,0,0,'742I Beech Dr SW',742,'I',NULL,'Beech','Dr','SW',NULL,'Mailstop 101',NULL,NULL,'Salem',1,1003,NULL,'72559',NULL,1228,34.640273,-92.558295,0,NULL,NULL,92),(94,103,3,1,0,'777Y Van Ness Blvd NE',777,'Y',NULL,'Van Ness','Blvd','NE',NULL,'Community Relations',NULL,NULL,'Wilmington',1,1007,NULL,'19896',NULL,1228,39.564499,-75.597047,0,NULL,NULL,NULL),(95,196,2,1,0,'777Y Van Ness Blvd NE',777,'Y',NULL,'Van Ness','Blvd','NE',NULL,'Community Relations',NULL,NULL,'Wilmington',1,1007,NULL,'19896',NULL,1228,39.564499,-75.597047,0,NULL,NULL,94),(96,99,3,1,0,'788D Van Ness Rd SE',788,'D',NULL,'Van Ness','Rd','SE',NULL,'Editorial Dept',NULL,NULL,'Wappingers Falls',1,1031,NULL,'12590',NULL,1228,41.59466,-73.89579,0,NULL,NULL,NULL),(97,25,1,1,0,'175E Bay Dr W',175,'E',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Seville',1,1009,NULL,'31084',NULL,1228,31.989039,-83.394574,0,NULL,NULL,47),(98,4,1,1,0,'175E Bay Dr W',175,'E',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Seville',1,1009,NULL,'31084',NULL,1228,31.989039,-83.394574,0,NULL,NULL,47),(99,142,1,1,0,'175E Bay Dr W',175,'E',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Seville',1,1009,NULL,'31084',NULL,1228,31.989039,-83.394574,0,NULL,NULL,47),(100,24,1,0,0,'830B Lincoln Way S',830,'B',NULL,'Lincoln','Way','S',NULL,NULL,NULL,NULL,'Chepachet',1,1038,NULL,'02814',NULL,1228,41.896002,-71.70335,0,NULL,NULL,NULL),(101,50,1,1,0,'559L Lincoln Way W',559,'L',NULL,'Lincoln','Way','W',NULL,NULL,NULL,NULL,'Corpus Christi',1,1042,NULL,'78474',NULL,1228,27.777,-97.463213,0,NULL,NULL,48),(102,45,1,1,0,'559L Lincoln Way W',559,'L',NULL,'Lincoln','Way','W',NULL,NULL,NULL,NULL,'Corpus Christi',1,1042,NULL,'78474',NULL,1228,27.777,-97.463213,0,NULL,NULL,48),(103,182,1,1,0,'559L Lincoln Way W',559,'L',NULL,'Lincoln','Way','W',NULL,NULL,NULL,NULL,'Corpus Christi',1,1042,NULL,'78474',NULL,1228,27.777,-97.463213,0,NULL,NULL,48),(104,30,1,1,0,'559L Lincoln Way W',559,'L',NULL,'Lincoln','Way','W',NULL,NULL,NULL,NULL,'Corpus Christi',1,1042,NULL,'78474',NULL,1228,27.777,-97.463213,0,NULL,NULL,48),(105,118,1,0,0,'713C Second Blvd SW',713,'C',NULL,'Second','Blvd','SW',NULL,NULL,NULL,NULL,'Akron',1,1005,NULL,'80720',NULL,1228,40.124199,-103.18362,0,NULL,NULL,49),(106,19,1,1,0,'713C Second Blvd SW',713,'C',NULL,'Second','Blvd','SW',NULL,NULL,NULL,NULL,'Akron',1,1005,NULL,'80720',NULL,1228,40.124199,-103.18362,0,NULL,NULL,49),(107,20,1,1,0,'713C Second Blvd SW',713,'C',NULL,'Second','Blvd','SW',NULL,NULL,NULL,NULL,'Akron',1,1005,NULL,'80720',NULL,1228,40.124199,-103.18362,0,NULL,NULL,49),(108,87,1,1,0,'741O Second Rd SW',741,'O',NULL,'Second','Rd','SW',NULL,NULL,NULL,NULL,'Fairfax',1,1045,NULL,'22035',NULL,1228,38.855715,-77.361633,0,NULL,NULL,NULL),(109,48,1,1,0,'810B El Camino Path S',810,'B',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Dexter',1,1036,NULL,'97431',NULL,1228,43.892577,-122.81992,0,NULL,NULL,50),(110,198,1,1,0,'810B El Camino Path S',810,'B',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Dexter',1,1036,NULL,'97431',NULL,1228,43.892577,-122.81992,0,NULL,NULL,50),(111,82,1,1,0,'810B El Camino Path S',810,'B',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Dexter',1,1036,NULL,'97431',NULL,1228,43.892577,-122.81992,0,NULL,NULL,50),(112,21,1,1,0,'810B El Camino Path S',810,'B',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Dexter',1,1036,NULL,'97431',NULL,1228,43.892577,-122.81992,0,NULL,NULL,50),(113,132,1,1,0,'490N States Blvd N',490,'N',NULL,'States','Blvd','N',NULL,NULL,NULL,NULL,'Twin Mountain',1,1028,NULL,'03595',NULL,1228,44.271516,-71.51746,0,NULL,NULL,51),(114,81,1,1,0,'490N States Blvd N',490,'N',NULL,'States','Blvd','N',NULL,NULL,NULL,NULL,'Twin Mountain',1,1028,NULL,'03595',NULL,1228,44.271516,-71.51746,0,NULL,NULL,51),(115,156,1,1,0,'490N States Blvd N',490,'N',NULL,'States','Blvd','N',NULL,NULL,NULL,NULL,'Twin Mountain',1,1028,NULL,'03595',NULL,1228,44.271516,-71.51746,0,NULL,NULL,51),(116,177,1,1,0,'619C Green Dr N',619,'C',NULL,'Green','Dr','N',NULL,NULL,NULL,NULL,'Evansville',1,1013,NULL,'47734',NULL,1228,37.997128,-87.574963,0,NULL,NULL,NULL),(117,32,1,1,0,'483O Lincoln Ave W',483,'O',NULL,'Lincoln','Ave','W',NULL,NULL,NULL,NULL,'Seeley',1,1004,NULL,'92273',NULL,1228,32.792631,-115.69162,0,NULL,NULL,52),(118,120,1,1,0,'483O Lincoln Ave W',483,'O',NULL,'Lincoln','Ave','W',NULL,NULL,NULL,NULL,'Seeley',1,1004,NULL,'92273',NULL,1228,32.792631,-115.69162,0,NULL,NULL,52),(119,137,1,1,0,'483O Lincoln Ave W',483,'O',NULL,'Lincoln','Ave','W',NULL,NULL,NULL,NULL,'Seeley',1,1004,NULL,'92273',NULL,1228,32.792631,-115.69162,0,NULL,NULL,52),(120,114,1,1,0,'483O Lincoln Ave W',483,'O',NULL,'Lincoln','Ave','W',NULL,NULL,NULL,NULL,'Seeley',1,1004,NULL,'92273',NULL,1228,32.792631,-115.69162,0,NULL,NULL,52),(121,76,1,1,0,'548D Jackson Rd NW',548,'D',NULL,'Jackson','Rd','NW',NULL,NULL,NULL,NULL,'Fort Walton Beach',1,1008,NULL,'32548',NULL,1228,30.414932,-86.61992,0,NULL,NULL,53),(122,124,1,1,0,'548D Jackson Rd NW',548,'D',NULL,'Jackson','Rd','NW',NULL,NULL,NULL,NULL,'Fort Walton Beach',1,1008,NULL,'32548',NULL,1228,30.414932,-86.61992,0,NULL,NULL,53),(123,172,1,1,0,'548D Jackson Rd NW',548,'D',NULL,'Jackson','Rd','NW',NULL,NULL,NULL,NULL,'Fort Walton Beach',1,1008,NULL,'32548',NULL,1228,30.414932,-86.61992,0,NULL,NULL,53),(124,139,1,1,0,'560N Second Pl E',560,'N',NULL,'Second','Pl','E',NULL,NULL,NULL,NULL,'Cedartown',1,1009,NULL,'30125',NULL,1228,34.010162,-85.25762,0,NULL,NULL,NULL),(125,7,1,1,0,'662B Jackson Rd SW',662,'B',NULL,'Jackson','Rd','SW',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45273',NULL,1228,39.166759,-84.53822,0,NULL,NULL,54),(126,22,1,1,0,'662B Jackson Rd SW',662,'B',NULL,'Jackson','Rd','SW',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45273',NULL,1228,39.166759,-84.53822,0,NULL,NULL,54),(127,40,1,0,0,'662B Jackson Rd SW',662,'B',NULL,'Jackson','Rd','SW',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45273',NULL,1228,39.166759,-84.53822,0,NULL,NULL,54),(128,15,1,1,0,'662B Jackson Rd SW',662,'B',NULL,'Jackson','Rd','SW',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45273',NULL,1228,39.166759,-84.53822,0,NULL,NULL,54),(129,123,1,0,0,'345U Pine Path W',345,'U',NULL,'Pine','Path','W',NULL,NULL,NULL,NULL,'Ocala',1,1008,NULL,'34474',NULL,1228,29.166186,-82.17027,0,NULL,NULL,55),(130,180,1,1,0,'345U Pine Path W',345,'U',NULL,'Pine','Path','W',NULL,NULL,NULL,NULL,'Ocala',1,1008,NULL,'34474',NULL,1228,29.166186,-82.17027,0,NULL,NULL,55),(131,147,1,1,0,'345U Pine Path W',345,'U',NULL,'Pine','Path','W',NULL,NULL,NULL,NULL,'Ocala',1,1008,NULL,'34474',NULL,1228,29.166186,-82.17027,0,NULL,NULL,55),(132,6,1,1,0,'345U Pine Path W',345,'U',NULL,'Pine','Path','W',NULL,NULL,NULL,NULL,'Ocala',1,1008,NULL,'34474',NULL,1228,29.166186,-82.17027,0,NULL,NULL,55),(133,166,1,1,0,'827G El Camino Blvd S',827,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Pleasant Hill',1,1041,NULL,'38578',NULL,1228,36.007405,-85.162272,0,NULL,NULL,56),(134,184,1,1,0,'827G El Camino Blvd S',827,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Pleasant Hill',1,1041,NULL,'38578',NULL,1228,36.007405,-85.162272,0,NULL,NULL,56),(135,64,1,1,0,'827G El Camino Blvd S',827,'G',NULL,'El Camino','Blvd','S',NULL,NULL,NULL,NULL,'Pleasant Hill',1,1041,NULL,'38578',NULL,1228,36.007405,-85.162272,0,NULL,NULL,56),(136,176,1,1,0,'539V Pine Dr S',539,'V',NULL,'Pine','Dr','S',NULL,NULL,NULL,NULL,'Lake Bluff',1,1012,NULL,'60044',NULL,1228,42.286222,-87.86309,0,NULL,NULL,NULL),(137,112,1,1,0,'21F States Dr SW',21,'F',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Finlayson',1,1022,NULL,'55735',NULL,1228,46.250308,-93.04462,0,NULL,NULL,57),(138,138,1,1,0,'21F States Dr SW',21,'F',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Finlayson',1,1022,NULL,'55735',NULL,1228,46.250308,-93.04462,0,NULL,NULL,57),(139,153,1,1,0,'21F States Dr SW',21,'F',NULL,'States','Dr','SW',NULL,NULL,NULL,NULL,'Finlayson',1,1022,NULL,'55735',NULL,1228,46.250308,-93.04462,0,NULL,NULL,57),(140,8,1,1,0,'110R Lincoln St SW',110,'R',NULL,'Lincoln','St','SW',NULL,NULL,NULL,NULL,'Bannister',1,1021,NULL,'48807',NULL,1228,43.145475,-84.41579,0,NULL,NULL,NULL),(141,119,1,1,0,'111M Caulder St SE',111,'M',NULL,'Caulder','St','SE',NULL,NULL,NULL,NULL,'Amberson',1,1037,NULL,'17210',NULL,1228,40.171667,-77.661354,0,NULL,NULL,58),(142,78,1,1,0,'111M Caulder St SE',111,'M',NULL,'Caulder','St','SE',NULL,NULL,NULL,NULL,'Amberson',1,1037,NULL,'17210',NULL,1228,40.171667,-77.661354,0,NULL,NULL,58),(143,144,1,1,0,'111M Caulder St SE',111,'M',NULL,'Caulder','St','SE',NULL,NULL,NULL,NULL,'Amberson',1,1037,NULL,'17210',NULL,1228,40.171667,-77.661354,0,NULL,NULL,58),(144,44,1,0,0,'996U States Pl NW',996,'U',NULL,'States','Pl','NW',NULL,NULL,NULL,NULL,'Dickens',1,1042,NULL,'79229',NULL,1228,33.654512,-100.75517,0,NULL,NULL,NULL),(145,106,1,1,0,'123K College Ave W',123,'K',NULL,'College','Ave','W',NULL,NULL,NULL,NULL,'Kincaid',1,1012,NULL,'62540',NULL,1228,39.58755,-89.41265,0,NULL,NULL,59),(146,73,1,1,0,'123K College Ave W',123,'K',NULL,'College','Ave','W',NULL,NULL,NULL,NULL,'Kincaid',1,1012,NULL,'62540',NULL,1228,39.58755,-89.41265,0,NULL,NULL,59),(147,105,1,1,0,'123K College Ave W',123,'K',NULL,'College','Ave','W',NULL,NULL,NULL,NULL,'Kincaid',1,1012,NULL,'62540',NULL,1228,39.58755,-89.41265,0,NULL,NULL,59),(148,164,1,1,0,'123K College Ave W',123,'K',NULL,'College','Ave','W',NULL,NULL,NULL,NULL,'Kincaid',1,1012,NULL,'62540',NULL,1228,39.58755,-89.41265,0,NULL,NULL,59),(149,197,1,1,0,'217T Dowlen Ave NW',217,'T',NULL,'Dowlen','Ave','NW',NULL,NULL,NULL,NULL,'Girard',1,1012,NULL,'62640',NULL,1228,39.436584,-89.8028,0,NULL,NULL,60),(150,196,1,0,0,'217T Dowlen Ave NW',217,'T',NULL,'Dowlen','Ave','NW',NULL,NULL,NULL,NULL,'Girard',1,1012,NULL,'62640',NULL,1228,39.436584,-89.8028,0,NULL,NULL,60),(151,11,1,1,0,'217T Dowlen Ave NW',217,'T',NULL,'Dowlen','Ave','NW',NULL,NULL,NULL,NULL,'Girard',1,1012,NULL,'62640',NULL,1228,39.436584,-89.8028,0,NULL,NULL,60),(152,163,1,1,0,'217T Dowlen Ave NW',217,'T',NULL,'Dowlen','Ave','NW',NULL,NULL,NULL,NULL,'Girard',1,1012,NULL,'62640',NULL,1228,39.436584,-89.8028,0,NULL,NULL,60),(153,140,1,1,0,'319E Pine Blvd NW',319,'E',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Baltimore',1,1019,NULL,'21210',NULL,1228,39.352496,-76.63452,0,NULL,NULL,61),(154,27,1,1,0,'319E Pine Blvd NW',319,'E',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Baltimore',1,1019,NULL,'21210',NULL,1228,39.352496,-76.63452,0,NULL,NULL,61),(155,97,1,0,0,'319E Pine Blvd NW',319,'E',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Baltimore',1,1019,NULL,'21210',NULL,1228,39.352496,-76.63452,0,NULL,NULL,61),(156,201,1,1,0,'319E Pine Blvd NW',319,'E',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Baltimore',1,1019,NULL,'21210',NULL,1228,39.352496,-76.63452,0,NULL,NULL,61),(157,79,1,1,0,'141L Maple Ln NW',141,'L',NULL,'Maple','Ln','NW',NULL,NULL,NULL,NULL,'Mulberry',1,1015,NULL,'66756',NULL,1228,37.554735,-94.63283,0,NULL,NULL,62),(158,47,1,1,0,'141L Maple Ln NW',141,'L',NULL,'Maple','Ln','NW',NULL,NULL,NULL,NULL,'Mulberry',1,1015,NULL,'66756',NULL,1228,37.554735,-94.63283,0,NULL,NULL,62),(159,61,1,1,0,'141L Maple Ln NW',141,'L',NULL,'Maple','Ln','NW',NULL,NULL,NULL,NULL,'Mulberry',1,1015,NULL,'66756',NULL,1228,37.554735,-94.63283,0,NULL,NULL,62),(160,35,1,1,0,'694O Woodbridge St SE',694,'O',NULL,'Woodbridge','St','SE',NULL,NULL,NULL,NULL,'Kansas City',1,1024,NULL,'64138',NULL,1228,38.969806,-94.47256,0,NULL,NULL,NULL),(161,158,1,1,0,'599K Van Ness Blvd S',599,'K',NULL,'Van Ness','Blvd','S',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77026',NULL,1228,29.79437,-95.33395,0,NULL,NULL,63),(162,122,1,1,0,'599K Van Ness Blvd S',599,'K',NULL,'Van Ness','Blvd','S',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77026',NULL,1228,29.79437,-95.33395,0,NULL,NULL,63),(163,37,1,1,0,'599K Van Ness Blvd S',599,'K',NULL,'Van Ness','Blvd','S',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77026',NULL,1228,29.79437,-95.33395,0,NULL,NULL,63),(164,134,1,1,0,'599K Van Ness Blvd S',599,'K',NULL,'Van Ness','Blvd','S',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77026',NULL,1228,29.79437,-95.33395,0,NULL,NULL,63),(165,26,1,1,0,'908J College Rd S',908,'J',NULL,'College','Rd','S',NULL,NULL,NULL,NULL,'Maryville',1,1041,NULL,'37804',NULL,1228,35.781607,-83.93591,0,NULL,NULL,64),(166,179,1,1,0,'908J College Rd S',908,'J',NULL,'College','Rd','S',NULL,NULL,NULL,NULL,'Maryville',1,1041,NULL,'37804',NULL,1228,35.781607,-83.93591,0,NULL,NULL,64),(167,75,1,1,0,'908J College Rd S',908,'J',NULL,'College','Rd','S',NULL,NULL,NULL,NULL,'Maryville',1,1041,NULL,'37804',NULL,1228,35.781607,-83.93591,0,NULL,NULL,64),(168,102,1,1,0,'765K Beech Blvd NE',765,'K',NULL,'Beech','Blvd','NE',NULL,NULL,NULL,NULL,'Springfield',1,1024,NULL,'65806',NULL,1228,37.206624,-93.29923,0,NULL,NULL,NULL),(169,141,1,1,0,'763N Pine Blvd NE',763,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Lincolnville Center',1,1018,NULL,'04850',NULL,1228,44.478694,-69.149559,0,NULL,NULL,65),(170,86,1,1,0,'763N Pine Blvd NE',763,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Lincolnville Center',1,1018,NULL,'04850',NULL,1228,44.478694,-69.149559,0,NULL,NULL,65),(171,70,1,1,0,'763N Pine Blvd NE',763,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Lincolnville Center',1,1018,NULL,'04850',NULL,1228,44.478694,-69.149559,0,NULL,NULL,65),(172,130,1,1,0,'763N Pine Blvd NE',763,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Lincolnville Center',1,1018,NULL,'04850',NULL,1228,44.478694,-69.149559,0,NULL,NULL,65),(173,55,1,1,0,'22Z Green Blvd W',22,'Z',NULL,'Green','Blvd','W',NULL,NULL,NULL,NULL,'Kamas',1,1043,NULL,'84036',NULL,1228,40.625883,-111.20141,0,NULL,NULL,66),(174,65,1,1,0,'22Z Green Blvd W',22,'Z',NULL,'Green','Blvd','W',NULL,NULL,NULL,NULL,'Kamas',1,1043,NULL,'84036',NULL,1228,40.625883,-111.20141,0,NULL,NULL,66),(175,74,1,1,0,'22Z Green Blvd W',22,'Z',NULL,'Green','Blvd','W',NULL,NULL,NULL,NULL,'Kamas',1,1043,NULL,'84036',NULL,1228,40.625883,-111.20141,0,NULL,NULL,66),(176,165,1,1,0,'618A Martin Luther King Ln NE',618,'A',NULL,'Martin Luther King','Ln','NE',NULL,NULL,NULL,NULL,'Unionville',1,1024,NULL,'63565',NULL,1228,40.472841,-92.97298,0,NULL,NULL,NULL),(177,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),(178,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),(179,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); +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,158,1,1,0,'761M Caulder Ln S',761,'M',NULL,'Caulder','Ln','S',NULL,NULL,NULL,NULL,'Staffordville',1,1006,NULL,'06077',NULL,1228,41.991645,-72.257735,0,NULL,NULL,NULL),(2,22,1,1,0,'662G States Pl SE',662,'G',NULL,'States','Pl','SE',NULL,NULL,NULL,NULL,'Eastern',1,1016,NULL,'41622',NULL,1228,37.514748,-82.81097,0,NULL,NULL,NULL),(3,13,1,1,0,'390D Beech Ave S',390,'D',NULL,'Beech','Ave','S',NULL,NULL,NULL,NULL,'Teaneck',1,1029,NULL,'07666',NULL,1228,40.890964,-74.01115,0,NULL,NULL,NULL),(4,169,1,1,0,'784F Maple Way W',784,'F',NULL,'Maple','Way','W',NULL,NULL,NULL,NULL,'Albuquerque',1,1030,NULL,'87197',NULL,1228,35.108573,-106.243911,0,NULL,NULL,NULL),(5,77,1,1,0,'143J Jackson Ave SW',143,'J',NULL,'Jackson','Ave','SW',NULL,NULL,NULL,NULL,'Durham',1,1032,NULL,'27709',NULL,1228,36.051155,-78.857651,0,NULL,NULL,NULL),(6,186,1,1,0,'253W Cadell Ln W',253,'W',NULL,'Cadell','Ln','W',NULL,NULL,NULL,NULL,'York Springs',1,1037,NULL,'17372',NULL,1228,40.003442,-77.1099,0,NULL,NULL,NULL),(7,156,1,1,0,'154B Northpoint Rd E',154,'B',NULL,'Northpoint','Rd','E',NULL,NULL,NULL,NULL,'Jackson',1,1049,NULL,'83001',NULL,1228,43.468383,-110.75714,0,NULL,NULL,NULL),(8,102,1,1,0,'844H Green Dr NW',844,'H',NULL,'Green','Dr','NW',NULL,NULL,NULL,NULL,'Aurora',1,1031,NULL,'13026',NULL,1228,42.758088,-76.66998,0,NULL,NULL,NULL),(9,92,1,1,0,'632U Green Way W',632,'U',NULL,'Green','Way','W',NULL,NULL,NULL,NULL,'Eldorado',1,1048,NULL,'54932',NULL,1228,43.830749,-88.6258,0,NULL,NULL,NULL),(10,151,1,1,0,'409N Main Way NE',409,'N',NULL,'Main','Way','NE',NULL,NULL,NULL,NULL,'Sargent',1,1009,NULL,'30275',NULL,1228,33.431181,-84.86733,0,NULL,NULL,NULL),(11,139,1,1,0,'315W Van Ness Ln SE',315,'W',NULL,'Van Ness','Ln','SE',NULL,NULL,NULL,NULL,'Fredericksburg',1,1045,NULL,'22406',NULL,1228,38.387261,-77.54676,0,NULL,NULL,NULL),(12,97,1,1,0,'393H Second Blvd E',393,'H',NULL,'Second','Blvd','E',NULL,NULL,NULL,NULL,'Jefferson',1,1020,NULL,'01522',NULL,1228,42.369658,-71.87418,0,NULL,NULL,NULL),(13,84,1,1,0,'970W Maple Ave SW',970,'W',NULL,'Maple','Ave','SW',NULL,NULL,NULL,NULL,'Grantsburg',1,1013,NULL,'47123',NULL,1228,38.284524,-86.46103,0,NULL,NULL,NULL),(14,164,1,1,0,'586C Lincoln Blvd SW',586,'C',NULL,'Lincoln','Blvd','SW',NULL,NULL,NULL,NULL,'North Hyde Park',1,1044,NULL,'05665',NULL,1228,44.67307,-72.597057,0,NULL,NULL,NULL),(15,128,1,1,0,'969I Pine Ln NW',969,'I',NULL,'Pine','Ln','NW',NULL,NULL,NULL,NULL,'Clearwater',1,1026,NULL,'68726',NULL,1228,42.163976,-98.21846,0,NULL,NULL,NULL),(16,70,1,1,0,'14D Dowlen Path W',14,'D',NULL,'Dowlen','Path','W',NULL,NULL,NULL,NULL,'Muncie',1,1013,NULL,'47305',NULL,1228,40.192293,-85.38494,0,NULL,NULL,NULL),(17,15,1,1,0,'773I Green St E',773,'I',NULL,'Green','St','E',NULL,NULL,NULL,NULL,'Braymer',1,1024,NULL,'64624',NULL,1228,39.581772,-93.79569,0,NULL,NULL,NULL),(18,161,1,1,0,'906P Green Rd SE',906,'P',NULL,'Green','Rd','SE',NULL,NULL,NULL,NULL,'Fishs Eddy',1,1031,NULL,'13774',NULL,1228,41.965435,-75.17968,0,NULL,NULL,NULL),(19,83,1,1,0,'173N Northpoint Path SW',173,'N',NULL,'Northpoint','Path','SW',NULL,NULL,NULL,NULL,'Amityville',1,1031,NULL,'11708',NULL,1228,40.922326,-72.637078,0,NULL,NULL,NULL),(20,110,1,1,0,'630A Northpoint Pl NW',630,'A',NULL,'Northpoint','Pl','NW',NULL,NULL,NULL,NULL,'Henryetta',1,1035,NULL,'74437',NULL,1228,35.447961,-95.95038,0,NULL,NULL,NULL),(21,121,1,1,0,'501R Green Pl NE',501,'R',NULL,'Green','Pl','NE',NULL,NULL,NULL,NULL,'Basalt',1,1011,NULL,'83218',NULL,1228,43.317823,-112.16356,0,NULL,NULL,NULL),(22,131,1,1,0,'347M Maple Pl S',347,'M',NULL,'Maple','Pl','S',NULL,NULL,NULL,NULL,'Mcdonough',1,1009,NULL,'30252',NULL,1228,33.464387,-84.08154,0,NULL,NULL,NULL),(23,42,1,1,0,'398I Green Pl W',398,'I',NULL,'Green','Pl','W',NULL,NULL,NULL,NULL,'Breaux Bridge',1,1017,NULL,'70517',NULL,1228,30.301254,-91.86169,0,NULL,NULL,NULL),(24,74,1,1,0,'382C Second St NW',382,'C',NULL,'Second','St','NW',NULL,NULL,NULL,NULL,'Jamestown',1,1031,NULL,'14703',NULL,1228,42.342529,-79.41091,0,NULL,NULL,NULL),(25,190,1,1,0,'976P Green Path S',976,'P',NULL,'Green','Path','S',NULL,NULL,NULL,NULL,'Waterville',1,1034,NULL,'43566',NULL,1228,41.501902,-83.73685,0,NULL,NULL,NULL),(26,165,1,1,0,'547L Jackson Blvd SW',547,'L',NULL,'Jackson','Blvd','SW',NULL,NULL,NULL,NULL,'Wittmann',1,1002,NULL,'85361',NULL,1228,33.739904,-112.59778,0,NULL,NULL,NULL),(27,31,1,1,0,'939P Lincoln Path E',939,'P',NULL,'Lincoln','Path','E',NULL,NULL,NULL,NULL,'Buffalo',1,1014,NULL,'52728',NULL,1228,41.456515,-90.73252,0,NULL,NULL,NULL),(28,196,1,1,0,'21D States Ave NE',21,'D',NULL,'States','Ave','NE',NULL,NULL,NULL,NULL,'Farnam',1,1026,NULL,'69029',NULL,1228,40.756879,-100.21881,0,NULL,NULL,NULL),(29,63,1,1,0,'34T Caulder Blvd W',34,'T',NULL,'Caulder','Blvd','W',NULL,NULL,NULL,NULL,'Green Castle',1,1024,NULL,'63544',NULL,1228,40.244242,-92.85127,0,NULL,NULL,NULL),(30,148,1,1,0,'851V Lincoln Dr NW',851,'V',NULL,'Lincoln','Dr','NW',NULL,NULL,NULL,NULL,'Herald',1,1012,NULL,'62845',NULL,1228,38.073931,-88.142657,0,NULL,NULL,NULL),(31,108,1,1,0,'616W Green Ln S',616,'W',NULL,'Green','Ln','S',NULL,NULL,NULL,NULL,'University Park',1,1014,NULL,'52595',NULL,1228,41.286619,-92.61893,0,NULL,NULL,NULL),(32,181,1,1,0,'180Y Caulder St SE',180,'Y',NULL,'Caulder','St','SE',NULL,NULL,NULL,NULL,'Sturgis',1,1021,NULL,'49091',NULL,1228,41.822244,-85.43234,0,NULL,NULL,NULL),(33,183,1,1,0,'594U Caulder Blvd W',594,'U',NULL,'Caulder','Blvd','W',NULL,NULL,NULL,NULL,'Ovid',1,1031,NULL,'14521',NULL,1228,42.699637,-76.82964,0,NULL,NULL,NULL),(34,43,1,1,0,'856F Van Ness Pl SE',856,'F',NULL,'Van Ness','Pl','SE',NULL,NULL,NULL,NULL,'Amherst',1,1028,NULL,'03031',NULL,1228,42.854886,-71.6082,0,NULL,NULL,NULL),(35,113,1,1,0,'793V Martin Luther King Ave SW',793,'V',NULL,'Martin Luther King','Ave','SW',NULL,NULL,NULL,NULL,'Plainfield',1,1029,NULL,'07062',NULL,1228,40.631252,-74.40383,0,NULL,NULL,NULL),(36,180,1,1,0,'224T Woodbridge Blvd S',224,'T',NULL,'Woodbridge','Blvd','S',NULL,NULL,NULL,NULL,'Seaside Park',1,1029,NULL,'08752',NULL,1228,39.920268,-74.07967,0,NULL,NULL,NULL),(37,4,1,1,0,'166T Northpoint Ave SE',166,'T',NULL,'Northpoint','Ave','SE',NULL,NULL,NULL,NULL,'Gregory',1,1040,NULL,'57533',NULL,1228,43.229236,-99.42096,0,NULL,NULL,NULL),(38,41,1,1,0,'930Q Main Blvd N',930,'Q',NULL,'Main','Blvd','N',NULL,NULL,NULL,NULL,'East Jordan',1,1021,NULL,'49727',NULL,1228,45.1379,-85.12252,0,NULL,NULL,NULL),(39,152,1,1,0,'782P Northpoint Dr S',782,'P',NULL,'Northpoint','Dr','S',NULL,NULL,NULL,NULL,'Shawnee',1,1034,NULL,'43782',NULL,1228,39.608984,-82.22225,0,NULL,NULL,NULL),(40,198,1,1,0,'628R El Camino Pl NE',628,'R',NULL,'El Camino','Pl','NE',NULL,NULL,NULL,NULL,'Zionsville',1,1013,NULL,'46077',NULL,1228,39.960858,-86.28252,0,NULL,NULL,NULL),(41,184,1,1,0,'268Z Second Pl NW',268,'Z',NULL,'Second','Pl','NW',NULL,NULL,NULL,NULL,'Boxford',1,1020,NULL,'01921',NULL,1228,42.677869,-71.00844,0,NULL,NULL,NULL),(42,117,1,1,0,'416S Second Rd SW',416,'S',NULL,'Second','Rd','SW',NULL,NULL,NULL,NULL,'La Jolla',1,1004,NULL,'92093',NULL,1228,33.016928,-116.846046,0,NULL,NULL,NULL),(43,72,1,1,0,'8K Main Way N',8,'K',NULL,'Main','Way','N',NULL,NULL,NULL,NULL,'West Sacramento',1,1004,NULL,'95605',NULL,1228,38.592155,-121.52805,0,NULL,NULL,NULL),(44,59,1,1,0,'60W Bay Way E',60,'W',NULL,'Bay','Way','E',NULL,NULL,NULL,NULL,'Old Washington',1,1034,NULL,'43768',NULL,1228,40.038503,-81.44232,0,NULL,NULL,NULL),(45,101,1,1,0,'975N Caulder Pl SE',975,'N',NULL,'Caulder','Pl','SE',NULL,NULL,NULL,NULL,'Salisbury',1,1032,NULL,'28144',NULL,1228,35.679639,-80.46645,0,NULL,NULL,NULL),(46,167,1,1,0,'870I Main Rd N',870,'I',NULL,'Main','Rd','N',NULL,NULL,NULL,NULL,'Rueter',1,1024,NULL,'65744',NULL,1228,36.614975,-92.89513,0,NULL,NULL,NULL),(47,197,1,1,0,'397N Lincoln Path SW',397,'N',NULL,'Lincoln','Path','SW',NULL,NULL,NULL,NULL,'Morgan',1,1034,NULL,'45641',NULL,1228,38.967813,-82.220469,0,NULL,NULL,NULL),(48,171,1,1,0,'500O Northpoint St N',500,'O',NULL,'Northpoint','St','N',NULL,NULL,NULL,NULL,'Minneapolis',1,1022,NULL,'55449',NULL,1228,45.168287,-93.20001,0,NULL,NULL,NULL),(49,154,1,1,0,'118C El Camino Rd SE',118,'C',NULL,'El Camino','Rd','SE',NULL,NULL,NULL,NULL,'Aurora',1,1005,NULL,'80045',NULL,1228,39.746736,-104.838361,0,NULL,NULL,NULL),(50,189,1,1,0,'254C Van Ness Path S',254,'C',NULL,'Van Ness','Path','S',NULL,NULL,NULL,NULL,'Kaunakakai',1,1010,NULL,'96748',NULL,1228,21.111246,-156.9741,0,NULL,NULL,NULL),(51,126,1,1,0,'350P College St E',350,'P',NULL,'College','St','E',NULL,NULL,NULL,NULL,'Orson',1,1037,NULL,'18449',NULL,1228,41.615989,-75.274708,0,NULL,NULL,NULL),(52,96,1,1,0,'414U Martin Luther King Path W',414,'U',NULL,'Martin Luther King','Path','W',NULL,NULL,NULL,NULL,'Elaine',1,1003,NULL,'72333',NULL,1228,34.305697,-90.85597,0,NULL,NULL,NULL),(53,19,1,1,0,'760N Jackson Ln E',760,'N',NULL,'Jackson','Ln','E',NULL,NULL,NULL,NULL,'Scioto Mills',1,1012,NULL,'61076',NULL,1228,42.355422,-89.667939,0,NULL,NULL,NULL),(54,119,1,1,0,'19J Lincoln Pl NW',19,'J',NULL,'Lincoln','Pl','NW',NULL,NULL,NULL,NULL,'Freeport',1,1031,NULL,'11520',NULL,1228,40.653935,-73.587,0,NULL,NULL,NULL),(55,132,1,1,0,'331X Van Ness Way S',331,'X',NULL,'Van Ness','Way','S',NULL,NULL,NULL,NULL,'Greenwood',1,1042,NULL,'76246',NULL,1228,33.41798,-97.46457,0,NULL,NULL,NULL),(56,162,1,1,0,'199V College St NE',199,'V',NULL,'College','St','NE',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60625',NULL,1228,41.971614,-87.70256,0,NULL,NULL,NULL),(57,200,1,1,0,'458R Green Blvd N',458,'R',NULL,'Green','Blvd','N',NULL,NULL,NULL,NULL,'Ashland',1,1025,NULL,'59003',NULL,1228,45.486308,-106.33169,0,NULL,NULL,NULL),(58,168,1,1,0,'635O Dowlen Path SW',635,'O',NULL,'Dowlen','Path','SW',NULL,NULL,NULL,NULL,'Valley Spring',1,1042,NULL,'76885',NULL,1228,30.904481,-98.79242,0,NULL,NULL,NULL),(59,53,1,1,0,'205L Maple Dr SE',205,'L',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'Orlando',1,1008,NULL,'32805',NULL,1228,28.53028,-81.40089,0,NULL,NULL,NULL),(60,194,1,1,0,'645B Martin Luther King St SW',645,'B',NULL,'Martin Luther King','St','SW',NULL,NULL,NULL,NULL,'Bebe',1,1042,NULL,'78603',NULL,1228,29.447211,-97.494649,0,NULL,NULL,NULL),(61,125,1,1,0,'332T College Path S',332,'T',NULL,'College','Path','S',NULL,NULL,NULL,NULL,'Climax',1,1037,NULL,'16216',NULL,1228,40.847829,-79.451575,0,NULL,NULL,NULL),(62,33,1,1,0,'543S Caulder Pl SW',543,'S',NULL,'Caulder','Pl','SW',NULL,NULL,NULL,NULL,'Reading',1,1037,NULL,'19608',NULL,1228,40.312842,-76.02422,0,NULL,NULL,NULL),(63,57,1,1,0,'951Z States Ln W',951,'Z',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Tofte',1,1022,NULL,'55615',NULL,1228,47.677189,-90.81276,0,NULL,NULL,NULL),(64,120,1,1,0,'120X Caulder Ln E',120,'X',NULL,'Caulder','Ln','E',NULL,NULL,NULL,NULL,'Washington',1,1032,NULL,'27889',NULL,1228,35.560439,-77.03459,0,NULL,NULL,NULL),(65,107,1,1,0,'712M Second Rd NW',712,'M',NULL,'Second','Rd','NW',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88527',NULL,1228,31.694842,-106.299987,0,NULL,NULL,NULL),(66,68,1,1,0,'801B Northpoint Ave NE',801,'B',NULL,'Northpoint','Ave','NE',NULL,NULL,NULL,NULL,'Theriot',1,1017,NULL,'70397',NULL,1228,29.352141,-90.82604,0,NULL,NULL,NULL),(67,192,1,1,0,'167U States Rd SE',167,'U',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Gibsonville',1,1032,NULL,'27249',NULL,1228,36.125747,-79.56352,0,NULL,NULL,NULL),(68,47,1,1,0,'320Q Green Blvd SE',320,'Q',NULL,'Green','Blvd','SE',NULL,NULL,NULL,NULL,'Penrose',1,1032,NULL,'28766',NULL,1228,35.264303,-82.62357,0,NULL,NULL,NULL),(69,80,1,1,0,'341G College Ln SE',341,'G',NULL,'College','Ln','SE',NULL,NULL,NULL,NULL,'Delmar',1,1007,NULL,'19940',NULL,1228,38.469655,-75.5669,0,NULL,NULL,NULL),(70,179,1,1,0,'755B Jackson Path W',755,'B',NULL,'Jackson','Path','W',NULL,NULL,NULL,NULL,'Mooreland',1,1013,NULL,'47360',NULL,1228,40.00296,-85.25831,0,NULL,NULL,NULL),(71,14,1,1,0,'781A Northpoint Way S',781,'A',NULL,'Northpoint','Way','S',NULL,NULL,NULL,NULL,'Tuscarora',1,1037,NULL,'17982',NULL,1228,40.771111,-76.03747,0,NULL,NULL,NULL),(72,81,1,1,0,'27P Lincoln Pl SE',27,'P',NULL,'Lincoln','Pl','SE',NULL,NULL,NULL,NULL,'Yuma',1,1041,NULL,'38390',NULL,1228,35.843868,-88.36661,0,NULL,NULL,NULL),(73,8,1,1,0,'118K Bay Path S',118,'K',NULL,'Bay','Path','S',NULL,NULL,NULL,NULL,'Floral Park',1,1031,NULL,'11001',NULL,1228,40.7232,-73.70475,0,NULL,NULL,NULL),(74,67,1,1,0,'494U Caulder Pl W',494,'U',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Silver Spring',1,1019,NULL,'20911',NULL,1228,39.143979,-77.207617,0,NULL,NULL,NULL),(75,50,1,1,0,'243X Beech St N',243,'X',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Jefferson',1,1003,NULL,'72079',NULL,1228,34.401717,-92.20272,0,NULL,NULL,NULL),(76,20,1,1,0,'732I Dowlen Blvd SE',732,'I',NULL,'Dowlen','Blvd','SE',NULL,NULL,NULL,NULL,'Portland',1,1037,NULL,'18351',NULL,1228,40.920622,-75.09773,0,NULL,NULL,NULL),(77,178,3,1,0,'469D Green Pl W',469,'D',NULL,'Green','Pl','W',NULL,'Churchgate',NULL,NULL,'Running Springs',1,1004,NULL,'92382',NULL,1228,34.205626,-117.10499,0,NULL,NULL,NULL),(78,145,2,1,0,'469D Green Pl W',469,'D',NULL,'Green','Pl','W',NULL,'Churchgate',NULL,NULL,'Running Springs',1,1004,NULL,'92382',NULL,1228,34.205626,-117.10499,0,NULL,NULL,77),(79,34,3,1,0,'877D Dowlen Way E',877,'D',NULL,'Dowlen','Way','E',NULL,'Attn: Accounting',NULL,NULL,'Yakima',1,1046,NULL,'98909',NULL,1228,46.637538,-120.794978,0,NULL,NULL,NULL),(80,170,3,1,0,'367M Pine Path NE',367,'M',NULL,'Pine','Path','NE',NULL,'Receiving',NULL,NULL,'Weston',1,1005,NULL,'81091',NULL,1228,37.193451,-104.97188,0,NULL,NULL,NULL),(81,73,2,1,0,'367M Pine Path NE',367,'M',NULL,'Pine','Path','NE',NULL,'Receiving',NULL,NULL,'Weston',1,1005,NULL,'81091',NULL,1228,37.193451,-104.97188,0,NULL,NULL,80),(82,172,3,1,0,'538P Maple Pl SE',538,'P',NULL,'Maple','Pl','SE',NULL,'Mailstop 101',NULL,NULL,'Ellenton',1,1009,NULL,'31747',NULL,1228,31.176563,-83.58801,0,NULL,NULL,NULL),(83,187,2,1,0,'538P Maple Pl SE',538,'P',NULL,'Maple','Pl','SE',NULL,'Mailstop 101',NULL,NULL,'Ellenton',1,1009,NULL,'31747',NULL,1228,31.176563,-83.58801,0,NULL,NULL,82),(84,44,3,1,0,'164E Main Path S',164,'E',NULL,'Main','Path','S',NULL,'c/o OPDC',NULL,NULL,'Steuben',1,1018,NULL,'04680',NULL,1228,44.510306,-67.94879,0,NULL,NULL,NULL),(85,199,3,1,0,'952R Caulder Path SW',952,'R',NULL,'Caulder','Path','SW',NULL,'Attn: Development',NULL,NULL,'Grants',1,1030,NULL,'87020',NULL,1228,35.122129,-107.90777,0,NULL,NULL,NULL),(86,135,2,1,0,'952R Caulder Path SW',952,'R',NULL,'Caulder','Path','SW',NULL,'Attn: Development',NULL,NULL,'Grants',1,1030,NULL,'87020',NULL,1228,35.122129,-107.90777,0,NULL,NULL,85),(87,21,3,1,0,'331D Northpoint St NE',331,'D',NULL,'Northpoint','St','NE',NULL,'Subscriptions Dept',NULL,NULL,'Dresser',1,1048,NULL,'54009',NULL,1228,45.351585,-92.60246,0,NULL,NULL,NULL),(88,7,3,1,0,'292F Caulder Ave N',292,'F',NULL,'Caulder','Ave','N',NULL,'Editorial Dept',NULL,NULL,'Chidester',1,1003,NULL,'71726',NULL,1228,33.686264,-93.01966,0,NULL,NULL,NULL),(89,17,2,1,0,'292F Caulder Ave N',292,'F',NULL,'Caulder','Ave','N',NULL,'Editorial Dept',NULL,NULL,'Chidester',1,1003,NULL,'71726',NULL,1228,33.686264,-93.01966,0,NULL,NULL,88),(90,86,3,1,0,'64F Lincoln Ave W',64,'F',NULL,'Lincoln','Ave','W',NULL,'Attn: Development',NULL,NULL,'Sibley',1,1012,NULL,'61773',NULL,1228,40.584937,-88.38028,0,NULL,NULL,NULL),(91,138,2,1,0,'64F Lincoln Ave W',64,'F',NULL,'Lincoln','Ave','W',NULL,'Attn: Development',NULL,NULL,'Sibley',1,1012,NULL,'61773',NULL,1228,40.584937,-88.38028,0,NULL,NULL,90),(92,115,3,1,0,'366D El Camino Path SW',366,'D',NULL,'El Camino','Path','SW',NULL,'Community Relations',NULL,NULL,'Denver',1,1005,NULL,'80265',NULL,1228,39.738752,-104.408349,0,NULL,NULL,NULL),(93,160,2,1,0,'366D El Camino Path SW',366,'D',NULL,'El Camino','Path','SW',NULL,'Community Relations',NULL,NULL,'Denver',1,1005,NULL,'80265',NULL,1228,39.738752,-104.408349,0,NULL,NULL,92),(94,54,3,1,0,'587Y Pine Pl NW',587,'Y',NULL,'Pine','Pl','NW',NULL,'Mailstop 101',NULL,NULL,'Colorado Springs',1,1005,NULL,'80935',NULL,1228,38.82469,-104.562027,0,NULL,NULL,NULL),(95,12,3,1,0,'124K States Pl N',124,'K',NULL,'States','Pl','N',NULL,'Community Relations',NULL,NULL,'Gowanda',1,1031,NULL,'14070',NULL,1228,42.453234,-78.9348,0,NULL,NULL,NULL),(96,32,3,1,0,'375I Maple Way S',375,'I',NULL,'Maple','Way','S',NULL,'Cuffe Parade',NULL,NULL,'East Saint Louis',1,1012,NULL,'62201',NULL,1228,38.62855,-90.14609,0,NULL,NULL,NULL),(97,190,2,0,0,'375I Maple Way S',375,'I',NULL,'Maple','Way','S',NULL,'Cuffe Parade',NULL,NULL,'East Saint Louis',1,1012,NULL,'62201',NULL,1228,38.62855,-90.14609,0,NULL,NULL,96),(98,91,3,1,0,'592D Green St SW',592,'D',NULL,'Green','St','SW',NULL,'Receiving',NULL,NULL,'Alanreed',1,1042,NULL,'79002',NULL,1228,35.201105,-100.74939,0,NULL,NULL,NULL),(99,71,3,1,0,'923L Woodbridge Pl NE',923,'L',NULL,'Woodbridge','Pl','NE',NULL,'Mailstop 101',NULL,NULL,'Wolfeboro',1,1028,NULL,'03894',NULL,1228,43.596233,-71.19552,0,NULL,NULL,NULL),(100,93,2,1,0,'923L Woodbridge Pl NE',923,'L',NULL,'Woodbridge','Pl','NE',NULL,'Mailstop 101',NULL,NULL,'Wolfeboro',1,1028,NULL,'03894',NULL,1228,43.596233,-71.19552,0,NULL,NULL,99),(101,65,3,1,0,'853D Lincoln Rd SW',853,'D',NULL,'Lincoln','Rd','SW',NULL,'Subscriptions Dept',NULL,NULL,'Dalmatia',1,1037,NULL,'17017',NULL,1228,40.644085,-76.87648,0,NULL,NULL,NULL),(102,147,3,1,0,'326A Woodbridge Rd SE',326,'A',NULL,'Woodbridge','Rd','SE',NULL,'Cuffe Parade',NULL,NULL,'Kimberly',1,1048,NULL,'54136',NULL,1228,44.268387,-88.33656,0,NULL,NULL,NULL),(103,87,2,1,0,'326A Woodbridge Rd SE',326,'A',NULL,'Woodbridge','Rd','SE',NULL,'Cuffe Parade',NULL,NULL,'Kimberly',1,1048,NULL,'54136',NULL,1228,44.268387,-88.33656,0,NULL,NULL,102),(104,114,3,1,0,'804G Jackson Rd SE',804,'G',NULL,'Jackson','Rd','SE',NULL,'Donor Relations',NULL,NULL,'Penelope',1,1042,NULL,'76676',NULL,1228,31.861594,-96.93466,0,NULL,NULL,NULL),(105,78,3,1,0,'981T Main Ln N',981,'T',NULL,'Main','Ln','N',NULL,'c/o OPDC',NULL,NULL,'Idaho Falls',1,1011,NULL,'83406',NULL,1228,43.458004,-111.95925,0,NULL,NULL,NULL),(106,166,3,1,0,'363K Pine St SW',363,'K',NULL,'Pine','St','SW',NULL,'Mailstop 101',NULL,NULL,'Rock Stream',1,1031,NULL,'14878',NULL,1228,42.451153,-76.93132,0,NULL,NULL,NULL),(107,106,2,1,0,'363K Pine St SW',363,'K',NULL,'Pine','St','SW',NULL,'Mailstop 101',NULL,NULL,'Rock Stream',1,1031,NULL,'14878',NULL,1228,42.451153,-76.93132,0,NULL,NULL,106),(108,185,1,1,0,'458R Green Blvd N',458,'R',NULL,'Green','Blvd','N',NULL,NULL,NULL,NULL,'Ashland',1,1025,NULL,'59003',NULL,1228,45.486308,-106.33169,0,NULL,NULL,57),(109,159,1,1,0,'458R Green Blvd N',458,'R',NULL,'Green','Blvd','N',NULL,NULL,NULL,NULL,'Ashland',1,1025,NULL,'59003',NULL,1228,45.486308,-106.33169,0,NULL,NULL,57),(110,133,1,1,0,'458R Green Blvd N',458,'R',NULL,'Green','Blvd','N',NULL,NULL,NULL,NULL,'Ashland',1,1025,NULL,'59003',NULL,1228,45.486308,-106.33169,0,NULL,NULL,57),(111,136,1,1,0,'458R Green Blvd N',458,'R',NULL,'Green','Blvd','N',NULL,NULL,NULL,NULL,'Ashland',1,1025,NULL,'59003',NULL,1228,45.486308,-106.33169,0,NULL,NULL,57),(112,18,1,1,0,'635O Dowlen Path SW',635,'O',NULL,'Dowlen','Path','SW',NULL,NULL,NULL,NULL,'Valley Spring',1,1042,NULL,'76885',NULL,1228,30.904481,-98.79242,0,NULL,NULL,58),(113,146,1,1,0,'635O Dowlen Path SW',635,'O',NULL,'Dowlen','Path','SW',NULL,NULL,NULL,NULL,'Valley Spring',1,1042,NULL,'76885',NULL,1228,30.904481,-98.79242,0,NULL,NULL,58),(114,10,1,1,0,'635O Dowlen Path SW',635,'O',NULL,'Dowlen','Path','SW',NULL,NULL,NULL,NULL,'Valley Spring',1,1042,NULL,'76885',NULL,1228,30.904481,-98.79242,0,NULL,NULL,58),(115,116,1,1,0,'173C Bay Dr N',173,'C',NULL,'Bay','Dr','N',NULL,NULL,NULL,NULL,'Tolu',1,1016,NULL,'42084',NULL,1228,37.433695,-88.24498,0,NULL,NULL,NULL),(116,29,1,1,0,'205L Maple Dr SE',205,'L',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'Orlando',1,1008,NULL,'32805',NULL,1228,28.53028,-81.40089,0,NULL,NULL,59),(117,28,1,1,0,'205L Maple Dr SE',205,'L',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'Orlando',1,1008,NULL,'32805',NULL,1228,28.53028,-81.40089,0,NULL,NULL,59),(118,17,1,0,0,'205L Maple Dr SE',205,'L',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'Orlando',1,1008,NULL,'32805',NULL,1228,28.53028,-81.40089,0,NULL,NULL,59),(119,45,1,1,0,'205L Maple Dr SE',205,'L',NULL,'Maple','Dr','SE',NULL,NULL,NULL,NULL,'Orlando',1,1008,NULL,'32805',NULL,1228,28.53028,-81.40089,0,NULL,NULL,59),(120,5,1,1,0,'645B Martin Luther King St SW',645,'B',NULL,'Martin Luther King','St','SW',NULL,NULL,NULL,NULL,'Bebe',1,1042,NULL,'78603',NULL,1228,29.447211,-97.494649,0,NULL,NULL,60),(121,61,1,1,0,'645B Martin Luther King St SW',645,'B',NULL,'Martin Luther King','St','SW',NULL,NULL,NULL,NULL,'Bebe',1,1042,NULL,'78603',NULL,1228,29.447211,-97.494649,0,NULL,NULL,60),(122,93,1,0,0,'645B Martin Luther King St SW',645,'B',NULL,'Martin Luther King','St','SW',NULL,NULL,NULL,NULL,'Bebe',1,1042,NULL,'78603',NULL,1228,29.447211,-97.494649,0,NULL,NULL,60),(123,52,1,1,0,'645B Martin Luther King St SW',645,'B',NULL,'Martin Luther King','St','SW',NULL,NULL,NULL,NULL,'Bebe',1,1042,NULL,'78603',NULL,1228,29.447211,-97.494649,0,NULL,NULL,60),(124,2,1,1,0,'332T College Path S',332,'T',NULL,'College','Path','S',NULL,NULL,NULL,NULL,'Climax',1,1037,NULL,'16216',NULL,1228,40.847829,-79.451575,0,NULL,NULL,61),(125,27,1,1,0,'332T College Path S',332,'T',NULL,'College','Path','S',NULL,NULL,NULL,NULL,'Climax',1,1037,NULL,'16216',NULL,1228,40.847829,-79.451575,0,NULL,NULL,61),(126,11,1,1,0,'332T College Path S',332,'T',NULL,'College','Path','S',NULL,NULL,NULL,NULL,'Climax',1,1037,NULL,'16216',NULL,1228,40.847829,-79.451575,0,NULL,NULL,61),(127,36,1,1,0,'700B Main St E',700,'B',NULL,'Main','St','E',NULL,NULL,NULL,NULL,'Moon',1,1045,NULL,'23119',NULL,1228,37.451894,-76.2904,0,NULL,NULL,NULL),(128,3,1,1,0,'543S Caulder Pl SW',543,'S',NULL,'Caulder','Pl','SW',NULL,NULL,NULL,NULL,'Reading',1,1037,NULL,'19608',NULL,1228,40.312842,-76.02422,0,NULL,NULL,62),(129,82,1,1,0,'543S Caulder Pl SW',543,'S',NULL,'Caulder','Pl','SW',NULL,NULL,NULL,NULL,'Reading',1,1037,NULL,'19608',NULL,1228,40.312842,-76.02422,0,NULL,NULL,62),(130,175,1,1,0,'543S Caulder Pl SW',543,'S',NULL,'Caulder','Pl','SW',NULL,NULL,NULL,NULL,'Reading',1,1037,NULL,'19608',NULL,1228,40.312842,-76.02422,0,NULL,NULL,62),(131,88,1,1,0,'562G Lincoln Path S',562,'G',NULL,'Lincoln','Path','S',NULL,NULL,NULL,NULL,'Welling',1,1035,NULL,'74471',NULL,1228,35.837827,-94.87402,0,NULL,NULL,NULL),(132,60,1,1,0,'951Z States Ln W',951,'Z',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Tofte',1,1022,NULL,'55615',NULL,1228,47.677189,-90.81276,0,NULL,NULL,63),(133,143,1,1,0,'951Z States Ln W',951,'Z',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Tofte',1,1022,NULL,'55615',NULL,1228,47.677189,-90.81276,0,NULL,NULL,63),(134,35,1,1,0,'951Z States Ln W',951,'Z',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Tofte',1,1022,NULL,'55615',NULL,1228,47.677189,-90.81276,0,NULL,NULL,63),(135,73,1,0,0,'951Z States Ln W',951,'Z',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Tofte',1,1022,NULL,'55615',NULL,1228,47.677189,-90.81276,0,NULL,NULL,63),(136,144,1,1,0,'120X Caulder Ln E',120,'X',NULL,'Caulder','Ln','E',NULL,NULL,NULL,NULL,'Washington',1,1032,NULL,'27889',NULL,1228,35.560439,-77.03459,0,NULL,NULL,64),(137,150,1,1,0,'120X Caulder Ln E',120,'X',NULL,'Caulder','Ln','E',NULL,NULL,NULL,NULL,'Washington',1,1032,NULL,'27889',NULL,1228,35.560439,-77.03459,0,NULL,NULL,64),(138,30,1,1,0,'120X Caulder Ln E',120,'X',NULL,'Caulder','Ln','E',NULL,NULL,NULL,NULL,'Washington',1,1032,NULL,'27889',NULL,1228,35.560439,-77.03459,0,NULL,NULL,64),(139,137,1,1,0,'923B Northpoint Blvd NW',923,'B',NULL,'Northpoint','Blvd','NW',NULL,NULL,NULL,NULL,'Milpitas',1,1004,NULL,'95036',NULL,1228,37.456807,-121.913632,0,NULL,NULL,NULL),(140,95,1,1,0,'712M Second Rd NW',712,'M',NULL,'Second','Rd','NW',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88527',NULL,1228,31.694842,-106.299987,0,NULL,NULL,65),(141,109,1,1,0,'712M Second Rd NW',712,'M',NULL,'Second','Rd','NW',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88527',NULL,1228,31.694842,-106.299987,0,NULL,NULL,65),(142,100,1,1,0,'712M Second Rd NW',712,'M',NULL,'Second','Rd','NW',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88527',NULL,1228,31.694842,-106.299987,0,NULL,NULL,65),(143,64,1,1,0,'650N Jackson Way E',650,'N',NULL,'Jackson','Way','E',NULL,NULL,NULL,NULL,'Flensburg',1,1022,NULL,'56328',NULL,1228,45.953535,-94.52834,0,NULL,NULL,NULL),(144,135,1,0,0,'801B Northpoint Ave NE',801,'B',NULL,'Northpoint','Ave','NE',NULL,NULL,NULL,NULL,'Theriot',1,1017,NULL,'70397',NULL,1228,29.352141,-90.82604,0,NULL,NULL,66),(145,173,1,1,0,'801B Northpoint Ave NE',801,'B',NULL,'Northpoint','Ave','NE',NULL,NULL,NULL,NULL,'Theriot',1,1017,NULL,'70397',NULL,1228,29.352141,-90.82604,0,NULL,NULL,66),(146,163,1,1,0,'801B Northpoint Ave NE',801,'B',NULL,'Northpoint','Ave','NE',NULL,NULL,NULL,NULL,'Theriot',1,1017,NULL,'70397',NULL,1228,29.352141,-90.82604,0,NULL,NULL,66),(147,105,1,1,0,'801B Northpoint Ave NE',801,'B',NULL,'Northpoint','Ave','NE',NULL,NULL,NULL,NULL,'Theriot',1,1017,NULL,'70397',NULL,1228,29.352141,-90.82604,0,NULL,NULL,66),(148,138,1,0,0,'167U States Rd SE',167,'U',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Gibsonville',1,1032,NULL,'27249',NULL,1228,36.125747,-79.56352,0,NULL,NULL,67),(149,56,1,1,0,'167U States Rd SE',167,'U',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Gibsonville',1,1032,NULL,'27249',NULL,1228,36.125747,-79.56352,0,NULL,NULL,67),(150,79,1,1,0,'167U States Rd SE',167,'U',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Gibsonville',1,1032,NULL,'27249',NULL,1228,36.125747,-79.56352,0,NULL,NULL,67),(151,140,1,1,0,'167U States Rd SE',167,'U',NULL,'States','Rd','SE',NULL,NULL,NULL,NULL,'Gibsonville',1,1032,NULL,'27249',NULL,1228,36.125747,-79.56352,0,NULL,NULL,67),(152,201,1,1,0,'320Q Green Blvd SE',320,'Q',NULL,'Green','Blvd','SE',NULL,NULL,NULL,NULL,'Penrose',1,1032,NULL,'28766',NULL,1228,35.264303,-82.62357,0,NULL,NULL,68),(153,89,1,1,0,'320Q Green Blvd SE',320,'Q',NULL,'Green','Blvd','SE',NULL,NULL,NULL,NULL,'Penrose',1,1032,NULL,'28766',NULL,1228,35.264303,-82.62357,0,NULL,NULL,68),(154,106,1,0,0,'320Q Green Blvd SE',320,'Q',NULL,'Green','Blvd','SE',NULL,NULL,NULL,NULL,'Penrose',1,1032,NULL,'28766',NULL,1228,35.264303,-82.62357,0,NULL,NULL,68),(155,187,1,0,0,'320Q Green Blvd SE',320,'Q',NULL,'Green','Blvd','SE',NULL,NULL,NULL,NULL,'Penrose',1,1032,NULL,'28766',NULL,1228,35.264303,-82.62357,0,NULL,NULL,68),(156,191,1,1,0,'341G College Ln SE',341,'G',NULL,'College','Ln','SE',NULL,NULL,NULL,NULL,'Delmar',1,1007,NULL,'19940',NULL,1228,38.469655,-75.5669,0,NULL,NULL,69),(157,118,1,1,0,'341G College Ln SE',341,'G',NULL,'College','Ln','SE',NULL,NULL,NULL,NULL,'Delmar',1,1007,NULL,'19940',NULL,1228,38.469655,-75.5669,0,NULL,NULL,69),(158,9,1,1,0,'341G College Ln SE',341,'G',NULL,'College','Ln','SE',NULL,NULL,NULL,NULL,'Delmar',1,1007,NULL,'19940',NULL,1228,38.469655,-75.5669,0,NULL,NULL,69),(159,176,1,1,0,'43I Green Ln NE',43,'I',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Pickerington',1,1034,NULL,'43147',NULL,1228,39.904288,-82.756,0,NULL,NULL,NULL),(160,62,1,1,0,'755B Jackson Path W',755,'B',NULL,'Jackson','Path','W',NULL,NULL,NULL,NULL,'Mooreland',1,1013,NULL,'47360',NULL,1228,40.00296,-85.25831,0,NULL,NULL,70),(161,40,1,1,0,'755B Jackson Path W',755,'B',NULL,'Jackson','Path','W',NULL,NULL,NULL,NULL,'Mooreland',1,1013,NULL,'47360',NULL,1228,40.00296,-85.25831,0,NULL,NULL,70),(162,85,1,1,0,'755B Jackson Path W',755,'B',NULL,'Jackson','Path','W',NULL,NULL,NULL,NULL,'Mooreland',1,1013,NULL,'47360',NULL,1228,40.00296,-85.25831,0,NULL,NULL,70),(163,23,1,1,0,'755B Jackson Path W',755,'B',NULL,'Jackson','Path','W',NULL,NULL,NULL,NULL,'Mooreland',1,1013,NULL,'47360',NULL,1228,40.00296,-85.25831,0,NULL,NULL,70),(164,123,1,1,0,'781A Northpoint Way S',781,'A',NULL,'Northpoint','Way','S',NULL,NULL,NULL,NULL,'Tuscarora',1,1037,NULL,'17982',NULL,1228,40.771111,-76.03747,0,NULL,NULL,71),(165,142,1,1,0,'781A Northpoint Way S',781,'A',NULL,'Northpoint','Way','S',NULL,NULL,NULL,NULL,'Tuscarora',1,1037,NULL,'17982',NULL,1228,40.771111,-76.03747,0,NULL,NULL,71),(166,130,1,1,0,'781A Northpoint Way S',781,'A',NULL,'Northpoint','Way','S',NULL,NULL,NULL,NULL,'Tuscarora',1,1037,NULL,'17982',NULL,1228,40.771111,-76.03747,0,NULL,NULL,71),(167,39,1,1,0,'191K Northpoint Ave E',191,'K',NULL,'Northpoint','Ave','E',NULL,NULL,NULL,NULL,'Charleston',1,1047,NULL,'25314',NULL,1228,38.335969,-81.66084,0,NULL,NULL,NULL),(168,153,1,1,0,'27P Lincoln Pl SE',27,'P',NULL,'Lincoln','Pl','SE',NULL,NULL,NULL,NULL,'Yuma',1,1041,NULL,'38390',NULL,1228,35.843868,-88.36661,0,NULL,NULL,72),(169,90,1,1,0,'27P Lincoln Pl SE',27,'P',NULL,'Lincoln','Pl','SE',NULL,NULL,NULL,NULL,'Yuma',1,1041,NULL,'38390',NULL,1228,35.843868,-88.36661,0,NULL,NULL,72),(170,127,1,1,0,'27P Lincoln Pl SE',27,'P',NULL,'Lincoln','Pl','SE',NULL,NULL,NULL,NULL,'Yuma',1,1041,NULL,'38390',NULL,1228,35.843868,-88.36661,0,NULL,NULL,72),(171,122,1,1,0,'27P Lincoln Pl SE',27,'P',NULL,'Lincoln','Pl','SE',NULL,NULL,NULL,NULL,'Yuma',1,1041,NULL,'38390',NULL,1228,35.843868,-88.36661,0,NULL,NULL,72),(172,157,1,1,0,'118K Bay Path S',118,'K',NULL,'Bay','Path','S',NULL,NULL,NULL,NULL,'Floral Park',1,1031,NULL,'11001',NULL,1228,40.7232,-73.70475,0,NULL,NULL,73),(173,49,1,1,0,'118K Bay Path S',118,'K',NULL,'Bay','Path','S',NULL,NULL,NULL,NULL,'Floral Park',1,1031,NULL,'11001',NULL,1228,40.7232,-73.70475,0,NULL,NULL,73),(174,99,1,1,0,'118K Bay Path S',118,'K',NULL,'Bay','Path','S',NULL,NULL,NULL,NULL,'Floral Park',1,1031,NULL,'11001',NULL,1228,40.7232,-73.70475,0,NULL,NULL,73),(175,188,1,1,0,'970F Woodbridge Pl W',970,'F',NULL,'Woodbridge','Pl','W',NULL,NULL,NULL,NULL,'Huntsville',1,1042,NULL,'77342',NULL,1228,30.78128,-95.59527,0,NULL,NULL,NULL),(176,195,1,1,0,'494U Caulder Pl W',494,'U',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Silver Spring',1,1019,NULL,'20911',NULL,1228,39.143979,-77.207617,0,NULL,NULL,74),(177,48,1,1,0,'494U Caulder Pl W',494,'U',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Silver Spring',1,1019,NULL,'20911',NULL,1228,39.143979,-77.207617,0,NULL,NULL,74),(178,134,1,1,0,'494U Caulder Pl W',494,'U',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Silver Spring',1,1019,NULL,'20911',NULL,1228,39.143979,-77.207617,0,NULL,NULL,74),(179,46,1,1,0,'915Z Jackson Pl SE',915,'Z',NULL,'Jackson','Pl','SE',NULL,NULL,NULL,NULL,'Ong',1,1026,NULL,'68452',NULL,1228,40.394354,-97.84507,0,NULL,NULL,NULL),(180,58,1,1,0,'243X Beech St N',243,'X',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Jefferson',1,1003,NULL,'72079',NULL,1228,34.401717,-92.20272,0,NULL,NULL,75),(181,129,1,1,0,'243X Beech St N',243,'X',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Jefferson',1,1003,NULL,'72079',NULL,1228,34.401717,-92.20272,0,NULL,NULL,75),(182,193,1,1,0,'243X Beech St N',243,'X',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Jefferson',1,1003,NULL,'72079',NULL,1228,34.401717,-92.20272,0,NULL,NULL,75),(183,155,1,1,0,'818F Maple Way NE',818,'F',NULL,'Maple','Way','NE',NULL,NULL,NULL,NULL,'Worthington',1,1013,NULL,'47471',NULL,1228,39.123925,-86.9845,0,NULL,NULL,NULL),(184,145,1,0,0,'732I Dowlen Blvd SE',732,'I',NULL,'Dowlen','Blvd','SE',NULL,NULL,NULL,NULL,'Portland',1,1037,NULL,'18351',NULL,1228,40.920622,-75.09773,0,NULL,NULL,76),(185,174,1,1,0,'732I Dowlen Blvd SE',732,'I',NULL,'Dowlen','Blvd','SE',NULL,NULL,NULL,NULL,'Portland',1,1037,NULL,'18351',NULL,1228,40.920622,-75.09773,0,NULL,NULL,76),(186,25,1,1,0,'732I Dowlen Blvd SE',732,'I',NULL,'Dowlen','Blvd','SE',NULL,NULL,NULL,NULL,'Portland',1,1037,NULL,'18351',NULL,1228,40.920622,-75.09773,0,NULL,NULL,76),(187,24,1,1,0,'732I Dowlen Blvd SE',732,'I',NULL,'Dowlen','Blvd','SE',NULL,NULL,NULL,NULL,'Portland',1,1037,NULL,'18351',NULL,1228,40.920622,-75.09773,0,NULL,NULL,76),(188,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),(189,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),(190,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */; UNLOCK TABLES; @@ -208,7 +208,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contact` WRITE; /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */; -INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,'Default Organization',NULL,NULL,NULL,0,NULL,'2018-05-21 20:27:11'),(2,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Shauna','Shauna Wattson',NULL,NULL,NULL,'4',NULL,'Both','255999578',NULL,'Sample Data','Shauna','H','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Wattson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(3,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Jones, Kiara','Kiara Jones',NULL,NULL,NULL,'1',NULL,'Both','2445144569',NULL,'Sample Data','Kiara','R','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Jones',NULL,1,'1958-08-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(4,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Barkley, Shauna','Shauna Barkley',NULL,NULL,NULL,NULL,NULL,'Both','1145257394',NULL,'Sample Data','Shauna','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Barkley',NULL,1,'2004-05-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(5,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Parker, Valene','Valene Parker',NULL,NULL,NULL,NULL,NULL,'Both','2439115501',NULL,'Sample Data','Valene','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Parker',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(6,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'adams.truman49@infomail.biz','adams.truman49@infomail.biz',NULL,NULL,NULL,'2',NULL,'Both','4167642695',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear adams.truman49@infomail.biz',1,NULL,'Dear adams.truman49@infomail.biz',1,NULL,'adams.truman49@infomail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(7,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Tanya','Dr. Tanya McReynolds',NULL,NULL,NULL,'2',NULL,'Both','2833475968',NULL,'Sample Data','Tanya','R','McReynolds',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(8,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Craig','Craig Dimitrov Jr.',NULL,NULL,NULL,'5',NULL,'Both','3815881421',NULL,'Sample Data','Craig','E','Dimitrov',NULL,1,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Dimitrov Jr.',NULL,2,'1959-08-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(9,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen, Rolando','Rolando Olsen Sr.',NULL,NULL,NULL,'1',NULL,'Both','2121296962',NULL,'Sample Data','Rolando','W','Olsen',NULL,2,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Olsen Sr.',NULL,2,'1942-04-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(10,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Nebraska Empowerment Solutions','Nebraska Empowerment Solutions',NULL,NULL,NULL,NULL,NULL,'Both','3526009064',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Nebraska Empowerment Solutions',NULL,NULL,NULL,0,NULL,NULL,45,'Nebraska Empowerment Solutions',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(11,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Josefa','Mrs. Josefa Cruz',NULL,NULL,NULL,NULL,NULL,'Both','97145743',NULL,'Sample Data','Josefa','','Cruz',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Cruz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(12,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Jensen family','Jensen family',NULL,NULL,NULL,NULL,NULL,'Both','797435572',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(13,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Kiara','Kiara Jacobs',NULL,NULL,NULL,'3',NULL,'Both','2329177439',NULL,'Sample Data','Kiara','','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Jacobs',NULL,1,'1957-09-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(14,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Ivanov, Carylon','Dr. Carylon Ivanov',NULL,NULL,NULL,'1',NULL,'Both','3841280474',NULL,'Sample Data','Carylon','P','Ivanov',4,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Dr. Carylon Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,'Arkansas Sports Fellowship',NULL,NULL,16,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(15,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen, Andrew','Andrew Olsen',NULL,NULL,NULL,'2',NULL,'Both','3402005266',NULL,'Sample Data','Andrew','','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(16,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Arkansas Sports Fellowship','Arkansas Sports Fellowship',NULL,NULL,NULL,NULL,NULL,'Both','3295551137',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Arkansas Sports Fellowship',NULL,NULL,NULL,0,NULL,NULL,14,'Arkansas Sports Fellowship',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(17,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen, Erik','Erik Olsen III',NULL,NULL,NULL,'5',NULL,'Both','1259292682',NULL,'Sample Data','Erik','J','Olsen',NULL,4,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Olsen III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(18,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Ashley','Mr. Ashley McReynolds Jr.',NULL,NULL,NULL,NULL,NULL,'Both','68872917',NULL,'Sample Data','Ashley','E','McReynolds',3,1,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mr. Ashley McReynolds Jr.',NULL,2,'1941-04-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(19,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Maria','Maria McReynolds',NULL,NULL,NULL,'2',NULL,'Both','2599277622',NULL,'Sample Data','Maria','V','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria McReynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(20,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'McReynolds, Bernadette','Dr. Bernadette McReynolds',NULL,NULL,NULL,'4',NULL,'Both','1201192588',NULL,'Sample Data','Bernadette','','McReynolds',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette McReynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(21,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Alexia','Alexia Jensen',NULL,NULL,NULL,'2',NULL,'Both','1964478975',NULL,'Sample Data','Alexia','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Jensen',NULL,NULL,'1978-06-24',0,NULL,NULL,NULL,'Rural Literacy Association',NULL,NULL,34,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(22,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Olsen-McReynolds, Shauna','Ms. Shauna Olsen-McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','3733823082',NULL,'Sample Data','Shauna','G','Olsen-McReynolds',2,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Ms. Shauna Olsen-McReynolds',NULL,1,'1981-03-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(23,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wattson, Lashawnda','Lashawnda Wattson',NULL,NULL,NULL,NULL,NULL,'Both','3926771014',NULL,'Sample Data','Lashawnda','Y','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Wattson',NULL,NULL,'1932-09-02',1,'2017-10-24',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(24,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Norris','Norris Samson',NULL,NULL,NULL,NULL,NULL,'Both','2564827585',NULL,'Sample Data','Norris','R','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Samson',NULL,2,'1951-06-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(25,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Barkley, Esta','Dr. Esta Barkley',NULL,NULL,NULL,NULL,NULL,'Both','2407753300',NULL,'Sample Data','Esta','M','Barkley',4,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Dr. Esta Barkley',NULL,NULL,'1969-12-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(26,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Mei','Mrs. Mei Cooper',NULL,NULL,NULL,NULL,NULL,'Both','1149940772',NULL,'Sample Data','Mei','','Cooper',1,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mrs. Mei Cooper',NULL,1,'1983-06-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(27,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Valene','Dr. Valene Roberts',NULL,NULL,NULL,NULL,NULL,'Both','2209497418',NULL,'Sample Data','Valene','','Roberts',4,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Dr. Valene Roberts',NULL,NULL,'1974-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(28,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Beula','Beula Wagner',NULL,NULL,NULL,NULL,NULL,'Both','109524906',NULL,'Sample Data','Beula','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Wagner',NULL,1,'1984-05-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(29,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen family','Nielsen family',NULL,NULL,NULL,NULL,NULL,'Both','766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(30,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Delana','Delana Terrell',NULL,NULL,NULL,NULL,NULL,'Both','3301906923',NULL,'Sample Data','Delana','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Terrell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(31,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Lashawnda','Mrs. Lashawnda Robertson',NULL,NULL,NULL,'3',NULL,'Both','44444463',NULL,'Sample Data','Lashawnda','C','Robertson',1,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Mrs. Lashawnda Robertson',NULL,NULL,'1938-09-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(32,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Nielsen, Landon','Mr. Landon Nielsen',NULL,NULL,NULL,NULL,NULL,'Both','1226832678',NULL,'Sample Data','Landon','','Nielsen',3,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Mr. Landon Nielsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(33,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Local Agriculture Academy','Local Agriculture Academy',NULL,NULL,NULL,NULL,NULL,'Both','3410375223',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Agriculture Academy',NULL,NULL,NULL,0,NULL,NULL,96,'Local Agriculture Academy',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(34,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Rural Literacy Association','Rural Literacy Association',NULL,NULL,NULL,'4',NULL,'Both','2064317141',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Literacy Association',NULL,NULL,NULL,0,NULL,NULL,21,'Rural Literacy Association',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(35,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'andrewc@mymail.org','andrewc@mymail.org',NULL,NULL,NULL,'5',NULL,'Both','4163043298',NULL,'Sample Data',NULL,NULL,NULL,4,2,NULL,NULL,1,NULL,'Dear andrewc@mymail.org',1,NULL,'Dear andrewc@mymail.org',1,NULL,'andrewc@mymail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(36,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'McReynolds, Shad','Shad McReynolds Jr.',NULL,NULL,NULL,NULL,NULL,'Both','4249147082',NULL,'Sample Data','Shad','U','McReynolds',NULL,1,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad McReynolds Jr.',NULL,2,'2006-11-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(37,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman-Wattson, Carlos','Dr. Carlos Bachman-Wattson',NULL,NULL,NULL,NULL,NULL,'Both','1892247778',NULL,'Sample Data','Carlos','B','Bachman-Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Bachman-Wattson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(38,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Scott','Dr. Scott Samson Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3462863584',NULL,'Sample Data','Scott','','Samson',4,1,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Samson Jr.',NULL,2,'1941-10-11',1,'2017-09-21',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(39,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Texas Family Partnership','Texas Family Partnership',NULL,NULL,NULL,'5',NULL,'Both','1267093491',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Texas Family Partnership',NULL,NULL,NULL,0,NULL,NULL,62,'Texas Family Partnership',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(40,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen-McReynolds, Miguel','Miguel Olsen-McReynolds III',NULL,NULL,NULL,NULL,NULL,'Both','1646210715',NULL,'Sample Data','Miguel','','Olsen-McReynolds',NULL,4,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Olsen-McReynolds III',NULL,NULL,'1981-02-27',0,NULL,NULL,NULL,'Rural Literacy Fund',NULL,NULL,159,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(41,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Cruz-Müller family','Cruz-Müller family',NULL,NULL,NULL,NULL,NULL,'Both','2724821923',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Müller family',5,NULL,'Dear Cruz-Müller family',2,NULL,'Cruz-Müller family',NULL,NULL,NULL,0,NULL,'Cruz-Müller family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(42,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz family','Cruz family',NULL,NULL,NULL,NULL,NULL,'Both','2326538497',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(43,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'cruz.rolando@notmail.com','cruz.rolando@notmail.com',NULL,NULL,NULL,NULL,NULL,'Both','2357579362',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear cruz.rolando@notmail.com',1,NULL,'Dear cruz.rolando@notmail.com',1,NULL,'cruz.rolando@notmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,'Lincoln Agriculture Solutions',NULL,NULL,101,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(44,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Jones, Landon','Dr. Landon Jones',NULL,NULL,NULL,'1',NULL,'Both','1338428920',NULL,'Sample Data','Landon','E','Jones',4,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Jones',NULL,2,NULL,0,NULL,NULL,NULL,'Bath Action Collective',NULL,NULL,151,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(45,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'santinat@fishmail.co.nz','santinat@fishmail.co.nz',NULL,NULL,NULL,'3',NULL,'Both','1240188462',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear santinat@fishmail.co.nz',1,NULL,'Dear santinat@fishmail.co.nz',1,NULL,'santinat@fishmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,'Nebraska Empowerment Solutions',NULL,NULL,10,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(46,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'sl.dimitrov@fakemail.co.uk','sl.dimitrov@fakemail.co.uk',NULL,NULL,NULL,'1',NULL,'Both','2890730476',NULL,'Sample Data',NULL,NULL,NULL,3,2,NULL,NULL,1,NULL,'Dear sl.dimitrov@fakemail.co.uk',1,NULL,'Dear sl.dimitrov@fakemail.co.uk',1,NULL,'sl.dimitrov@fakemail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(47,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Brittney','Brittney Cooper',NULL,NULL,NULL,NULL,NULL,'Both','4169712187',NULL,'Sample Data','Brittney','','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Cooper',NULL,1,'2005-11-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(48,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Teresa','Teresa Jensen',NULL,NULL,NULL,'2',NULL,'Both','1107412344',NULL,'Sample Data','Teresa','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Jensen',NULL,1,'1963-03-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(49,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Zope, Ashlie','Dr. Ashlie Zope',NULL,NULL,NULL,'3',NULL,'Both','2745365069',NULL,'Sample Data','Ashlie','Q','Zope',4,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Dr. Ashlie Zope',NULL,1,'1929-12-23',1,'2017-10-09',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(50,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Terrell, Junko','Ms. Junko Terrell',NULL,NULL,NULL,'5',NULL,'Both','3229402674',NULL,'Sample Data','Junko','','Terrell',2,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Ms. Junko Terrell',NULL,1,'1953-04-09',1,'2018-05-21',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(51,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Adams family','Adams family',NULL,NULL,NULL,NULL,NULL,'Both','1515323104',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Adams family',5,NULL,'Dear Adams family',2,NULL,'Adams family',NULL,NULL,NULL,0,NULL,'Adams family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(52,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'omard@spamalot.biz','omard@spamalot.biz',NULL,NULL,NULL,NULL,NULL,'Both','2465352490',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear omard@spamalot.biz',1,NULL,'Dear omard@spamalot.biz',1,NULL,'omard@spamalot.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(53,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Carlos','Carlos Samuels III',NULL,NULL,NULL,NULL,NULL,'Both','1758325668',NULL,'Sample Data','Carlos','Z','Samuels',NULL,4,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Samuels III',NULL,2,'1959-03-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(54,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Craig','Mr. Craig Zope Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1190830057',NULL,'Sample Data','Craig','X','Zope',3,2,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Zope Sr.',NULL,2,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(55,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Jina','Dr. Jina Dimitrov',NULL,NULL,NULL,'5',NULL,'Both','4192417839',NULL,'Sample Data','Jina','','Dimitrov',4,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Dr. Jina Dimitrov',NULL,1,'1945-10-11',1,'2017-07-10',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(56,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terrell, Allan','Allan Terrell Sr.',NULL,NULL,NULL,NULL,NULL,'Both','349299524',NULL,'Sample Data','Allan','D','Terrell',NULL,2,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Terrell Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(57,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Ivey','Ms. Ivey Müller',NULL,NULL,NULL,NULL,NULL,'Both','596776710',NULL,'Sample Data','Ivey','X','Müller',2,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ms. Ivey Müller',NULL,1,'1980-12-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(58,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'González, Brent','Dr. Brent González Sr.',NULL,NULL,NULL,'5',NULL,'Both','397348525',NULL,'Sample Data','Brent','','González',4,2,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent González Sr.',NULL,2,'1976-04-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(59,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'zope.juliann54@testing.biz','zope.juliann54@testing.biz',NULL,NULL,NULL,NULL,NULL,'Both','1201010970',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear zope.juliann54@testing.biz',1,NULL,'Dear zope.juliann54@testing.biz',1,NULL,'zope.juliann54@testing.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(60,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wagner, Rodrigo','Rodrigo Wagner Sr.',NULL,NULL,NULL,'5',NULL,'Both','2133660723',NULL,'Sample Data','Rodrigo','B','Wagner',NULL,2,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo Wagner Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(61,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cooper, Kathlyn','Ms. Kathlyn Cooper',NULL,NULL,NULL,NULL,NULL,'Both','4144432038',NULL,'Sample Data','Kathlyn','','Cooper',2,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Ms. Kathlyn Cooper',NULL,1,'1995-12-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(62,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Alida','Alida Zope',NULL,NULL,NULL,NULL,NULL,'Both','3726796517',NULL,'Sample Data','Alida','','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Zope',NULL,NULL,'1998-02-06',0,NULL,NULL,NULL,'Texas Family Partnership',NULL,NULL,39,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(63,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'lawerencegonzlez@infomail.net','lawerencegonzlez@infomail.net',NULL,NULL,NULL,'4',NULL,'Both','67333539',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear lawerencegonzlez@infomail.net',1,NULL,'Dear lawerencegonzlez@infomail.net',1,NULL,'lawerencegonzlez@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(64,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Cruz-Müller, Princess','Princess Cruz-Müller',NULL,NULL,NULL,'3',NULL,'Both','1979285868',NULL,'Sample Data','Princess','','Cruz-Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Cruz-Müller',NULL,1,'1974-12-13',0,NULL,NULL,NULL,'United Wellness Alliance',NULL,NULL,162,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(65,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-Dimitrov, Bernadette','Bernadette Olsen-Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','3860968796',NULL,'Sample Data','Bernadette','J','Olsen-Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Olsen-Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(66,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Jerome','Jerome Cooper',NULL,NULL,NULL,'4',NULL,'Both','2044517102',NULL,'Sample Data','Jerome','V','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Cooper',NULL,2,'1971-05-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(67,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'delanareynolds@lol.co.uk','delanareynolds@lol.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','3759599236',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear delanareynolds@lol.co.uk',1,NULL,'Dear delanareynolds@lol.co.uk',1,NULL,'delanareynolds@lol.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(68,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,'1',NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(69,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Heidi','Dr. Heidi Olsen',NULL,NULL,NULL,NULL,NULL,'Both','3023333247',NULL,'Sample Data','Heidi','I','Olsen',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi Olsen',NULL,1,NULL,1,'2018-01-03',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(70,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Esta','Mrs. Esta Samson',NULL,NULL,NULL,NULL,NULL,'Both','2754317159',NULL,'Sample Data','Esta','','Samson',1,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Mrs. Esta Samson',NULL,1,'1971-06-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(71,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Brent','Mr. Brent Terrell',NULL,NULL,NULL,NULL,NULL,'Both','2526832386',NULL,'Sample Data','Brent','','Terrell',3,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Mr. Brent Terrell',NULL,2,'1932-12-08',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(72,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jones-Ivanov family','Jones-Ivanov family',NULL,NULL,NULL,'4',NULL,'Both','2057353278',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jones-Ivanov family',5,NULL,'Dear Jones-Ivanov family',2,NULL,'Jones-Ivanov family',NULL,NULL,NULL,0,NULL,'Jones-Ivanov family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(73,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice, Kacey','Kacey Prentice',NULL,NULL,NULL,'3',NULL,'Both','3335706608',NULL,'Sample Data','Kacey','','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Prentice',NULL,1,'1978-08-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(74,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-Dimitrov, Felisha','Felisha Olsen-Dimitrov',NULL,NULL,NULL,'3',NULL,'Both','1158369527',NULL,'Sample Data','Felisha','','Olsen-Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Olsen-Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(75,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Cooper, Sonny','Sonny Cooper II',NULL,NULL,NULL,NULL,NULL,'Both','465080565',NULL,'Sample Data','Sonny','','Cooper',NULL,3,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Cooper II',NULL,2,'1996-08-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(76,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Jensen, Betty','Betty Jensen',NULL,NULL,NULL,'5',NULL,'Both','3826692336',NULL,'Sample Data','Betty','B','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty Jensen',NULL,1,'1973-09-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(77,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Olsen-Dimitrov family','Olsen-Dimitrov family',NULL,NULL,NULL,NULL,NULL,'Both','3788262186',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen-Dimitrov family',5,NULL,'Dear Olsen-Dimitrov family',2,NULL,'Olsen-Dimitrov family',NULL,NULL,NULL,0,NULL,'Olsen-Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(78,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones-Ivanov, Santina','Santina Jones-Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','2117997333',NULL,'Sample Data','Santina','','Jones-Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Jones-Ivanov',NULL,1,'2003-10-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(79,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'scarletterry-cooper17@spamalot.co.pl','scarletterry-cooper17@spamalot.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','2778182292',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear scarletterry-cooper17@spamalot.co.pl',1,NULL,'Dear scarletterry-cooper17@spamalot.co.pl',1,NULL,'scarletterry-cooper17@spamalot.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,'Cheraw Action School',NULL,NULL,199,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(80,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Allen','Allen Dimitrov',NULL,NULL,NULL,'5',NULL,'Both','4106661370',NULL,'Sample Data','Allen','O','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Dimitrov',NULL,NULL,'1946-10-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Lashawnda','Lashawnda Terry',NULL,NULL,NULL,NULL,NULL,'Both','485287796',NULL,'Sample Data','Lashawnda','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Terry',NULL,1,'1991-09-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(82,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Lashawnda','Lashawnda Jensen',NULL,NULL,NULL,'4',NULL,'Both','4222472250',NULL,'Sample Data','Lashawnda','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Jensen',NULL,1,'2016-04-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(83,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds family','McReynolds family',NULL,NULL,NULL,'3',NULL,'Both','3032680972',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(84,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Creative Music Network','Creative Music Network',NULL,NULL,NULL,'4',NULL,'Both','1844974969',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Music Network',NULL,NULL,NULL,0,NULL,NULL,97,'Creative Music Network',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(85,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Terry family','Terry family',NULL,NULL,NULL,NULL,NULL,'Both','558108751',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(86,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'nsamson@notmail.info','nsamson@notmail.info',NULL,NULL,NULL,'2',NULL,'Both','671400119',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear nsamson@notmail.info',1,NULL,'Dear nsamson@notmail.info',1,NULL,'nsamson@notmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(87,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Daren','Daren McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','2885149914',NULL,'Sample Data','Daren','','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren McReynolds',NULL,2,'1951-06-27',1,'2017-12-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(88,'Organization',NULL,1,0,0,0,1,0,NULL,NULL,'Indiana Development Alliance','Indiana Development Alliance',NULL,NULL,NULL,'2',NULL,'Both','1763281867',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Indiana Development Alliance',NULL,NULL,NULL,0,NULL,NULL,108,'Indiana Development Alliance',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(89,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-McReynolds family','Olsen-McReynolds family',NULL,NULL,NULL,NULL,NULL,'Both','3711187484',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen-McReynolds family',5,NULL,'Dear Olsen-McReynolds family',2,NULL,'Olsen-McReynolds family',NULL,NULL,NULL,0,NULL,'Olsen-McReynolds family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(90,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov family','Dimitrov family',NULL,NULL,NULL,NULL,NULL,'Both','3351288571',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov family',5,NULL,'Dear Dimitrov family',2,NULL,'Dimitrov family',NULL,NULL,NULL,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(91,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Winford','Dr. Winford McReynolds II',NULL,NULL,NULL,'2',NULL,'Both','3334322093',NULL,'Sample Data','Winford','','McReynolds',4,3,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford McReynolds II',NULL,2,'1932-12-19',1,'2018-01-27',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(92,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wilson, Valene','Valene Wilson',NULL,NULL,NULL,'5',NULL,'Both','40219008',NULL,'Sample Data','Valene','V','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Wilson',NULL,1,'1958-06-07',1,'2018-03-22',NULL,NULL,'Iola Family Fellowship',NULL,NULL,195,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(93,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Müller, Josefa','Josefa Müller',NULL,NULL,NULL,'1',NULL,'Both','375937993',NULL,'Sample Data','Josefa','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Müller',NULL,NULL,NULL,1,'2018-03-16',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(94,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terrell, Bryon','Dr. Bryon Terrell',NULL,NULL,NULL,NULL,NULL,'Both','1742337325',NULL,'Sample Data','Bryon','','Terrell',4,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Dr. Bryon Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(95,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jensen, Sanford','Dr. Sanford Jensen',NULL,NULL,NULL,'4',NULL,'Both','1526792308',NULL,'Sample Data','Sanford','H','Jensen',4,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Dr. Sanford Jensen',NULL,2,'1965-03-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(96,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Angelika','Ms. Angelika McReynolds',NULL,NULL,NULL,'2',NULL,'Both','3667136043',NULL,'Sample Data','Angelika','','McReynolds',2,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Ms. Angelika McReynolds',NULL,NULL,NULL,1,'2017-08-03',NULL,NULL,'Local Agriculture Academy',NULL,NULL,33,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(97,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Margaret','Margaret Roberts',NULL,NULL,NULL,'1',NULL,'Both','649188694',NULL,'Sample Data','Margaret','F','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Roberts',NULL,1,'1992-09-11',0,NULL,NULL,NULL,'Creative Music Network',NULL,NULL,84,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(98,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'olsenr@sample.com','olsenr@sample.com',NULL,NULL,NULL,'4',NULL,'Both','327578634',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear olsenr@sample.com',1,NULL,'Dear olsenr@sample.com',1,NULL,'olsenr@sample.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(99,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Wappingers Falls Development Collective','Wappingers Falls Development Collective',NULL,NULL,NULL,'1',NULL,'Both','601907617',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Wappingers Falls Development Collective',NULL,NULL,NULL,0,NULL,NULL,172,'Wappingers Falls Development Collective',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(100,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Leburn Development Alliance','Leburn Development Alliance',NULL,NULL,NULL,'1',NULL,'Both','3323757220',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Leburn Development Alliance',NULL,NULL,NULL,0,NULL,NULL,NULL,'Leburn Development Alliance',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(101,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Lincoln Agriculture Solutions','Lincoln Agriculture Solutions',NULL,NULL,NULL,'4',NULL,'Both','1245945422',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lincoln Agriculture Solutions',NULL,NULL,NULL,0,NULL,NULL,43,'Lincoln Agriculture Solutions',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(102,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Jacob','Jacob Cooper III',NULL,NULL,NULL,'1',NULL,'Both','221346251',NULL,'Sample Data','Jacob','M','Cooper',NULL,4,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Cooper III',NULL,2,'1975-10-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(103,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Creative Family Alliance','Creative Family Alliance',NULL,NULL,NULL,'1',NULL,'Both','2275003158',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Family Alliance',NULL,NULL,NULL,0,NULL,NULL,196,'Creative Family Alliance',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(104,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley family','Barkley family',NULL,NULL,NULL,'1',NULL,'Both','2888062109',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley family',5,NULL,'Dear Barkley family',2,NULL,'Barkley family',NULL,NULL,NULL,0,NULL,'Barkley family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(105,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice, Eleonor','Eleonor Prentice',NULL,NULL,NULL,NULL,NULL,'Both','76143917',NULL,'Sample Data','Eleonor','','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Prentice',NULL,1,'2007-03-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(106,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones-Prentice, Jina','Jina Jones-Prentice',NULL,NULL,NULL,NULL,NULL,'Both','3125836382',NULL,'Sample Data','Jina','H','Jones-Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Jones-Prentice',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(107,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov, Craig','Craig Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','3064122334',NULL,'Sample Data','Craig','','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Ivanov',NULL,2,'1950-06-01',1,'2017-06-07',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(108,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jensen, Junko','Junko Jensen',NULL,NULL,NULL,'5',NULL,'Both','2889888199',NULL,'Sample Data','Junko','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Jensen',NULL,1,'1934-07-14',1,NULL,NULL,NULL,'Indiana Development Alliance',NULL,NULL,88,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(109,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Shauna','Mrs. Shauna Parker',NULL,NULL,NULL,NULL,NULL,'Both','631094939',NULL,'Sample Data','Shauna','','Parker',1,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Mrs. Shauna Parker',NULL,NULL,'1936-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(110,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wattson, Russell','Russell Wattson',NULL,NULL,NULL,NULL,NULL,'Both','2184718409',NULL,'Sample Data','Russell','X','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Wattson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(111,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Barkley, Brent','Brent Barkley',NULL,NULL,NULL,NULL,NULL,'Both','2030248670',NULL,'Sample Data','Brent','J','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Barkley',NULL,2,'1958-12-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(112,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman-Dimitrov, Merrie','Merrie Bachman-Dimitrov',NULL,NULL,NULL,'1',NULL,'Both','3624506412',NULL,'Sample Data','Merrie','','Bachman-Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Bachman-Dimitrov',NULL,1,'1973-03-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(113,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Brittney','Brittney DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','2710372052',NULL,'Sample Data','Brittney','','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney DÃaz',NULL,1,'1997-05-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(114,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'beulan91@mymail.com','beulan91@mymail.com',NULL,NULL,NULL,'1',NULL,'Both','465980182',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear beulan91@mymail.com',1,NULL,'Dear beulan91@mymail.com',1,NULL,'beulan91@mymail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(115,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Wilson, Elina','Elina Wilson',NULL,NULL,NULL,'2',NULL,'Both','2816657854',NULL,'Sample Data','Elina','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Wilson',NULL,1,'1961-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(116,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice family','Prentice family',NULL,NULL,NULL,NULL,NULL,'Both','3313623671',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice family',5,NULL,'Dear Prentice family',2,NULL,'Prentice family',NULL,NULL,NULL,0,NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(117,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'carlosl81@lol.info','carlosl81@lol.info',NULL,NULL,NULL,'4',NULL,'Both','3951906812',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear carlosl81@lol.info',1,NULL,'Dear carlosl81@lol.info',1,NULL,'carlosl81@lol.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(118,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Juliann','Dr. Juliann McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','2587841084',NULL,'Sample Data','Juliann','D','McReynolds',4,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Dr. Juliann McReynolds',NULL,1,'1960-09-14',0,NULL,NULL,NULL,'McKenney Software Systems',NULL,NULL,169,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(119,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Scott','Scott Ivanov III',NULL,NULL,NULL,'3',NULL,'Both','1336634478',NULL,'Sample Data','Scott','','Ivanov',NULL,4,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Ivanov III',NULL,2,'1950-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(120,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'nielsen.andrew@fakemail.com','nielsen.andrew@fakemail.com',NULL,NULL,NULL,'1',NULL,'Both','2165923278',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear nielsen.andrew@fakemail.com',1,NULL,'Dear nielsen.andrew@fakemail.com',1,NULL,'nielsen.andrew@fakemail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(121,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Jerome','Jerome Ivanov III',NULL,NULL,NULL,NULL,NULL,'Both','3339080017',NULL,'Sample Data','Jerome','','Ivanov',NULL,4,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Ivanov III',NULL,2,'1960-07-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(122,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Bachman-Wattson, Ashlie','Ashlie Bachman-Wattson',NULL,NULL,NULL,NULL,NULL,'Both','3121326119',NULL,'Sample Data','Ashlie','E','Bachman-Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Bachman-Wattson',NULL,NULL,'2009-03-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(123,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Adams, Betty','Mrs. Betty Adams',NULL,NULL,NULL,'1',NULL,'Both','2445322404',NULL,'Sample Data','Betty','O','Adams',1,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Mrs. Betty Adams',NULL,1,NULL,0,NULL,NULL,NULL,'Wisconsin Action Fund',NULL,NULL,178,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(124,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'rodrigoj@example.co.uk','rodrigoj@example.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','2690030587',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear rodrigoj@example.co.uk',1,NULL,'Dear rodrigoj@example.co.uk',1,NULL,'rodrigoj@example.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(125,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Zope, Erik','Erik Zope Jr.',NULL,NULL,NULL,'5',NULL,'Both','2683786262',NULL,'Sample Data','Erik','K','Zope',NULL,1,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Zope Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(126,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Yadav, Jackson','Mr. Jackson Yadav Sr.',NULL,NULL,NULL,'3',NULL,'Both','1490538521',NULL,'Sample Data','Jackson','X','Yadav',3,2,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Yadav Sr.',NULL,2,'1994-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(127,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'joness@testmail.net','joness@testmail.net',NULL,NULL,NULL,'5',NULL,'Both','2129683008',NULL,'Sample Data',NULL,NULL,NULL,3,2,NULL,NULL,1,NULL,'Dear joness@testmail.net',1,NULL,'Dear joness@testmail.net',1,NULL,'joness@testmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(128,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Zope, Maxwell','Mr. Maxwell Zope Sr.',NULL,NULL,NULL,'5',NULL,'Both','676762100',NULL,'Sample Data','Maxwell','','Zope',3,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Zope Sr.',NULL,2,'1985-04-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(129,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Tanya','Mrs. Tanya Jameson',NULL,NULL,NULL,NULL,NULL,'Both','2589071461',NULL,'Sample Data','Tanya','','Jameson',1,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Mrs. Tanya Jameson',NULL,1,'1955-03-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(130,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Sherman','Sherman Samson Sr.',NULL,NULL,NULL,'1',NULL,'Both','583200758',NULL,'Sample Data','Sherman','','Samson',NULL,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Samson Sr.',NULL,2,'1963-01-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(131,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'blackwellm@airmail.com','blackwellm@airmail.com',NULL,NULL,NULL,'5',NULL,'Both','2076156167',NULL,'Sample Data',NULL,NULL,NULL,4,2,NULL,NULL,1,NULL,'Dear blackwellm@airmail.com',1,NULL,'Dear blackwellm@airmail.com',1,NULL,'blackwellm@airmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(132,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terry, Jerome','Jerome Terry',NULL,NULL,NULL,'2',NULL,'Both','2399613153',NULL,'Sample Data','Jerome','V','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(133,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Billy','Billy Patel',NULL,NULL,NULL,'3',NULL,'Both','1914092399',NULL,'Sample Data','Billy','X','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Patel',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(134,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Bachman, Billy','Billy Bachman II',NULL,NULL,NULL,'3',NULL,'Both','2000818786',NULL,'Sample Data','Billy','','Bachman',NULL,3,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Bachman II',NULL,NULL,'1973-07-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(135,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Urban Wellness Solutions','Urban Wellness Solutions',NULL,NULL,NULL,'5',NULL,'Both','1405891559',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Wellness Solutions',NULL,NULL,NULL,0,NULL,NULL,149,'Urban Wellness Solutions',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(136,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Wattson, Allan','Allan Wattson III',NULL,NULL,NULL,'2',NULL,'Both','4271442365',NULL,'Sample Data','Allan','','Wattson',NULL,4,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Wattson III',NULL,2,'1962-10-20',1,'2018-04-10',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(137,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Maxwell','Maxwell Nielsen Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1889021515',NULL,'Sample Data','Maxwell','','Nielsen',NULL,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Nielsen Sr.',NULL,NULL,'2005-06-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(138,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bryond52@example.net','bryond52@example.net',NULL,NULL,NULL,'3',NULL,'Both','2163925000',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear bryond52@example.net',1,NULL,'Dear bryond52@example.net',1,NULL,'bryond52@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(139,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jensen, Lincoln','Lincoln Jensen III',NULL,NULL,NULL,'2',NULL,'Both','630081741',NULL,'Sample Data','Lincoln','','Jensen',NULL,4,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Jensen III',NULL,NULL,'1964-10-09',1,'2017-10-03',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(140,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski-Roberts, Lashawnda','Lashawnda ÅÄ…chowski-Roberts',NULL,NULL,NULL,NULL,NULL,'Both','2329628770',NULL,'Sample Data','Lashawnda','','ÅÄ…chowski-Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda ÅÄ…chowski-Roberts',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(141,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Herminia','Mrs. Herminia Samson',NULL,NULL,NULL,'1',NULL,'Both','3411088357',NULL,'Sample Data','Herminia','','Samson',1,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Mrs. Herminia Samson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(142,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Rosario','Rosario Barkley',NULL,NULL,NULL,NULL,NULL,'Both','2313743843',NULL,'Sample Data','Rosario','R','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Barkley',NULL,NULL,'2002-04-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(143,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Justina','Justina Grant',NULL,NULL,NULL,NULL,NULL,'Both','2606086842',NULL,'Sample Data','Justina','X','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Grant',NULL,1,'1941-08-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(144,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jones-Ivanov, Teddy','Teddy Jones-Ivanov III',NULL,NULL,NULL,NULL,NULL,'Both','141901177',NULL,'Sample Data','Teddy','E','Jones-Ivanov',NULL,4,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Jones-Ivanov III',NULL,2,'2008-03-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(145,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'smith.brittney44@sample.co.in','smith.brittney44@sample.co.in',NULL,NULL,NULL,NULL,NULL,'Both','723077540',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear smith.brittney44@sample.co.in',1,NULL,'Dear smith.brittney44@sample.co.in',1,NULL,'smith.brittney44@sample.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(146,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen, Jina','Jina Olsen',NULL,NULL,NULL,NULL,NULL,'Both','2894818068',NULL,'Sample Data','Jina','','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Olsen',NULL,NULL,'1997-08-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(147,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Andrew','Andrew Adams Sr.',NULL,NULL,NULL,'2',NULL,'Both','2398001540',NULL,'Sample Data','Andrew','Y','Adams',NULL,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Adams Sr.',NULL,2,'2002-01-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(148,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jacobs, Elbert','Elbert Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','3874322217',NULL,'Sample Data','Elbert','','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Jacobs',NULL,NULL,'1948-04-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(149,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'adams.maria40@testmail.net','adams.maria40@testmail.net',NULL,NULL,NULL,NULL,NULL,'Both','1918668900',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear adams.maria40@testmail.net',1,NULL,'Dear adams.maria40@testmail.net',1,NULL,'adams.maria40@testmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,'Urban Wellness Solutions',NULL,NULL,135,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(150,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Scott','Dr. Scott Zope',NULL,NULL,NULL,NULL,NULL,'Both','3220387929',NULL,'Sample Data','Scott','','Zope',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Zope',NULL,NULL,'1942-11-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(151,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Bath Action Collective','Bath Action Collective',NULL,NULL,NULL,NULL,NULL,'Both','1484138034',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bath Action Collective',NULL,NULL,NULL,0,NULL,NULL,44,'Bath Action Collective',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(152,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Ivey','Ivey Lee',NULL,NULL,NULL,'4',NULL,'Both','2847315526',NULL,'Sample Data','Ivey','','Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Lee',NULL,NULL,'2007-04-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(153,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Brittney','Mrs. Brittney Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','3592503963',NULL,'Sample Data','Brittney','','Dimitrov',1,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Mrs. Brittney Dimitrov',NULL,1,'1991-02-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(154,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wattson, Margaret','Margaret Wattson',NULL,NULL,NULL,NULL,NULL,'Both','2865119341',NULL,'Sample Data','Margaret','','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Wattson',NULL,1,'1981-02-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(155,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Patel, Santina','Mrs. Santina Patel',NULL,NULL,NULL,NULL,NULL,'Both','3765825557',NULL,'Sample Data','Santina','W','Patel',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Patel',NULL,1,'1983-08-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(156,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Jed','Jed Terry',NULL,NULL,NULL,'1',NULL,'Both','2004213447',NULL,'Sample Data','Jed','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Terry',NULL,2,'1994-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(157,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper family','Cooper family',NULL,NULL,NULL,'4',NULL,'Both','1133003930',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper family',5,NULL,'Dear Cooper family',2,NULL,'Cooper family',NULL,NULL,NULL,0,NULL,'Cooper family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(158,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Wattson, Angelika','Dr. Angelika Wattson',NULL,NULL,NULL,'2',NULL,'Both','868071594',NULL,'Sample Data','Angelika','','Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Dr. Angelika Wattson',NULL,1,'1986-12-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(159,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Rural Literacy Fund','Rural Literacy Fund',NULL,NULL,NULL,'2',NULL,'Both','332499923',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Literacy Fund',NULL,NULL,NULL,0,NULL,NULL,40,'Rural Literacy Fund',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(160,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Deforest, Shad','Shad Deforest',NULL,NULL,NULL,NULL,NULL,'Both','1483415369',NULL,'Sample Data','Shad','','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Deforest',NULL,2,'2006-02-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(161,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Kenny','Kenny Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1945745030',NULL,'Sample Data','Kenny','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Wilson',NULL,2,'1936-03-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(162,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'United Wellness Alliance','United Wellness Alliance',NULL,NULL,NULL,'2',NULL,'Both','831557662',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Wellness Alliance',NULL,NULL,NULL,0,NULL,NULL,64,'United Wellness Alliance',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(163,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Cruz, Barry','Dr. Barry Cruz Jr.',NULL,NULL,NULL,'1',NULL,'Both','2626171686',NULL,'Sample Data','Barry','K','Cruz',4,1,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Dr. Barry Cruz Jr.',NULL,2,'1966-07-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(164,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, BrzÄ™czysÅ‚aw','Mr. BrzÄ™czysÅ‚aw Prentice',NULL,NULL,NULL,'3',NULL,'Both','218953873',NULL,'Sample Data','BrzÄ™czysÅ‚aw','Y','Prentice',3,NULL,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Mr. BrzÄ™czysÅ‚aw Prentice',NULL,NULL,'1988-08-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(165,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Kenny','Mr. Kenny Olsen III',NULL,NULL,NULL,'4',NULL,'Both','293860292',NULL,'Sample Data','Kenny','','Olsen',3,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Olsen III',NULL,NULL,'1968-05-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(166,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Bernadette','Mrs. Bernadette Müller',NULL,NULL,NULL,NULL,NULL,'Both','2804032609',NULL,'Sample Data','Bernadette','','Müller',1,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Mrs. Bernadette Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(167,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Lou','Lou Blackwell Sr.',NULL,NULL,NULL,'1',NULL,'Both','2525168848',NULL,'Sample Data','Lou','','Blackwell',NULL,2,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Blackwell Sr.',NULL,NULL,'2005-01-10',0,NULL,NULL,NULL,'Laddonia Food Center',NULL,NULL,189,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(168,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Yadav, Kandace','Dr. Kandace Yadav',NULL,NULL,NULL,'2',NULL,'Both','2056711888',NULL,'Sample Data','Kandace','X','Yadav',4,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Dr. Kandace Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(169,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'McKenney Software Systems','McKenney Software Systems',NULL,NULL,NULL,'4',NULL,'Both','7268008',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'McKenney Software Systems',NULL,NULL,NULL,0,NULL,NULL,118,'McKenney Software Systems',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(170,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Kiara','Kiara Adams',NULL,NULL,NULL,'2',NULL,'Both','2312973094',NULL,'Sample Data','Kiara','B','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Adams',NULL,1,'1980-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(171,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Justina','Dr. Justina Samuels',NULL,NULL,NULL,'1',NULL,'Both','1737971561',NULL,'Sample Data','Justina','F','Samuels',4,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Dr. Justina Samuels',NULL,NULL,'1962-07-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(172,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Santina','Mrs. Santina Jensen',NULL,NULL,NULL,NULL,NULL,'Both','864111104',NULL,'Sample Data','Santina','N','Jensen',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Jensen',NULL,1,'1991-07-11',0,NULL,NULL,NULL,'Wappingers Falls Development Collective',NULL,NULL,99,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(173,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'robertsonr57@fakemail.net','robertsonr57@fakemail.net',NULL,NULL,NULL,'3',NULL,'Both','2725123450',NULL,'Sample Data',NULL,NULL,NULL,3,4,NULL,NULL,1,NULL,'Dear robertsonr57@fakemail.net',1,NULL,'Dear robertsonr57@fakemail.net',1,NULL,'robertsonr57@fakemail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(174,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Terrell family','Terrell family',NULL,NULL,NULL,NULL,NULL,'Both','1136333121',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(175,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts family','Roberts family',NULL,NULL,NULL,'2',NULL,'Both','2097305882',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Roberts family',5,NULL,'Dear Roberts family',2,NULL,'Roberts family',NULL,NULL,NULL,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(176,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, BrzÄ™czysÅ‚aw','Dr. BrzÄ™czysÅ‚aw Cruz',NULL,NULL,NULL,NULL,NULL,'Both','3367531143',NULL,'Sample Data','BrzÄ™czysÅ‚aw','','Cruz',4,NULL,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dr. BrzÄ™czysÅ‚aw Cruz',NULL,NULL,'1962-06-03',1,'2017-06-29',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(177,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Sanford','Sanford Terry',NULL,NULL,NULL,NULL,NULL,'Both','4170670568',NULL,'Sample Data','Sanford','T','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Terry',NULL,2,'1981-10-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(178,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Wisconsin Action Fund','Wisconsin Action Fund',NULL,NULL,NULL,'5',NULL,'Both','2138669778',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Wisconsin Action Fund',NULL,NULL,NULL,0,NULL,NULL,123,'Wisconsin Action Fund',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(179,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'cooper.omar@infomail.co.in','cooper.omar@infomail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','3423538673',NULL,'Sample Data',NULL,NULL,NULL,NULL,2,NULL,NULL,1,NULL,'Dear cooper.omar@infomail.co.in',1,NULL,'Dear cooper.omar@infomail.co.in',1,NULL,'cooper.omar@infomail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(180,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Justina','Justina Adams',NULL,NULL,NULL,'5',NULL,'Both','206304627',NULL,'Sample Data','Justina','O','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Adams',NULL,1,'2008-11-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(181,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice, Roland','Roland Prentice Jr.',NULL,NULL,NULL,'3',NULL,'Both','3836132137',NULL,'Sample Data','Roland','','Prentice',NULL,1,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Prentice Jr.',NULL,2,'1999-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(182,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Maxwell','Dr. Maxwell Terrell',NULL,NULL,NULL,NULL,NULL,'Both','4143618431',NULL,'Sample Data','Maxwell','','Terrell',4,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(183,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper family','Cooper family',NULL,NULL,NULL,'4',NULL,'Both','1133003930',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper family',5,NULL,'Dear Cooper family',2,NULL,'Cooper family',NULL,NULL,NULL,0,NULL,'Cooper family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(184,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cruz-Müller, Roland','Roland Cruz-Müller II',NULL,NULL,NULL,NULL,NULL,'Both','1702839677',NULL,'Sample Data','Roland','E','Cruz-Müller',NULL,3,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Cruz-Müller II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(185,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen family','Jensen family',NULL,NULL,NULL,NULL,NULL,'Both','797435572',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(186,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Müller, Iris','Iris Müller',NULL,NULL,NULL,'3',NULL,'Both','1761286600',NULL,'Sample Data','Iris','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Müller',NULL,1,'1979-04-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(187,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'miguelm@fakemail.co.nz','miguelm@fakemail.co.nz',NULL,NULL,NULL,'2',NULL,'Both','2626544349',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear miguelm@fakemail.co.nz',1,NULL,'Dear miguelm@fakemail.co.nz',1,NULL,'miguelm@fakemail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(188,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Yadav, Bob','Bob Yadav Jr.',NULL,NULL,NULL,'1',NULL,'Both','3746305110',NULL,'Sample Data','Bob','','Yadav',NULL,1,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Yadav Jr.',NULL,NULL,'1930-12-26',1,'2018-02-01',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(189,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Laddonia Food Center','Laddonia Food Center',NULL,NULL,NULL,'1',NULL,'Both','3096147626',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Laddonia Food Center',NULL,NULL,NULL,0,NULL,NULL,167,'Laddonia Food Center',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(190,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'nielsen.rodrigo@notmail.co.pl','nielsen.rodrigo@notmail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','2631591385',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear nielsen.rodrigo@notmail.co.pl',1,NULL,'Dear nielsen.rodrigo@notmail.co.pl',1,NULL,'nielsen.rodrigo@notmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(191,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Smith, Heidi','Ms. Heidi Smith',NULL,NULL,NULL,'2',NULL,'Both','837834326',NULL,'Sample Data','Heidi','E','Smith',2,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Ms. Heidi Smith',NULL,NULL,NULL,1,'2018-05-09',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(192,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman-Wattson family','Bachman-Wattson family',NULL,NULL,NULL,'3',NULL,'Both','2804393033',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman-Wattson family',5,NULL,'Dear Bachman-Wattson family',2,NULL,'Bachman-Wattson family',NULL,NULL,NULL,0,NULL,'Bachman-Wattson family',NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(193,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Yadav, Rebekah','Dr. Rebekah Yadav',NULL,NULL,NULL,NULL,NULL,'Both','790455382',NULL,'Sample Data','Rebekah','','Yadav',4,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Dr. Rebekah Yadav',NULL,NULL,'1988-10-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(194,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Yadav, Sonny','Sonny Yadav',NULL,NULL,NULL,'4',NULL,'Both','836709371',NULL,'Sample Data','Sonny','H','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Yadav',NULL,NULL,'1972-05-28',1,'2017-09-09',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:20'),(195,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Iola Family Fellowship','Iola Family Fellowship',NULL,NULL,NULL,'3',NULL,'Both','2212107064',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Iola Family Fellowship',NULL,NULL,NULL,0,NULL,NULL,92,'Iola Family Fellowship',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(196,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Elina','Elina Cruz',NULL,NULL,NULL,'5',NULL,'Both','967491185',NULL,'Sample Data','Elina','','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Cruz',NULL,1,NULL,0,NULL,NULL,NULL,'Creative Family Alliance',NULL,NULL,103,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(197,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Esta','Dr. Esta Cruz',NULL,NULL,NULL,'4',NULL,'Both','3738064484',NULL,'Sample Data','Esta','H','Cruz',4,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Dr. Esta Cruz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'),(198,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Norris','Norris Jensen',NULL,NULL,NULL,'5',NULL,'Both','4026647106',NULL,'Sample Data','Norris','I','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Jensen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(199,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Cheraw Action School','Cheraw Action School',NULL,NULL,NULL,'3',NULL,'Both','422114496',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Cheraw Action School',NULL,NULL,NULL,0,NULL,NULL,79,'Cheraw Action School',NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(200,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ÅÄ…chowski, Ray','Mr. Ray ÅÄ…chowski III',NULL,NULL,NULL,'3',NULL,'Both','1851411219',NULL,'Sample Data','Ray','L','ÅÄ…chowski',3,4,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Mr. Ray ÅÄ…chowski III',NULL,2,'1970-01-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:21'),(201,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'roberts.b.daren@example.org','roberts.b.daren@example.org',NULL,NULL,NULL,NULL,NULL,'Both','2213889769',NULL,'Sample Data',NULL,NULL,NULL,3,4,NULL,NULL,1,NULL,'Dear roberts.b.daren@example.org',1,NULL,'Dear roberts.b.daren@example.org',1,NULL,'roberts.b.daren@example.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-05-21 20:27:20','2018-05-21 20:27:22'); +INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,'Default Organization',NULL,NULL,NULL,0,NULL,'2018-08-22 22:01:31'),(2,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'McReynolds, Esta','Esta McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','3751444611',NULL,'Sample Data','Esta','V','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta McReynolds',NULL,1,'1982-06-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(3,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wattson, Merrie','Mrs. Merrie Wattson',NULL,NULL,NULL,NULL,NULL,'Both','3250660650',NULL,'Sample Data','Merrie','','Wattson',1,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Mrs. Merrie Wattson',NULL,1,'1988-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(4,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Müller, Kiara','Dr. Kiara Müller',NULL,NULL,NULL,'1',NULL,'Both','2544954591',NULL,'Sample Data','Kiara','','Müller',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Müller',NULL,1,'1975-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(5,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jensen-Roberts, Kathleen','Mrs. Kathleen Jensen-Roberts',NULL,NULL,NULL,NULL,NULL,'Both','4132486632',NULL,'Sample Data','Kathleen','U','Jensen-Roberts',1,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Mrs. Kathleen Jensen-Roberts',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(6,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Ivanov, Toby','Toby Ivanov',NULL,NULL,NULL,'3',NULL,'Both','606506972',NULL,'Sample Data','Toby','P','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(7,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'Arkansas Agriculture Fellowship','Arkansas Agriculture Fellowship',NULL,NULL,NULL,NULL,NULL,'Both','99307933',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Arkansas Agriculture Fellowship',NULL,NULL,NULL,0,NULL,NULL,17,'Arkansas Agriculture Fellowship',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(8,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds-Olsen family','Reynolds-Olsen family',NULL,NULL,NULL,NULL,NULL,'Both','3396413241',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds-Olsen family',5,NULL,'Dear Reynolds-Olsen family',2,NULL,'Reynolds-Olsen family',NULL,NULL,NULL,0,NULL,'Reynolds-Olsen family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(9,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wattson, Troy','Troy Wattson',NULL,NULL,NULL,'2',NULL,'Both','189159826',NULL,'Sample Data','Troy','','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Wattson',NULL,2,'1998-07-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(10,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Barkley, Winford','Dr. Winford Barkley',NULL,NULL,NULL,NULL,NULL,'Both','573860066',NULL,'Sample Data','Winford','P','Barkley',4,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(11,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Jina','Jina McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','644172968',NULL,'Sample Data','Jina','D','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina McReynolds',NULL,1,'1989-11-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(12,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'New York Sports Solutions','New York Sports Solutions',NULL,NULL,NULL,'3',NULL,'Both','898027363',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New York Sports Solutions',NULL,NULL,NULL,0,NULL,NULL,143,'New York Sports Solutions',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(13,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Teddy','Mr. Teddy Wilson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1714543497',NULL,'Sample Data','Teddy','','Wilson',3,2,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy Wilson Sr.',NULL,2,'1945-06-27',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(14,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Wilson family','Wilson family',NULL,NULL,NULL,NULL,NULL,'Both','350510798',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(15,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen, Carlos','Mr. Carlos Nielsen II',NULL,NULL,NULL,'3',NULL,'Both','3482557621',NULL,'Sample Data','Carlos','','Nielsen',3,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos Nielsen II',NULL,2,NULL,1,'2018-01-28',NULL,NULL,'Maine Wellness Partners',NULL,NULL,44,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(16,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'wagner.nicole@testing.info','wagner.nicole@testing.info',NULL,NULL,NULL,'1',NULL,'Both','455801622',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear wagner.nicole@testing.info',1,NULL,'Dear wagner.nicole@testing.info',1,NULL,'wagner.nicole@testing.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(17,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Robertson, Bernadette','Bernadette Robertson',NULL,NULL,NULL,NULL,NULL,'Both','1938070020',NULL,'Sample Data','Bernadette','Z','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Robertson',NULL,1,'2003-11-28',0,NULL,NULL,NULL,'Arkansas Agriculture Fellowship',NULL,NULL,7,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(18,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Barkley, Delana','Delana Barkley',NULL,NULL,NULL,'3',NULL,'Both','1262819409',NULL,'Sample Data','Delana','I','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Barkley',NULL,NULL,'1961-10-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(19,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Lincoln','Lincoln ÅÄ…chowski Sr.',NULL,NULL,NULL,'3',NULL,'Both','4115738277',NULL,'Sample Data','Lincoln','Y','ÅÄ…chowski',NULL,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln ÅÄ…chowski Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(20,'Household',NULL,1,0,0,0,1,0,NULL,NULL,'Parker-Jones-DÃaz family','Parker-Jones-DÃaz family',NULL,NULL,NULL,'2',NULL,'Both','1837270795',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Parker-Jones-DÃaz family',5,NULL,'Dear Parker-Jones-DÃaz family',2,NULL,'Parker-Jones-DÃaz family',NULL,NULL,NULL,0,NULL,'Parker-Jones-DÃaz family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(21,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Wisconsin Agriculture Alliance','Wisconsin Agriculture Alliance',NULL,NULL,NULL,NULL,NULL,'Both','2711284333',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Wisconsin Agriculture Alliance',NULL,NULL,NULL,0,NULL,NULL,72,'Wisconsin Agriculture Alliance',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(22,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Grant, Ashley','Ashley Grant III',NULL,NULL,NULL,NULL,NULL,'Both','1641977721',NULL,'Sample Data','Ashley','','Grant',NULL,4,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Grant III',NULL,2,'1938-12-10',0,NULL,NULL,NULL,'Lincoln Music Collective',NULL,NULL,65,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(23,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Sanford','Sanford Prentice III',NULL,NULL,NULL,'1',NULL,'Both','3166415590',NULL,'Sample Data','Sanford','O','Prentice',NULL,4,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Prentice III',NULL,NULL,'1969-11-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(24,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Jones, Bernadette','Mrs. Bernadette Jones',NULL,NULL,NULL,NULL,NULL,'Both','357713234',NULL,'Sample Data','Bernadette','I','Jones',1,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Mrs. Bernadette Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(25,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker-Jones-DÃaz, Erik','Erik Parker-Jones-DÃaz',NULL,NULL,NULL,'2',NULL,'Both','1446425695',NULL,'Sample Data','Erik','','Parker-Jones-DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Parker-Jones-DÃaz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(26,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Merrie','Dr. Merrie Wagner',NULL,NULL,NULL,NULL,NULL,'Both','1799305605',NULL,'Sample Data','Merrie','X','Wagner',4,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Dr. Merrie Wagner',NULL,1,'1972-12-14',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(27,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Magan','Mrs. Magan McReynolds',NULL,NULL,NULL,'2',NULL,'Both','3630572084',NULL,'Sample Data','Magan','','McReynolds',1,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Mrs. Magan McReynolds',NULL,1,'1980-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(28,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Felisha','Ms. Felisha Robertson',NULL,NULL,NULL,NULL,NULL,'Both','2615104196',NULL,'Sample Data','Felisha','','Robertson',2,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Ms. Felisha Robertson',NULL,1,'1995-10-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(29,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jensen-Robertson, Merrie','Merrie Jensen-Robertson',NULL,NULL,NULL,NULL,NULL,'Both','3841105848',NULL,'Sample Data','Merrie','V','Jensen-Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Jensen-Robertson',NULL,1,'1983-03-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(30,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant-Reynolds, Jina','Ms. Jina Grant-Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','746505262',NULL,'Sample Data','Jina','P','Grant-Reynolds',2,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Ms. Jina Grant-Reynolds',NULL,NULL,'1975-01-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(31,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wattson, Laree','Laree Wattson',NULL,NULL,NULL,'2',NULL,'Both','291866407',NULL,'Sample Data','Laree','I','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Wattson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(32,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Maple Culture Center','Maple Culture Center',NULL,NULL,NULL,'2',NULL,'Both','1122468466',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Maple Culture Center',NULL,NULL,NULL,0,NULL,NULL,190,'Maple Culture Center',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(33,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen-Wattson family','Olsen-Wattson family',NULL,NULL,NULL,NULL,NULL,'Both','2081588872',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen-Wattson family',5,NULL,'Dear Olsen-Wattson family',2,NULL,'Olsen-Wattson family',NULL,NULL,NULL,0,NULL,'Olsen-Wattson family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(34,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Global Action Partners','Global Action Partners',NULL,NULL,NULL,'2',NULL,'Both','1461886408',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Action Partners',NULL,NULL,NULL,0,NULL,NULL,140,'Global Action Partners',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(35,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Olsen-Jensen, Josefa','Ms. Josefa Olsen-Jensen',NULL,NULL,NULL,NULL,NULL,'Both','1803895411',NULL,'Sample Data','Josefa','','Olsen-Jensen',2,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Ms. Josefa Olsen-Jensen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(36,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Carlos','Carlos McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','1986804051',NULL,'Sample Data','Carlos','S','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos McReynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(37,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'gonzlez.e.billy52@spamalot.net','gonzlez.e.billy52@spamalot.net',NULL,NULL,NULL,'3',NULL,'Both','1113990184',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear gonzlez.e.billy52@spamalot.net',1,NULL,'Dear gonzlez.e.billy52@spamalot.net',1,NULL,'gonzlez.e.billy52@spamalot.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(38,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Deforest, Omar','Omar Deforest III',NULL,NULL,NULL,'3',NULL,'Both','2965078228',NULL,'Sample Data','Omar','','Deforest',NULL,4,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Deforest III',NULL,NULL,'1956-02-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(39,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Jed','Dr. Jed Wilson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1260634010',NULL,'Sample Data','Jed','G','Wilson',4,2,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Wilson Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(40,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice-Jones, Lincoln','Dr. Lincoln Prentice-Jones',NULL,NULL,NULL,NULL,NULL,'Both','2876379083',NULL,'Sample Data','Lincoln','X','Prentice-Jones',4,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Prentice-Jones',NULL,2,'1990-12-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(41,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Nicole','Nicole Prentice',NULL,NULL,NULL,NULL,NULL,'Both','138339105',NULL,'Sample Data','Nicole','V','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Prentice',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(42,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Barkley, Alexia','Alexia Barkley',NULL,NULL,NULL,'3',NULL,'Both','925280801',NULL,'Sample Data','Alexia','D','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Barkley',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(43,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Barkley, Alida','Alida Barkley',NULL,NULL,NULL,'1',NULL,'Both','273517991',NULL,'Sample Data','Alida','B','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Barkley',NULL,1,'1945-08-14',1,'2018-08-08',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(44,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Maine Wellness Partners','Maine Wellness Partners',NULL,NULL,NULL,NULL,NULL,'Both','433233387',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Maine Wellness Partners',NULL,NULL,NULL,0,NULL,NULL,15,'Maine Wellness Partners',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(45,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Jacob','Jacob Robertson',NULL,NULL,NULL,'4',NULL,'Both','2213837485',NULL,'Sample Data','Jacob','S','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Robertson',NULL,2,'1960-08-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(46,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samuels, Barry','Barry Samuels',NULL,NULL,NULL,NULL,NULL,'Both','46632889',NULL,'Sample Data','Barry','','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Samuels',NULL,2,'1986-11-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(47,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,'5',NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(48,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Truman','Mr. Truman Samuels II',NULL,NULL,NULL,'1',NULL,'Both','818816780',NULL,'Sample Data','Truman','P','Samuels',3,3,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Mr. Truman Samuels II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(49,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'estar64@example.co.uk','estar64@example.co.uk',NULL,NULL,NULL,'2',NULL,'Both','1392718587',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear estar64@example.co.uk',1,NULL,'Dear estar64@example.co.uk',1,NULL,'estar64@example.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(50,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels family','Samuels family',NULL,NULL,NULL,NULL,NULL,'Both','350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(51,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Adams, Jackson','Dr. Jackson Adams Jr.',NULL,NULL,NULL,'2',NULL,'Both','1686335427',NULL,'Sample Data','Jackson','H','Adams',4,1,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Adams Jr.',NULL,2,'1950-08-18',1,'2018-01-02',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(52,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Barry','Barry Roberts II',NULL,NULL,NULL,'1',NULL,'Both','1797669693',NULL,'Sample Data','Barry','','Roberts',NULL,3,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Roberts II',NULL,2,'1988-01-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(53,'Household',NULL,1,0,0,0,1,0,NULL,NULL,'Robertson family','Robertson family',NULL,NULL,NULL,'3',NULL,'Both','3444393980',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Robertson family',5,NULL,'Dear Robertson family',2,NULL,'Robertson family',NULL,NULL,NULL,0,NULL,'Robertson family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(54,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Colorado Springs Action Center','Colorado Springs Action Center',NULL,NULL,NULL,'1',NULL,'Both','4212671330',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Colorado Springs Action Center',NULL,NULL,NULL,0,NULL,NULL,133,'Colorado Springs Action Center',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(55,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Allan','Allan Yadav',NULL,NULL,NULL,NULL,NULL,'Both','1048907153',NULL,'Sample Data','Allan','A','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(56,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner-Barkley, Rolando','Rolando Wagner-Barkley III',NULL,NULL,NULL,'3',NULL,'Both','3954989120',NULL,'Sample Data','Rolando','C','Wagner-Barkley',NULL,4,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Wagner-Barkley III',NULL,2,'1990-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(57,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-Jensen family','Olsen-Jensen family',NULL,NULL,NULL,'3',NULL,'Both','2931503766',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen-Jensen family',5,NULL,'Dear Olsen-Jensen family',2,NULL,'Olsen-Jensen family',NULL,NULL,NULL,0,NULL,'Olsen-Jensen family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(58,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Prentice-Samuels, Troy','Troy Prentice-Samuels',NULL,NULL,NULL,'3',NULL,'Both','2658496661',NULL,'Sample Data','Troy','K','Prentice-Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Prentice-Samuels',NULL,NULL,'1971-08-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(59,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jensen, Brigette','Ms. Brigette Jensen',NULL,NULL,NULL,NULL,NULL,'Both','1599729174',NULL,'Sample Data','Brigette','','Jensen',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Jensen',NULL,NULL,'1969-12-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(60,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Scarlet','Ms. Scarlet Jensen',NULL,NULL,NULL,NULL,NULL,'Both','1368448205',NULL,'Sample Data','Scarlet','S','Jensen',2,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Ms. Scarlet Jensen',NULL,1,'1971-01-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(61,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Magan','Magan Roberts',NULL,NULL,NULL,'2',NULL,'Both','296186146',NULL,'Sample Data','Magan','','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Roberts',NULL,1,'2002-08-12',0,NULL,NULL,NULL,'United Culture Network',NULL,NULL,114,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(62,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jjones@infomail.co.uk','jjones@infomail.co.uk',NULL,NULL,NULL,'3',NULL,'Both','4060462597',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear jjones@infomail.co.uk',1,NULL,'Dear jjones@infomail.co.uk',1,NULL,'jjones@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(63,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'González, Maxwell','Maxwell González Sr.',NULL,NULL,NULL,NULL,NULL,'Both','3943391638',NULL,'Sample Data','Maxwell','','González',NULL,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell González Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(64,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Rolando','Rolando Ivanov',NULL,NULL,NULL,'3',NULL,'Both','3260863600',NULL,'Sample Data','Rolando','','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Ivanov',NULL,2,'1975-05-23',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(65,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Lincoln Music Collective','Lincoln Music Collective',NULL,NULL,NULL,'3',NULL,'Both','3013816995',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lincoln Music Collective',NULL,NULL,NULL,0,NULL,NULL,22,'Lincoln Music Collective',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(66,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Landon','Dr. Landon ÅÄ…chowski Sr.',NULL,NULL,NULL,'4',NULL,'Both','2326904439',NULL,'Sample Data','Landon','','ÅÄ…chowski',4,2,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon ÅÄ…chowski Sr.',NULL,2,'1978-01-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(67,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Samuels family','Samuels family',NULL,NULL,NULL,NULL,NULL,'Both','350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(68,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Zope family','Zope family',NULL,NULL,NULL,NULL,NULL,'Both','1649131487',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(69,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'bz.smith@fakemail.info','bz.smith@fakemail.info',NULL,NULL,NULL,'2',NULL,'Both','691426937',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear bz.smith@fakemail.info',1,NULL,'Dear bz.smith@fakemail.info',1,NULL,'bz.smith@fakemail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(70,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Reynolds, Megan','Megan Reynolds',NULL,NULL,NULL,'2',NULL,'Both','373930154',NULL,'Sample Data','Megan','','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Reynolds',NULL,NULL,'1933-11-19',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(71,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Wolfeboro Legal Alliance','Wolfeboro Legal Alliance',NULL,NULL,NULL,NULL,NULL,'Both','21415367',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Wolfeboro Legal Alliance',NULL,NULL,NULL,0,NULL,NULL,93,'Wolfeboro Legal Alliance',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(72,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Rodrigo','Mr. Rodrigo Zope',NULL,NULL,NULL,'2',NULL,'Both','1659102983',NULL,'Sample Data','Rodrigo','','Zope',3,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Mr. Rodrigo Zope',NULL,2,NULL,0,NULL,NULL,NULL,'Wisconsin Agriculture Alliance',NULL,NULL,21,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(73,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'lawerenceo53@testmail.info','lawerenceo53@testmail.info',NULL,NULL,NULL,'4',NULL,'Both','1561785744',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear lawerenceo53@testmail.info',1,NULL,'Dear lawerenceo53@testmail.info',1,NULL,'lawerenceo53@testmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,'Weston Advocacy Solutions',NULL,NULL,170,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(74,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Alexia','Alexia Smith',NULL,NULL,NULL,'2',NULL,'Both','528182465',NULL,'Sample Data','Alexia','B','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Smith',NULL,1,'2002-06-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(75,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Olsen, Daren','Mr. Daren Olsen III',NULL,NULL,NULL,NULL,NULL,'Both','1772811610',NULL,'Sample Data','Daren','M','Olsen',3,4,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Mr. Daren Olsen III',NULL,2,'1953-04-10',1,'2018-01-12',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(76,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'samuelsa@mymail.info','samuelsa@mymail.info',NULL,NULL,NULL,NULL,NULL,'Both','3005490942',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear samuelsa@mymail.info',1,NULL,'Dear samuelsa@mymail.info',1,NULL,'samuelsa@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(77,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cruz, Jerome','Jerome Cruz',NULL,NULL,NULL,NULL,NULL,'Both','516469839',NULL,'Sample Data','Jerome','','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Cruz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(78,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Main Family Center','Main Family Center',NULL,NULL,NULL,NULL,NULL,'Both','1948999214',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Family Center',NULL,NULL,NULL,0,NULL,NULL,89,'Main Family Center',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(79,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner-Barkley, Shauna','Ms. Shauna Wagner-Barkley',NULL,NULL,NULL,NULL,NULL,'Both','1565992903',NULL,'Sample Data','Shauna','L','Wagner-Barkley',2,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Ms. Shauna Wagner-Barkley',NULL,1,'1995-01-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(80,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Wattson family','Wattson family',NULL,NULL,NULL,'3',NULL,'Both','2851339192',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(81,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Olsen-Roberts family','Olsen-Roberts family',NULL,NULL,NULL,'5',NULL,'Both','2833458218',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen-Roberts family',5,NULL,'Dear Olsen-Roberts family',2,NULL,'Olsen-Roberts family',NULL,NULL,NULL,0,NULL,'Olsen-Roberts family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(82,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-Wattson, Felisha','Mrs. Felisha Olsen-Wattson',NULL,NULL,NULL,NULL,NULL,'Both','1022340431',NULL,'Sample Data','Felisha','A','Olsen-Wattson',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha Olsen-Wattson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(83,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Grant, Junko','Junko Grant',NULL,NULL,NULL,NULL,NULL,'Both','1134606119',NULL,'Sample Data','Junko','','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Grant',NULL,NULL,'1961-05-18',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(84,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Lashawnda','Lashawnda Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','3528684380',NULL,'Sample Data','Lashawnda','','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Ivanov',NULL,1,'1949-02-16',1,'2018-02-12',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(85,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice-Jones, Esta','Esta Prentice-Jones',NULL,NULL,NULL,NULL,NULL,'Both','1116855383',NULL,'Sample Data','Esta','P','Prentice-Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Prentice-Jones',NULL,NULL,'2004-12-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(86,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Sibley Advocacy Partnership','Sibley Advocacy Partnership',NULL,NULL,NULL,NULL,NULL,'Both','4014587000',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sibley Advocacy Partnership',NULL,NULL,NULL,0,NULL,NULL,138,'Sibley Advocacy Partnership',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(87,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Olsen, Elbert','Elbert Olsen',NULL,NULL,NULL,'4',NULL,'Both','2334086497',NULL,'Sample Data','Elbert','E','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Olsen',NULL,2,'1967-03-05',1,'2018-01-13',NULL,NULL,'United Music Solutions',NULL,NULL,147,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(88,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Toby','Toby Olsen Sr.',NULL,NULL,NULL,'2',NULL,'Both','2803490896',NULL,'Sample Data','Toby','F','Olsen',NULL,2,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Olsen Sr.',NULL,2,'1979-07-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(89,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Scott','Dr. Scott Samson',NULL,NULL,NULL,NULL,NULL,'Both','3462863584',NULL,'Sample Data','Scott','D','Samson',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Samson',NULL,2,'1992-02-10',0,NULL,NULL,NULL,'Main Family Center',NULL,NULL,78,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(90,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-Roberts, Delana','Ms. Delana Olsen-Roberts',NULL,NULL,NULL,'1',NULL,'Both','507836686',NULL,'Sample Data','Delana','H','Olsen-Roberts',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana Olsen-Roberts',NULL,1,'1995-08-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(91,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Progressive Literacy Association','Progressive Literacy Association',NULL,NULL,NULL,NULL,NULL,'Both','87499003',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Literacy Association',NULL,NULL,NULL,0,NULL,NULL,NULL,'Progressive Literacy Association',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(92,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jones, Clint','Clint Jones Sr.',NULL,NULL,NULL,'4',NULL,'Both','329949700',NULL,'Sample Data','Clint','E','Jones',NULL,2,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Jones Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(93,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Arlyne','Arlyne Roberts',NULL,NULL,NULL,'5',NULL,'Both','2937963567',NULL,'Sample Data','Arlyne','','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Roberts',NULL,1,'1977-06-12',0,NULL,NULL,NULL,'Wolfeboro Legal Alliance',NULL,NULL,71,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(94,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'cruza@airmail.co.in','cruza@airmail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','1596532866',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear cruza@airmail.co.in',1,NULL,'Dear cruza@airmail.co.in',1,NULL,'cruza@airmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(95,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'scarletl60@fishmail.org','scarletl60@fishmail.org',NULL,NULL,NULL,NULL,NULL,'Both','3078590961',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear scarletl60@fishmail.org',1,NULL,'Dear scarletl60@fishmail.org',1,NULL,'scarletl60@fishmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(96,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Olsen, Maria','Dr. Maria Olsen Jr.',NULL,NULL,NULL,NULL,NULL,'Both','1487979958',NULL,'Sample Data','Maria','K','Olsen',4,1,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Dr. Maria Olsen Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(97,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Josefa','Josefa Roberts',NULL,NULL,NULL,NULL,NULL,'Both','2404922387',NULL,'Sample Data','Josefa','','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Roberts',NULL,1,'1974-03-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(98,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Blackwell, Juliann','Juliann Blackwell',NULL,NULL,NULL,'4',NULL,'Both','4227449212',NULL,'Sample Data','Juliann','U','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Blackwell',NULL,1,'1986-02-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(99,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Reynolds-Olsen, Eleonor','Eleonor Reynolds-Olsen',NULL,NULL,NULL,NULL,NULL,'Both','2172487273',NULL,'Sample Data','Eleonor','V','Reynolds-Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Reynolds-Olsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(100,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ivanov-lee.eleonor@fakemail.co.pl','ivanov-lee.eleonor@fakemail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','4173593286',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear ivanov-lee.eleonor@fakemail.co.pl',1,NULL,'Dear ivanov-lee.eleonor@fakemail.co.pl',1,NULL,'ivanov-lee.eleonor@fakemail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(101,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Santina','Santina DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','3076461979',NULL,'Sample Data','Santina','','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina DÃaz',NULL,1,'1955-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(102,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cruz, Kathleen','Kathleen Cruz',NULL,NULL,NULL,NULL,NULL,'Both','2895415088',NULL,'Sample Data','Kathleen','','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Cruz',NULL,1,'1995-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(103,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Sonny','Sonny Robertson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','2508034963',NULL,'Sample Data','Sonny','D','Robertson',NULL,2,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Robertson Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(104,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, BrzÄ™czysÅ‚aw','Mr. BrzÄ™czysÅ‚aw DÃaz',NULL,NULL,NULL,'1',NULL,'Both','1409442649',NULL,'Sample Data','BrzÄ™czysÅ‚aw','E','DÃaz',3,NULL,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Mr. BrzÄ™czysÅ‚aw DÃaz',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(105,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Kiara','Kiara Zope',NULL,NULL,NULL,NULL,NULL,'Both','2982636057',NULL,'Sample Data','Kiara','','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Zope',NULL,NULL,'1961-10-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(106,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Scarlet','Scarlet Samson',NULL,NULL,NULL,NULL,NULL,'Both','625602492',NULL,'Sample Data','Scarlet','U','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Samson',NULL,1,'1990-08-26',0,NULL,NULL,NULL,'Pine Development Trust',NULL,NULL,166,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(107,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Ivanov-Lee family','Ivanov-Lee family',NULL,NULL,NULL,NULL,NULL,'Both','3145159450',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov-Lee family',5,NULL,'Dear Ivanov-Lee family',2,NULL,'Ivanov-Lee family',NULL,NULL,NULL,0,NULL,'Ivanov-Lee family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(108,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Kacey','Dr. Kacey Nielsen',NULL,NULL,NULL,'1',NULL,'Both','786551037',NULL,'Sample Data','Kacey','K','Nielsen',4,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Dr. Kacey Nielsen',NULL,NULL,'1958-04-30',1,'2018-05-01',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(109,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov-Lee, Billy','Billy Ivanov-Lee',NULL,NULL,NULL,'1',NULL,'Both','2854146167',NULL,'Sample Data','Billy','M','Ivanov-Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Ivanov-Lee',NULL,2,'2003-08-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(110,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Reynolds, Princess','Princess Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','2219276168',NULL,'Sample Data','Princess','','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(111,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Shad','Shad Olsen',NULL,NULL,NULL,'3',NULL,'Both','2007691638',NULL,'Sample Data','Shad','','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Olsen',NULL,2,'1964-01-22',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(112,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Teddy','Teddy McReynolds',NULL,NULL,NULL,'5',NULL,'Both','3323367243',NULL,'Sample Data','Teddy','Y','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy McReynolds',NULL,2,'1989-10-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(113,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Felisha','Felisha McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','2265905114',NULL,'Sample Data','Felisha','R','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(114,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'United Culture Network','United Culture Network',NULL,NULL,NULL,'1',NULL,'Both','3293782524',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Culture Network',NULL,NULL,NULL,0,NULL,NULL,61,'United Culture Network',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(115,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Colorado Literacy Partners','Colorado Literacy Partners',NULL,NULL,NULL,'3',NULL,'Both','3161430373',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Colorado Literacy Partners',NULL,NULL,NULL,0,NULL,NULL,160,'Colorado Literacy Partners',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(116,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Barkley, Daren','Daren Barkley',NULL,NULL,NULL,NULL,NULL,'Both','3004217931',NULL,'Sample Data','Daren','E','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Barkley',NULL,2,'1982-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(117,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Blackwell, Jina','Dr. Jina Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','3860989799',NULL,'Sample Data','Jina','A','Blackwell',4,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Dr. Jina Blackwell',NULL,1,'1956-04-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(118,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Sherman','Sherman Wattson II',NULL,NULL,NULL,NULL,NULL,'Both','2577955110',NULL,'Sample Data','Sherman','','Wattson',NULL,3,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Wattson II',NULL,2,'2007-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(119,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jones, Landon','Landon Jones',NULL,NULL,NULL,'3',NULL,'Both','1338428920',NULL,'Sample Data','Landon','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Jones',NULL,NULL,'1997-03-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(120,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Grant-Reynolds family','Grant-Reynolds family',NULL,NULL,NULL,'4',NULL,'Both','2953983889',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Grant-Reynolds family',5,NULL,'Dear Grant-Reynolds family',2,NULL,'Grant-Reynolds family',NULL,NULL,NULL,0,NULL,'Grant-Reynolds family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(121,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Reynolds, Russell','Russell Reynolds II',NULL,NULL,NULL,'2',NULL,'Both','2896350648',NULL,'Sample Data','Russell','I','Reynolds',NULL,3,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Reynolds II',NULL,2,'1945-11-30',1,'2018-08-22',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(122,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Olsen, Shad','Shad Olsen',NULL,NULL,NULL,'4',NULL,'Both','2007691638',NULL,'Sample Data','Shad','','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(123,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Justina','Justina Wilson',NULL,NULL,NULL,NULL,NULL,'Both','3516535042',NULL,'Sample Data','Justina','Z','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Wilson',NULL,1,'1981-09-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(124,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'louparker55@testmail.co.in','louparker55@testmail.co.in',NULL,NULL,NULL,'2',NULL,'Both','399977428',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear louparker55@testmail.co.in',1,NULL,'Dear louparker55@testmail.co.in',1,NULL,'louparker55@testmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(125,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds family','McReynolds family',NULL,NULL,NULL,'2',NULL,'Both','3032680972',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(126,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Smith, Lawerence','Lawerence Smith',NULL,NULL,NULL,NULL,NULL,'Both','3991125276',NULL,'Sample Data','Lawerence','','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Smith',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(127,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-Roberts, Elizabeth','Elizabeth Olsen-Roberts',NULL,NULL,NULL,NULL,NULL,'Both','2765004160',NULL,'Sample Data','Elizabeth','J','Olsen-Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Olsen-Roberts',NULL,1,'1984-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(128,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wagner, Kiara','Kiara Wagner',NULL,NULL,NULL,'4',NULL,'Both','2385501712',NULL,'Sample Data','Kiara','M','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Wagner',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(129,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samuels, Rolando','Rolando Samuels',NULL,NULL,NULL,NULL,NULL,'Both','210030795',NULL,'Sample Data','Rolando','A','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Samuels',NULL,NULL,'1999-09-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(130,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wilson, Allen','Allen Wilson III',NULL,NULL,NULL,NULL,NULL,'Both','669149647',NULL,'Sample Data','Allen','','Wilson',NULL,4,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Wilson III',NULL,2,'1992-10-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(131,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Russell','Russell Jones',NULL,NULL,NULL,'1',NULL,'Both','3767927362',NULL,'Sample Data','Russell','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Jones',NULL,2,'1938-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(132,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Carylon','Carylon Dimitrov',NULL,NULL,NULL,'4',NULL,'Both','2719489073',NULL,'Sample Data','Carylon','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Dimitrov',NULL,1,'1929-02-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(133,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Jina','Dr. Jina Patel',NULL,NULL,NULL,'3',NULL,'Both','2542120009',NULL,'Sample Data','Jina','','Patel',4,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Dr. Jina Patel',NULL,1,'1980-07-30',0,NULL,NULL,NULL,'Colorado Springs Action Center',NULL,NULL,54,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(134,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Maxwell','Maxwell Samuels Jr.',NULL,NULL,NULL,NULL,NULL,'Both','445599950',NULL,'Sample Data','Maxwell','T','Samuels',NULL,1,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Samuels Jr.',NULL,NULL,'1981-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(135,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Zope, Alida','Alida Zope',NULL,NULL,NULL,NULL,NULL,'Both','3726796517',NULL,'Sample Data','Alida','J','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,'Grants Action Academy',NULL,NULL,199,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(136,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Grant, Ashley','Mr. Ashley Grant',NULL,NULL,NULL,'1',NULL,'Both','1641977721',NULL,'Sample Data','Ashley','','Grant',3,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mr. Ashley Grant',NULL,2,'1978-07-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(137,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'grant.errol@lol.co.nz','grant.errol@lol.co.nz',NULL,NULL,NULL,'3',NULL,'Both','342608553',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear grant.errol@lol.co.nz',1,NULL,'Dear grant.errol@lol.co.nz',1,NULL,'grant.errol@lol.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(138,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Rodrigo','Rodrigo Barkley',NULL,NULL,NULL,'2',NULL,'Both','2540977951',NULL,'Sample Data','Rodrigo','F','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo Barkley',NULL,2,'1979-05-06',0,NULL,NULL,NULL,'Sibley Advocacy Partnership',NULL,NULL,86,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(139,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Errol','Errol Parker',NULL,NULL,NULL,NULL,NULL,'Both','1832982770',NULL,'Sample Data','Errol','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Parker',NULL,2,'2000-01-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(140,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wagner, Allan','Allan Wagner',NULL,NULL,NULL,NULL,NULL,'Both','181008851',NULL,'Sample Data','Allan','A','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Wagner',NULL,2,'1985-12-14',0,NULL,NULL,NULL,'Global Action Partners',NULL,NULL,34,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(141,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Tanya','Tanya Samuels',NULL,NULL,NULL,NULL,NULL,'Both','147060242',NULL,'Sample Data','Tanya','D','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Samuels',NULL,1,NULL,1,'2017-08-31',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(142,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wilson, Maxwell','Maxwell Wilson',NULL,NULL,NULL,NULL,NULL,'Both','2894206629',NULL,'Sample Data','Maxwell','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Wilson',NULL,2,'1995-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(143,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-Jensen, Norris','Dr. Norris Olsen-Jensen Jr.',NULL,NULL,NULL,NULL,NULL,'Both','635486066',NULL,'Sample Data','Norris','','Olsen-Jensen',4,1,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Dr. Norris Olsen-Jensen Jr.',NULL,2,'1996-11-25',0,NULL,NULL,NULL,'New York Sports Solutions',NULL,NULL,12,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(144,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Reynolds, Delana','Delana Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','783051716',NULL,'Sample Data','Delana','F','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Reynolds',NULL,1,'1963-03-16',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(145,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Kacey','Kacey DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','2183075244',NULL,'Sample Data','Kacey','','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey DÃaz',NULL,1,NULL,0,NULL,NULL,NULL,'California Education Network',NULL,NULL,178,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(146,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Norris','Norris Barkley',NULL,NULL,NULL,'4',NULL,'Both','2989554076',NULL,'Sample Data','Norris','V','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Barkley',NULL,2,'1990-08-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(147,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'United Music Solutions','United Music Solutions',NULL,NULL,NULL,'2',NULL,'Both','1627215897',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Music Solutions',NULL,NULL,NULL,0,NULL,NULL,87,'United Music Solutions',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(148,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Alexia','Dr. Alexia Samuels',NULL,NULL,NULL,'5',NULL,'Both','2929146970',NULL,'Sample Data','Alexia','','Samuels',4,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Dr. Alexia Samuels',NULL,NULL,'1957-04-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(149,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Nielsen, Teddy','Teddy Nielsen',NULL,NULL,NULL,'2',NULL,'Both','1600610365',NULL,'Sample Data','Teddy','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Nielsen',NULL,2,'1947-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(150,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Grant-Reynolds, Herminia','Herminia Grant-Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3404176509',NULL,'Sample Data','Herminia','T','Grant-Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Grant-Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(151,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Sherman','Mr. Sherman Olsen',NULL,NULL,NULL,'4',NULL,'Both','2189998020',NULL,'Sample Data','Sherman','','Olsen',3,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(152,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Rolando','Mr. Rolando Blackwell Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1317373414',NULL,'Sample Data','Rolando','','Blackwell',3,2,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Mr. Rolando Blackwell Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(153,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Roberts, Kathlyn','Kathlyn Roberts',NULL,NULL,NULL,'2',NULL,'Both','2944584126',NULL,'Sample Data','Kathlyn','','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(154,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell, Kathlyn','Kathlyn Terrell',NULL,NULL,NULL,'2',NULL,'Both','2395650618',NULL,'Sample Data','Kathlyn','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Terrell',NULL,1,'1983-11-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(155,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Truman','Truman Samuels',NULL,NULL,NULL,NULL,NULL,'Both','818816780',NULL,'Sample Data','Truman','','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Samuels',NULL,2,'1983-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(156,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Magan','Magan Deforest',NULL,NULL,NULL,NULL,NULL,'Both','2893209447',NULL,'Sample Data','Magan','L','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Deforest',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(157,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen, Merrie','Merrie Olsen',NULL,NULL,NULL,NULL,NULL,'Both','3769285759',NULL,'Sample Data','Merrie','','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Olsen',NULL,NULL,'1951-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(158,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Esta','Esta Terrell',NULL,NULL,NULL,'1',NULL,'Both','3319173143',NULL,'Sample Data','Esta','V','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(159,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Brittney','Brittney Patel',NULL,NULL,NULL,NULL,NULL,'Both','2883287574',NULL,'Sample Data','Brittney','O','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Patel',NULL,1,'2002-12-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(160,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'ÅÄ…chowski, Shauna','Dr. Shauna ÅÄ…chowski',NULL,NULL,NULL,'4',NULL,'Both','3103955337',NULL,'Sample Data','Shauna','U','ÅÄ…chowski',4,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Dr. Shauna ÅÄ…chowski',NULL,1,'1936-10-13',1,'2018-01-25',NULL,NULL,'Colorado Literacy Partners',NULL,NULL,115,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(161,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wattson, Brigette','Dr. Brigette Wattson',NULL,NULL,NULL,'4',NULL,'Both','4266118861',NULL,'Sample Data','Brigette','','Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Wattson',NULL,1,'1961-12-30',1,'2018-04-18',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(162,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Rolando','Dr. Rolando Smith',NULL,NULL,NULL,'5',NULL,'Both','1810396759',NULL,'Sample Data','Rolando','B','Smith',4,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Smith',NULL,2,'1973-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(163,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Delana','Delana Zope',NULL,NULL,NULL,NULL,NULL,'Both','3545847558',NULL,'Sample Data','Delana','F','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(164,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'lee.elbert31@testmail.biz','lee.elbert31@testmail.biz',NULL,NULL,NULL,'5',NULL,'Both','2510786895',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear lee.elbert31@testmail.biz',1,NULL,'Dear lee.elbert31@testmail.biz',1,NULL,'lee.elbert31@testmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(165,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Arlyne','Dr. Arlyne Zope',NULL,NULL,NULL,'2',NULL,'Both','1141685238',NULL,'Sample Data','Arlyne','P','Zope',4,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Dr. Arlyne Zope',NULL,NULL,'1992-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(166,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Pine Development Trust','Pine Development Trust',NULL,NULL,NULL,'1',NULL,'Both','3102485999',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pine Development Trust',NULL,NULL,NULL,0,NULL,NULL,106,'Pine Development Trust',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(167,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jensen, Scarlet','Scarlet Jensen',NULL,NULL,NULL,'2',NULL,'Both','1368448205',NULL,'Sample Data','Scarlet','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Jensen',NULL,1,'1932-06-10',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(168,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley family','Barkley family',NULL,NULL,NULL,'2',NULL,'Both','2888062109',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley family',5,NULL,'Dear Barkley family',2,NULL,'Barkley family',NULL,NULL,NULL,0,NULL,'Barkley family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(169,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jacobs.kacey@fakemail.net','jacobs.kacey@fakemail.net',NULL,NULL,NULL,NULL,NULL,'Both','4198315236',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jacobs.kacey@fakemail.net',1,NULL,'Dear jacobs.kacey@fakemail.net',1,NULL,'jacobs.kacey@fakemail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(170,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Weston Advocacy Solutions','Weston Advocacy Solutions',NULL,NULL,NULL,NULL,NULL,'Both','466332213',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Weston Advocacy Solutions',NULL,NULL,NULL,0,NULL,NULL,73,'Weston Advocacy Solutions',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(171,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Parker, Lawerence','Lawerence Parker III',NULL,NULL,NULL,NULL,NULL,'Both','2317515072',NULL,'Sample Data','Lawerence','','Parker',NULL,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Parker III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(172,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Maple Software Network','Maple Software Network',NULL,NULL,NULL,'5',NULL,'Both','316504542',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Maple Software Network',NULL,NULL,NULL,0,NULL,NULL,187,'Maple Software Network',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(173,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Zope, Kathlyn','Kathlyn Zope',NULL,NULL,NULL,'2',NULL,'Both','1348907697',NULL,'Sample Data','Kathlyn','P','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Zope',NULL,1,'1992-05-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(174,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Parker-Jones-DÃaz, Elizabeth','Elizabeth Parker-Jones-DÃaz',NULL,NULL,NULL,NULL,NULL,'Both','4036418107',NULL,'Sample Data','Elizabeth','X','Parker-Jones-DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Parker-Jones-DÃaz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(175,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Olsen-Wattson, Beula','Beula Olsen-Wattson',NULL,NULL,NULL,NULL,NULL,'Both','657898228',NULL,'Sample Data','Beula','F','Olsen-Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Olsen-Wattson',NULL,NULL,'2002-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(176,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Billy','Mr. Billy Wattson',NULL,NULL,NULL,'4',NULL,'Both','3097131221',NULL,'Sample Data','Billy','C','Wattson',3,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Mr. Billy Wattson',NULL,2,'1981-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(177,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Valene','Valene Lee',NULL,NULL,NULL,NULL,NULL,'Both','1883527175',NULL,'Sample Data','Valene','A','Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Lee',NULL,1,'1984-06-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(178,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'California Education Network','California Education Network',NULL,NULL,NULL,NULL,NULL,'Both','1377799105',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'California Education Network',NULL,NULL,NULL,0,NULL,NULL,145,'California Education Network',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(179,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Prentice-Jones family','Prentice-Jones family',NULL,NULL,NULL,'5',NULL,'Both','903878557',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice-Jones family',5,NULL,'Dear Prentice-Jones family',2,NULL,'Prentice-Jones family',NULL,NULL,NULL,0,NULL,'Prentice-Jones family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(180,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Bob','Bob Prentice II',NULL,NULL,NULL,NULL,NULL,'Both','912966256',NULL,'Sample Data','Bob','','Prentice',NULL,3,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Prentice II',NULL,2,NULL,1,'2017-12-29',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(181,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'McReynolds, Sonny','Dr. Sonny McReynolds Jr.',NULL,NULL,NULL,'5',NULL,'Both','3975405155',NULL,'Sample Data','Sonny','V','McReynolds',4,1,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Dr. Sonny McReynolds Jr.',NULL,NULL,'1930-12-29',1,'2018-03-10',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(182,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'terry.scarlet@example.info','terry.scarlet@example.info',NULL,NULL,NULL,NULL,NULL,'Both','1604655534',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear terry.scarlet@example.info',1,NULL,'Dear terry.scarlet@example.info',1,NULL,'terry.scarlet@example.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(183,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Josefa','Mrs. Josefa Wilson',NULL,NULL,NULL,'3',NULL,'Both','244303065',NULL,'Sample Data','Josefa','','Wilson',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Wilson',NULL,1,NULL,1,'2018-06-21',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(184,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terry, Andrew','Andrew Terry Sr.',NULL,NULL,NULL,NULL,NULL,'Both','3371971091',NULL,'Sample Data','Andrew','E','Terry',NULL,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Terry Sr.',NULL,2,'1997-12-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(185,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Sharyn','Ms. Sharyn Patel',NULL,NULL,NULL,NULL,NULL,'Both','3025102729',NULL,'Sample Data','Sharyn','E','Patel',2,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Ms. Sharyn Patel',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(186,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jacobs, Eleonor','Eleonor Jacobs',NULL,NULL,NULL,'4',NULL,'Both','1338648444',NULL,'Sample Data','Eleonor','','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Jacobs',NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(187,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samson, Margaret','Mrs. Margaret Samson',NULL,NULL,NULL,'4',NULL,'Both','749664303',NULL,'Sample Data','Margaret','','Samson',1,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Mrs. Margaret Samson',NULL,NULL,NULL,0,NULL,NULL,NULL,'Maple Software Network',NULL,NULL,172,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(188,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, BrzÄ™czysÅ‚aw','BrzÄ™czysÅ‚aw Reynolds Jr.',NULL,NULL,NULL,'2',NULL,'Both','2553326248',NULL,'Sample Data','BrzÄ™czysÅ‚aw','','Reynolds',NULL,1,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Reynolds Jr.',NULL,2,'1963-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(189,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Deforest, Sharyn','Mrs. Sharyn Deforest',NULL,NULL,NULL,'3',NULL,'Both','2704728591',NULL,'Sample Data','Sharyn','','Deforest',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn Deforest',NULL,1,'1949-09-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(190,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen, Erik','Mr. Erik Olsen III',NULL,NULL,NULL,'3',NULL,'Both','1259292682',NULL,'Sample Data','Erik','A','Olsen',3,4,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Mr. Erik Olsen III',NULL,2,NULL,0,NULL,NULL,NULL,'Maple Culture Center',NULL,NULL,32,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(191,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Wattson, Mei','Mei Wattson',NULL,NULL,NULL,'5',NULL,'Both','1845197516',NULL,'Sample Data','Mei','','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Wattson',NULL,NULL,'1974-10-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(192,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner-Barkley family','Wagner-Barkley family',NULL,NULL,NULL,'1',NULL,'Both','3557314571',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner-Barkley family',5,NULL,'Dear Wagner-Barkley family',2,NULL,'Wagner-Barkley family',NULL,NULL,NULL,0,NULL,'Wagner-Barkley family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(193,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Errol','Errol Samuels',NULL,NULL,NULL,'5',NULL,'Both','1627005743',NULL,'Sample Data','Errol','','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Samuels',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(194,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts family','Roberts family',NULL,NULL,NULL,'4',NULL,'Both','2097305882',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Roberts family',5,NULL,'Dear Roberts family',2,NULL,'Roberts family',NULL,NULL,NULL,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(195,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz-Samuels, Sharyn','Ms. Sharyn DÃaz-Samuels',NULL,NULL,NULL,NULL,NULL,'Both','119828057',NULL,'Sample Data','Sharyn','L','DÃaz-Samuels',2,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Ms. Sharyn DÃaz-Samuels',NULL,NULL,'1986-11-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'),(196,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Yadav, Rolando','Dr. Rolando Yadav Sr.',NULL,NULL,NULL,'2',NULL,'Both','1527565579',NULL,'Sample Data','Rolando','F','Yadav',4,2,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Yadav Sr.',NULL,2,'1977-11-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(197,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Brittney','Mrs. Brittney Lee',NULL,NULL,NULL,NULL,NULL,'Both','3389044185',NULL,'Sample Data','Brittney','D','Lee',1,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Mrs. Brittney Lee',NULL,1,'1931-07-28',1,'2017-09-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(198,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Terrell, Teddy','Teddy Terrell',NULL,NULL,NULL,NULL,NULL,'Both','829330438',NULL,'Sample Data','Teddy','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Terrell',NULL,2,'1963-08-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:45'),(199,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'Grants Action Academy','Grants Action Academy',NULL,NULL,NULL,NULL,NULL,'Both','397151863',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Grants Action Academy',NULL,NULL,NULL,0,NULL,NULL,135,'Grants Action Academy',NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(200,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Patel family','Patel family',NULL,NULL,NULL,NULL,NULL,'Both','1669281794',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Patel family',5,NULL,'Dear Patel family',2,NULL,'Patel family',NULL,NULL,NULL,0,NULL,'Patel family',NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:46'),(201,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen-Samson, Sanford','Mr. Sanford Nielsen-Samson',NULL,NULL,NULL,'5',NULL,'Both','1754133856',NULL,'Sample Data','Sanford','Q','Nielsen-Samson',3,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Mr. Sanford Nielsen-Samson',NULL,NULL,'1968-10-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-08-22 22:01:45','2018-08-22 22:01:47'); /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -228,7 +228,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution` WRITE; /*!40000 ALTER TABLE `civicrm_contribution` DISABLE KEYS */; -INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`) VALUES (1,2,1,NULL,4,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL),(2,4,1,NULL,1,'2010-03-21 00:00:00',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(3,6,1,NULL,4,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL),(7,82,1,NULL,1,'2010-03-27 00:00:00',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(8,92,1,NULL,1,'2010-03-08 00:00:00',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(9,34,1,NULL,1,'2010-04-22 00:00:00',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(14,200,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(15,62,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(16,137,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(17,113,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(18,69,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(19,181,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(20,141,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(21,102,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(22,87,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(23,166,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(24,78,2,NULL,1,'2018-05-22 01:57:23',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(25,45,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(26,156,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(27,49,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(28,140,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(29,163,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(30,164,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(31,158,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(32,8,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(33,22,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(34,153,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(35,149,2,NULL,1,'2018-05-22 01:57:23',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(36,161,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(37,118,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(38,18,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(39,63,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(40,147,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(41,150,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(42,129,2,NULL,1,'2018-05-22 01:57:23',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(43,123,2,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(45,2,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(46,4,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(47,7,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(48,9,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(49,19,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(50,20,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(51,25,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(52,31,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(53,35,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(54,41,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(55,44,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(56,48,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(57,51,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(58,61,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(59,63,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(60,66,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(61,73,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(62,85,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(63,86,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(64,89,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(65,96,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(66,101,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(67,103,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(68,106,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(69,108,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(70,109,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(71,110,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(72,112,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(73,113,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(74,114,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(75,115,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(76,121,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(77,124,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(78,128,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(79,129,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(80,131,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(81,133,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(82,137,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(83,151,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(84,153,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(85,155,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(86,162,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(87,164,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(88,166,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(89,177,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(90,182,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(91,186,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(92,188,4,NULL,1,'2018-05-22 01:57:23',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(93,190,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(94,199,4,NULL,1,'2018-05-22 01:57:23',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-05-22 01:57:23',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL); +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`) VALUES (1,2,1,NULL,4,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL),(2,4,1,NULL,1,'2010-03-21 00:00:00',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(3,6,1,NULL,4,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL),(7,82,1,NULL,1,'2010-03-27 00:00:00',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(8,92,1,NULL,1,'2010-03-08 00:00:00',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(9,34,1,NULL,1,'2010-04-22 00:00:00',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(14,121,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(15,175,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(16,106,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(17,133,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(18,118,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(19,176,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(20,3,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(21,6,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(22,42,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(23,77,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(24,144,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(25,45,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(26,165,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(27,38,2,NULL,1,'2018-08-23 08:01:48',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(28,191,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(29,51,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(30,41,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(31,159,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(32,90,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(33,56,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(34,25,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(35,197,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(36,185,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(37,180,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(38,101,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(39,138,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(40,145,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(41,177,2,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(42,143,2,NULL,1,'2018-08-23 08:01:48',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(43,61,2,NULL,1,'2018-08-23 08:01:48',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(45,2,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(46,6,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(47,10,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(48,17,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(49,33,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(50,35,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(51,36,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(52,37,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(53,41,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(54,45,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(55,49,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(56,50,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(57,60,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(58,69,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(59,74,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(60,75,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(61,86,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(62,90,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(63,91,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(64,102,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(65,105,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(66,108,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(67,109,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(68,110,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(69,111,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(70,114,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(71,119,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(72,127,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(73,129,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(74,136,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(75,137,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(76,140,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(77,141,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(78,142,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(79,144,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(80,145,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(81,146,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(82,147,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(83,154,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(84,161,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(85,165,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(86,167,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(87,170,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(88,174,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(89,180,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(90,182,4,NULL,1,'2018-08-23 08:01:48',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(91,183,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(92,190,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(93,191,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(94,200,4,NULL,1,'2018-08-23 08:01:48',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-08-23 08:01:48',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */; UNLOCK TABLES; @@ -266,7 +266,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contribution_soft` WRITE; /*!40000 ALTER TABLE `civicrm_contribution_soft` DISABLE KEYS */; -INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES (1,8,57,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,57,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); +INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES (1,8,13,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,13,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */; UNLOCK TABLES; @@ -399,7 +399,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_domain` WRITE; /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */; -INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `config_backend`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,NULL,'5.4.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); +INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `config_backend`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,NULL,'5.5.1',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */; UNLOCK TABLES; @@ -409,7 +409,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_email` WRITE; /*!40000 ALTER TABLE `civicrm_email` DISABLE KEYS */; -INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES (1,1,1,'fixme.domainemail@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(2,146,1,'olsen.jina85@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(3,146,1,'jinao@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(4,96,1,'mcreynoldsa@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(5,96,1,'amcreynolds97@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL),(6,67,1,'delanareynolds@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(7,57,1,'iveymller9@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(8,57,1,'ix.mller@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(9,108,1,'junkoj@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(10,108,1,'junkojensen@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),(11,38,1,'samsons@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(12,38,1,'ssamson@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(13,161,1,'wilson.kenny74@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(14,155,1,'santinap@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(15,23,1,'ly.wattson@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(16,23,1,'lashawndawattson@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(17,52,1,'omard@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(18,107,1,'craigivanov@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(19,107,1,'craigi31@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(20,94,1,'bryonterrell@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(21,94,1,'terrell.bryon11@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(22,3,1,'jones.kiara47@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(23,3,1,'kiaraj@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),(24,125,1,'erikz29@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(25,125,1,'zope.k.erik@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(26,173,1,'robertsonr57@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),(27,80,1,'dimitrov.allen@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(28,80,1,'dimitrova@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL),(29,69,1,'olsen.i.heidi@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(30,181,1,'rolandprentice46@example.com',1,0,0,0,NULL,NULL,NULL,NULL),(31,181,1,'rolandp@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(32,60,1,'rb.wagner@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(33,133,1,'patel.x.billy@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(34,133,1,'patelb89@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(35,127,1,'joness@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(36,190,1,'nielsen.rodrigo@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(37,121,1,'jeromei66@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(38,62,1,'zopea22@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(39,62,1,'zopea@airmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(40,13,1,'kjacobs@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(41,110,1,'rx.wattson9@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(42,110,1,'wattson.x.russell23@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(43,43,1,'cruz.r.rolando21@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(44,43,1,'cruz.rolando@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(45,152,1,'iveyl@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(46,149,1,'adams.maria40@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(47,188,1,'yadav.bob@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(48,36,1,'mcreynolds.shad@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(49,36,1,'mcreynoldss6@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(50,187,1,'miguelm@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(51,63,1,'lgonzlez@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(52,63,1,'lawerencegonzlez@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL),(53,131,1,'blackwellm@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(54,193,1,'rebekahyadav@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(55,5,1,'vparker@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(56,5,1,'vparker@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(57,31,1,'robertson.lashawnda@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(58,46,1,'sl.dimitrov@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(59,14,1,'caryloni@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(60,117,1,'carlosl81@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(61,59,1,'zope.juliann54@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(62,28,1,'beulaw@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(63,171,1,'justinas@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(64,186,1,'mller.iris3@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(65,186,1,'mller.iris@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(66,128,1,'zope.maxwell40@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(67,128,1,'maxwellzope91@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(68,143,1,'jx.grant23@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(69,98,1,'rodrigoolsen@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(70,98,1,'olsenr@sample.com',0,0,0,0,NULL,NULL,NULL,NULL),(71,53,1,'carloss5@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(72,53,1,'samuelsc@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),(73,170,1,'adams.kiara@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(74,93,1,'mller.josefa@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),(75,93,1,'josefam@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(76,56,1,'ad.terrell13@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(77,56,1,'terrell.allan@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),(78,168,1,'yadav.kandace43@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(79,145,1,'smith.brittney44@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(80,4,1,'barkley.shauna@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(81,30,1,'terrell.delana@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(82,50,1,'terrell.junko@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(83,50,1,'terrell.junko44@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(84,45,1,'santinaterrell@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(85,45,1,'santinat@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(86,182,1,'maxwellt@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(87,87,1,'darenm86@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(88,118,1,'juliannm31@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(89,118,1,'jd.mcreynolds7@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(90,19,1,'mcreynolds.maria@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(91,19,1,'mcreynolds.maria@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),(92,48,1,'jensen.teresa81@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(93,198,1,'jensenn@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(94,82,1,'jensen.lashawnda@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(95,82,1,'lashawndajensen21@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(96,132,1,'terry.jerome@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(97,132,1,'jeromet@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL),(98,156,1,'jterry32@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(99,114,1,'beulan91@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),(100,120,1,'nielsen.andrew@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(101,137,1,'nielsen.maxwell82@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(102,139,1,'jensen.lincoln@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(103,76,1,'jensen.betty87@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(104,76,1,'bettyj@sample.com',0,0,0,0,NULL,NULL,NULL,NULL),(105,124,1,'jensenr82@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(106,124,1,'rodrigoj@example.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(107,15,1,'olsen.andrew58@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(108,7,1,'tr.mcreynolds@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(109,7,1,'tanyamcreynolds@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(110,22,1,'olsen-mcreynolds.g.shauna@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(111,22,1,'olsen-mcreynolds.g.shauna34@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(112,40,1,'miguelo@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),(113,6,1,'trumanadams78@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(114,6,1,'adams.truman49@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(115,180,1,'justinaa@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(116,147,1,'andrewadams51@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(117,176,1,'cruz.brzczysaw@example.org',1,0,0,0,NULL,NULL,NULL,NULL),(118,176,1,'brzczysawc@sample.org',0,0,0,0,NULL,NULL,NULL,NULL),(119,166,1,'bernadettem@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(120,166,1,'mllerb@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),(121,64,1,'princesscruz-mller@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(122,64,1,'pcruz-mller@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(123,8,1,'dimitrovc6@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(124,112,1,'mbachman-dimitrov@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(125,138,1,'bryondimitrov@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(126,138,1,'bryond52@example.net',0,0,0,0,NULL,NULL,NULL,NULL),(127,153,1,'bdimitrov96@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(128,153,1,'bdimitrov@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(129,44,1,'jonesl@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(130,44,1,'le.jones68@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(131,119,1,'ivanov.scott@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(132,119,1,'scotti@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(133,144,1,'jones-ivanov.e.teddy@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),(134,144,1,'jones-ivanovt@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(135,164,1,'brzczysawprentice89@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(136,164,1,'prenticeb@testmail.info',0,0,0,0,NULL,NULL,NULL,NULL),(137,106,1,'jinajones-prentice@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(138,106,1,'jones-prentice.jina65@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(139,73,1,'prenticek@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),(140,105,1,'prentice.eleonor@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(141,105,1,'eleonorprentice@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(142,197,1,'cruz.esta@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(143,197,1,'cruze66@airmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(144,196,1,'elinacruz69@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(145,196,1,'elinac@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(146,201,1,'roberts.daren49@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),(147,201,1,'roberts.b.daren@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(148,140,1,'lashawndachowski-roberts68@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(149,27,1,'roberts.valene@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(150,27,1,'roberts.valene91@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(151,97,1,'roberts.margaret@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(152,97,1,'margaretr@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(153,35,1,'andrewc@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(154,79,1,'terry-coopers36@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),(155,79,1,'scarletterry-cooper17@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(156,47,1,'cooper.brittney@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(157,47,1,'cooperb95@airmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(158,61,1,'cooperk@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(159,134,1,'bachman.billy@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(160,134,1,'bbachman94@lol.biz',0,0,0,0,NULL,NULL,NULL,NULL),(161,122,1,'ashliebachman-wattson@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(162,122,1,'bachman-wattson.e.ashlie@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(163,37,1,'bachman-wattson.carlos@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(164,102,1,'cooper.m.jacob53@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(165,102,1,'cooper.jacob@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(166,26,1,'meicooper@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(167,26,1,'meicooper93@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(168,179,1,'ocooper33@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(169,179,1,'cooper.omar@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(170,130,1,'shermans15@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(171,130,1,'samson.sherman@testmail.info',0,0,0,0,NULL,NULL,NULL,NULL),(172,141,1,'herminias38@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(173,86,1,'samsonn21@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(174,86,1,'nsamson@notmail.info',0,0,0,0,NULL,NULL,NULL,NULL),(175,70,1,'estasamson@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(176,70,1,'esamson41@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL),(177,162,3,'service@unitedalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(178,64,2,'cruz-mllerp@unitedalliance.org',0,0,0,0,NULL,NULL,NULL,NULL),(179,88,3,'sales@indianadevelopmentalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(180,108,2,'jensenj@indianadevelopmentalliance.org',0,0,0,0,NULL,NULL,NULL,NULL),(181,151,3,'service@bathactioncollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(182,44,2,'le.jones@bathactioncollective.org',0,0,0,0,NULL,NULL,NULL,NULL),(183,169,3,'contact@mckenneysoftware.org',1,0,0,0,NULL,NULL,NULL,NULL),(184,118,2,'mcreynolds.juliann23@mckenneysoftware.org',0,0,0,0,NULL,NULL,NULL,NULL),(185,10,3,'sales@nebraskasolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,45,2,'.@nebraskasolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),(187,100,3,'info@leburndevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),(188,84,3,'feedback@creativemusicnetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),(189,97,2,'margaretr90@creativemusicnetwork.org',0,0,0,0,NULL,NULL,NULL,NULL),(190,195,3,'info@iolafamilyfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(191,92,2,'wilsonv65@iolafamilyfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(192,101,3,'info@lincolnagriculturesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(193,43,2,'@lincolnagriculturesolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),(194,178,3,'info@wisconsinactionfund.org',1,0,0,0,NULL,NULL,NULL,NULL),(195,123,2,'bettyadams@wisconsinactionfund.org',1,0,0,0,NULL,NULL,NULL,NULL),(196,34,3,'sales@ruralliteracy.org',1,0,0,0,NULL,NULL,NULL,NULL),(197,21,2,'jensen.alexia6@ruralliteracy.org',1,0,0,0,NULL,NULL,NULL,NULL),(198,16,3,'info@arkansasfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(199,14,2,'cp.ivanov7@arkansasfellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),(200,103,3,'info@creativefamilyalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(201,196,2,'cruze@creativefamilyalliance.org',0,0,0,0,NULL,NULL,NULL,NULL),(202,99,3,'feedback@wfdevelopmentcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(203,172,2,'santinaj@wfdevelopmentcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(204,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(205,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(206,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES (1,1,1,'fixme.domainemail@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(2,124,1,'lparker41@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(3,124,1,'louparker55@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(4,13,1,'wilson.teddy@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),(5,13,1,'teddyw88@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(6,169,1,'jacobs.kacey@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(7,169,1,'jacobs.kacey@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL),(8,77,1,'jcruz81@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(9,186,1,'eleonorj41@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(10,156,1,'deforest.l.magan@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(11,156,1,'ml.deforest16@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(12,66,1,'chowski.landon10@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(13,66,1,'chowskil@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(14,151,1,'shermanolsen@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(15,103,1,'robertson.sonny96@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),(16,103,1,'sonnyr@testing.org',0,0,0,0,NULL,NULL,NULL,NULL),(17,139,1,'errolp@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(18,139,1,'errolp@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(19,97,1,'josefaroberts@example.org',1,0,0,0,NULL,NULL,NULL,NULL),(20,97,1,'roberts.josefa@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),(21,84,1,'lashawndaivanov@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),(22,84,1,'lashawndai24@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(23,164,1,'lee.elbert95@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(24,164,1,'lee.elbert31@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(25,51,1,'adams.jackson@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(26,128,1,'wagner.m.kiara78@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),(27,70,1,'reynolds.megan@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(28,70,1,'mreynolds@testmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(29,69,1,'bz.smith@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(30,15,1,'carlosnielsen@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(31,182,1,'terry.scarlet@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(32,161,1,'bwattson85@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(33,161,1,'wattson.brigette74@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL),(34,83,1,'junkog@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(35,110,1,'princessreynolds@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),(36,110,1,'princessreynolds@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(37,38,1,'deforesto69@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(38,38,1,'deforest.omar@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(39,131,1,'jones.russell@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),(40,87,1,'olsen.elbert@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),(41,87,1,'olsen.e.elbert@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(42,42,1,'barkleya91@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(43,55,1,'yadava@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(44,55,1,'aa.yadav@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL),(45,31,1,'lareew79@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(46,31,1,'li.wattson@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(47,104,1,'daz.brzczysaw@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(48,104,1,'brzczysawd81@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(49,196,1,'rolandoy@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(50,196,1,'rolandoyadav18@lol.info',0,0,0,0,NULL,NULL,NULL,NULL),(51,76,1,'samuelsa@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(52,63,1,'gonzlez.maxwell@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(53,63,1,'gonzlezm@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(54,148,1,'asamuels27@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(55,94,1,'cruza@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(56,6,1,'ivanov.toby@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(57,6,1,'ivanovt@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(58,149,1,'teddynielsen@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),(59,108,1,'kaceyn@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(60,108,1,'kaceynielsen@spamalot.info',0,0,0,0,NULL,NULL,NULL,NULL),(61,181,1,'mcreynolds.v.sonny@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(62,183,1,'jwilson@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(63,183,1,'josefawilson@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(64,113,1,'felisham@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(65,180,1,'bprentice@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(66,180,1,'prenticeb@airmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(67,4,1,'mller.kiara58@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(68,4,1,'mller.kiara77@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(69,41,1,'prentice.v.nicole69@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(70,41,1,'prentice.v.nicole39@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(71,184,1,'terry.e.andrew@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(72,72,1,'rzope79@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(73,59,1,'brigettejensen75@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(74,101,1,'daz.santina73@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(75,101,1,'daz.santina@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(76,167,1,'sjensen@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),(77,167,1,'sjensen@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),(78,197,1,'lee.brittney@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(79,171,1,'parker.lawerence@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(80,171,1,'lawerencep@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),(81,16,1,'wagnern37@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(82,16,1,'wagner.nicole@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),(83,37,1,'gonzlez.e.billy@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(84,37,1,'gonzlez.e.billy52@spamalot.net',0,0,0,0,NULL,NULL,NULL,NULL),(85,26,1,'merriewagner12@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(86,119,1,'jones.landon27@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(87,132,1,'dimitrov.carylon35@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(88,177,1,'va.lee@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(89,177,1,'leev@notmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(90,185,1,'sharynpatel@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(91,185,1,'se.patel@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL),(92,159,1,'bo.patel31@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(93,116,1,'barkley.e.daren55@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(94,116,1,'barkleyd76@lol.biz',0,0,0,0,NULL,NULL,NULL,NULL),(95,18,1,'barkley.delana88@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(96,146,1,'barkleyn@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(97,146,1,'barkley.norris33@example.net',0,0,0,0,NULL,NULL,NULL,NULL),(98,10,1,'barkleyw32@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(99,29,1,'mv.jensen-robertson@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(100,29,1,'jensen-robertson.merrie44@example.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(101,28,1,'frobertson29@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(102,28,1,'robertson.felisha66@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(103,17,1,'bernadetter94@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(104,52,1,'barryroberts29@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(105,52,1,'barryr@example.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(106,61,1,'robertsm54@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),(107,93,1,'aroberts6@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(108,27,1,'mcreynolds.magan@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(109,27,1,'maganm@lol.info',0,0,0,0,NULL,NULL,NULL,NULL),(110,88,1,'tobyolsen@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),(111,3,1,'merriewattson3@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(112,82,1,'olsen-wattson.felisha@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(113,82,1,'felishaolsen-wattson@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(114,73,1,'olsen.a.lawerence55@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(115,73,1,'lawerenceo53@testmail.info',0,0,0,0,NULL,NULL,NULL,NULL),(116,60,1,'jensen.s.scarlet@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(117,60,1,'scarletjensen71@mymail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(118,143,1,'olsen-jensenn@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(119,35,1,'josefaolsen-jensen@example.org',1,0,0,0,NULL,NULL,NULL,NULL),(120,35,1,'jolsen-jensen@notmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(121,137,1,'grant.errol@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(122,144,1,'delanareynolds98@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(123,30,1,'grant-reynolds.p.jina10@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(124,30,1,'grant-reynolds.p.jina34@lol.net',0,0,0,0,NULL,NULL,NULL,NULL),(125,64,1,'ivanov.rolando65@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(126,64,1,'rivanov@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL),(127,95,1,'lee.scarlet72@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(128,95,1,'scarletl60@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(129,109,1,'ivanov-lee.billy30@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),(130,100,1,'ivanov-lee.eleonor@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(131,105,1,'kiaraz98@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),(132,105,1,'kzope@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(133,163,1,'delanazope81@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(134,163,1,'delanazope@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL),(135,140,1,'wagnera11@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(136,56,1,'rc.wagner-barkley@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),(137,79,1,'wagner-barkley.l.shauna@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(138,106,1,'samsons@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(139,106,1,'scarletsamson22@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(140,176,1,'wattson.c.billy46@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(141,176,1,'bc.wattson18@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),(142,191,1,'meiwattson@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(143,118,1,'swattson@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(144,118,1,'swattson59@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),(145,9,1,'troyw35@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(146,9,1,'wattson.troy88@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(147,23,1,'prentice.sanford@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(148,62,1,'jonesj@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(149,62,1,'jjones@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(150,40,1,'prentice-jones.lincoln19@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(151,85,1,'prentice-jones.esta72@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(152,85,1,'prentice-jonese18@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(153,39,1,'wilsonj@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(154,142,1,'maxwellwilson@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(155,142,1,'mwilson30@example.com',0,0,0,0,NULL,NULL,NULL,NULL),(156,130,1,'awilson@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(157,130,1,'awilson@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(158,90,1,'delanao80@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(159,90,1,'delanaolsen-roberts@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(160,188,1,'brzczysawr12@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(161,157,1,'molsen97@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),(162,157,1,'olsenm47@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(163,49,1,'reynolds-olsen.esta7@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(164,49,1,'estar64@example.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(165,99,1,'eleonorreynolds-olsen60@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(166,99,1,'eleonorr33@sample.org',0,0,0,0,NULL,NULL,NULL,NULL),(167,48,1,'trumans@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),(168,48,1,'samuels.p.truman@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),(169,193,1,'samuelse@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(170,24,1,'jones.i.bernadette@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(171,145,1,'daz.kacey@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(172,174,1,'elizabethparker-jones-daz@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(173,174,1,'elizabethparker-jones-daz37@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(174,178,3,'service@californianetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),(175,145,2,'kdaz@californianetwork.org',0,0,0,0,NULL,NULL,NULL,NULL),(176,34,3,'contact@globalpartners.org',1,0,0,0,NULL,NULL,NULL,NULL),(177,140,2,'wagnera@globalpartners.org',0,0,0,0,NULL,NULL,NULL,NULL),(178,170,3,'contact@westonadvocacy.org',1,0,0,0,NULL,NULL,NULL,NULL),(179,73,2,'@westonadvocacy.org',0,0,0,0,NULL,NULL,NULL,NULL),(180,172,3,'service@maplesoftware.org',1,0,0,0,NULL,NULL,NULL,NULL),(181,187,2,'samsonm@maplesoftware.org',1,0,0,0,NULL,NULL,NULL,NULL),(182,44,3,'sales@mainepartners.org',1,0,0,0,NULL,NULL,NULL,NULL),(183,15,2,'cnielsen@mainepartners.org',0,0,0,0,NULL,NULL,NULL,NULL),(184,199,3,'service@grantsactionacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),(185,135,2,'aj.zope@grantsactionacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,21,3,'info@wisconsinalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(187,72,2,'zoper@wisconsinalliance.org',0,0,0,0,NULL,NULL,NULL,NULL),(188,7,3,'info@arkansasfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(189,17,2,'robertson.bernadette@arkansasfellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),(190,54,3,'sales@csactioncenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(191,133,2,'patel.jina27@csactioncenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(192,12,3,'feedback@nysportssolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(193,143,2,'norriso20@nysportssolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),(194,32,3,'sales@maplecenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(195,190,2,'eriko@maplecenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(196,71,3,'contact@wolfeborolegalalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(197,93,2,'robertsa@wolfeborolegalalliance.org',0,0,0,0,NULL,NULL,NULL,NULL),(198,147,3,'contact@unitedmusicsolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(199,87,2,'olsen.e.elbert@unitedmusicsolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),(200,114,3,'info@unitednetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),(201,61,2,'mroberts@unitednetwork.org',0,0,0,0,NULL,NULL,NULL,NULL),(202,78,3,'info@maincenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(203,89,2,'scotts@maincenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(204,166,3,'info@pinedevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),(205,106,2,'scarletsamson@pinedevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL),(206,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(207,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(208,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */; UNLOCK TABLES; @@ -447,7 +447,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_entity_financial_trxn` WRITE; /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` DISABLE KEYS */; -INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',32,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',38,15,50.00),(30,'civicrm_financial_item',15,15,50.00),(31,'civicrm_contribution',33,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',25,17,50.00),(34,'civicrm_financial_item',17,17,50.00),(35,'civicrm_contribution',27,18,50.00),(36,'civicrm_financial_item',18,18,50.00),(37,'civicrm_contribution',15,19,50.00),(38,'civicrm_financial_item',19,19,50.00),(39,'civicrm_contribution',39,20,50.00),(40,'civicrm_financial_item',20,20,50.00),(41,'civicrm_contribution',18,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',24,22,1200.00),(44,'civicrm_financial_item',22,22,1200.00),(45,'civicrm_contribution',22,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',21,24,50.00),(48,'civicrm_financial_item',24,24,50.00),(49,'civicrm_contribution',17,25,50.00),(50,'civicrm_financial_item',25,25,50.00),(51,'civicrm_contribution',37,26,50.00),(52,'civicrm_financial_item',26,26,50.00),(53,'civicrm_contribution',43,27,50.00),(54,'civicrm_financial_item',27,27,50.00),(55,'civicrm_contribution',42,28,100.00),(56,'civicrm_financial_item',28,28,100.00),(57,'civicrm_contribution',16,29,100.00),(58,'civicrm_financial_item',29,29,100.00),(59,'civicrm_contribution',28,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',20,31,100.00),(62,'civicrm_financial_item',31,31,100.00),(63,'civicrm_contribution',40,32,100.00),(64,'civicrm_financial_item',32,32,100.00),(65,'civicrm_contribution',35,33,1200.00),(66,'civicrm_financial_item',33,33,1200.00),(67,'civicrm_contribution',41,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',34,35,100.00),(70,'civicrm_financial_item',35,35,100.00),(71,'civicrm_contribution',26,36,100.00),(72,'civicrm_financial_item',36,36,100.00),(73,'civicrm_contribution',31,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',36,38,100.00),(76,'civicrm_financial_item',38,38,100.00),(77,'civicrm_contribution',29,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',30,40,100.00),(80,'civicrm_financial_item',40,40,100.00),(81,'civicrm_contribution',23,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',19,42,50.00),(84,'civicrm_financial_item',42,42,50.00),(85,'civicrm_contribution',14,43,100.00),(86,'civicrm_financial_item',43,43,100.00),(87,'civicrm_contribution',72,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',65,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',89,46,800.00),(92,'civicrm_financial_item',46,46,800.00),(93,'civicrm_contribution',49,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',71,48,800.00),(96,'civicrm_financial_item',48,48,800.00),(97,'civicrm_contribution',47,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',66,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',69,51,800.00),(102,'civicrm_financial_item',51,51,800.00),(103,'civicrm_contribution',51,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',87,53,800.00),(106,'civicrm_financial_item',53,53,800.00),(107,'civicrm_contribution',57,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',77,55,800.00),(110,'civicrm_financial_item',55,55,800.00),(111,'civicrm_contribution',68,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',54,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',59,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',82,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',67,60,50.00),(120,'civicrm_financial_item',60,60,50.00),(121,'civicrm_contribution',45,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',85,62,50.00),(124,'civicrm_financial_item',62,62,50.00),(125,'civicrm_contribution',91,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',46,64,50.00),(128,'civicrm_financial_item',64,64,50.00),(129,'civicrm_contribution',76,65,50.00),(130,'civicrm_financial_item',65,65,50.00),(131,'civicrm_contribution',63,66,50.00),(132,'civicrm_financial_item',66,66,50.00),(133,'civicrm_contribution',61,67,50.00),(134,'civicrm_financial_item',67,67,50.00),(135,'civicrm_contribution',90,68,50.00),(136,'civicrm_financial_item',68,68,50.00),(137,'civicrm_contribution',93,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',74,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',84,71,50.00),(142,'civicrm_financial_item',71,71,50.00),(143,'civicrm_contribution',58,72,50.00),(144,'civicrm_financial_item',72,72,50.00),(145,'civicrm_contribution',64,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',88,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',73,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',79,76,50.00),(152,'civicrm_financial_item',76,76,50.00),(153,'civicrm_contribution',62,77,50.00),(154,'civicrm_financial_item',77,77,50.00),(155,'civicrm_contribution',55,78,800.00),(156,'civicrm_financial_item',78,78,800.00),(157,'civicrm_contribution',86,79,800.00),(158,'civicrm_financial_item',79,79,800.00),(159,'civicrm_contribution',70,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',52,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',83,82,800.00),(164,'civicrm_financial_item',82,82,800.00),(165,'civicrm_contribution',94,83,800.00),(166,'civicrm_financial_item',83,83,800.00),(167,'civicrm_contribution',75,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',53,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',48,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',92,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',81,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',50,89,800.00),(178,'civicrm_financial_item',89,89,800.00),(179,'civicrm_contribution',56,90,800.00),(180,'civicrm_financial_item',90,90,800.00),(181,'civicrm_contribution',80,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',78,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',60,93,50.00),(186,'civicrm_financial_item',93,93,50.00); +INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',14,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',15,15,100.00),(30,'civicrm_financial_item',15,15,100.00),(31,'civicrm_contribution',16,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',17,17,100.00),(34,'civicrm_financial_item',17,17,100.00),(35,'civicrm_contribution',18,18,100.00),(36,'civicrm_financial_item',18,18,100.00),(37,'civicrm_contribution',19,19,100.00),(38,'civicrm_financial_item',19,19,100.00),(39,'civicrm_contribution',20,20,100.00),(40,'civicrm_financial_item',20,20,100.00),(41,'civicrm_contribution',21,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',22,22,100.00),(44,'civicrm_financial_item',22,22,100.00),(45,'civicrm_contribution',23,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',24,24,100.00),(48,'civicrm_financial_item',24,24,100.00),(49,'civicrm_contribution',25,25,100.00),(50,'civicrm_financial_item',25,25,100.00),(51,'civicrm_contribution',26,26,100.00),(52,'civicrm_financial_item',26,26,100.00),(53,'civicrm_contribution',27,27,100.00),(54,'civicrm_financial_item',27,27,100.00),(55,'civicrm_contribution',28,28,50.00),(56,'civicrm_financial_item',28,28,50.00),(57,'civicrm_contribution',29,29,50.00),(58,'civicrm_financial_item',29,29,50.00),(59,'civicrm_contribution',30,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',31,31,50.00),(62,'civicrm_financial_item',31,31,50.00),(63,'civicrm_contribution',32,32,50.00),(64,'civicrm_financial_item',32,32,50.00),(65,'civicrm_contribution',33,33,50.00),(66,'civicrm_financial_item',33,33,50.00),(67,'civicrm_contribution',34,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',35,35,50.00),(70,'civicrm_financial_item',35,35,50.00),(71,'civicrm_contribution',36,36,50.00),(72,'civicrm_financial_item',36,36,50.00),(73,'civicrm_contribution',37,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',38,38,50.00),(76,'civicrm_financial_item',38,38,50.00),(77,'civicrm_contribution',39,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',40,40,50.00),(80,'civicrm_financial_item',40,40,50.00),(81,'civicrm_contribution',41,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',42,42,1200.00),(84,'civicrm_financial_item',42,42,1200.00),(85,'civicrm_contribution',43,43,1200.00),(86,'civicrm_financial_item',43,43,1200.00),(87,'civicrm_contribution',88,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',64,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',75,46,50.00),(92,'civicrm_financial_item',46,46,50.00),(93,'civicrm_contribution',81,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',69,48,50.00),(96,'civicrm_financial_item',48,48,50.00),(97,'civicrm_contribution',83,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',71,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',59,51,50.00),(102,'civicrm_financial_item',51,51,50.00),(103,'civicrm_contribution',93,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',63,53,50.00),(106,'civicrm_financial_item',53,53,50.00),(107,'civicrm_contribution',62,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',48,55,50.00),(110,'civicrm_financial_item',55,55,50.00),(111,'civicrm_contribution',55,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',50,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',82,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',92,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',84,60,800.00),(120,'civicrm_financial_item',60,60,800.00),(121,'civicrm_contribution',46,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',45,62,800.00),(124,'civicrm_financial_item',62,62,800.00),(125,'civicrm_contribution',78,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',57,64,800.00),(128,'civicrm_financial_item',64,64,800.00),(129,'civicrm_contribution',73,65,800.00),(130,'civicrm_financial_item',65,65,800.00),(131,'civicrm_contribution',65,66,800.00),(132,'civicrm_financial_item',66,66,800.00),(133,'civicrm_contribution',53,67,800.00),(134,'civicrm_financial_item',67,67,800.00),(135,'civicrm_contribution',79,68,800.00),(136,'civicrm_financial_item',68,68,800.00),(137,'civicrm_contribution',80,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',56,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',70,71,800.00),(142,'civicrm_financial_item',71,71,800.00),(143,'civicrm_contribution',51,72,800.00),(144,'civicrm_financial_item',72,72,800.00),(145,'civicrm_contribution',87,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',86,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',90,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',54,76,800.00),(152,'civicrm_financial_item',76,76,800.00),(153,'civicrm_contribution',49,77,800.00),(154,'civicrm_financial_item',77,77,800.00),(155,'civicrm_contribution',74,78,50.00),(156,'civicrm_financial_item',78,78,50.00),(157,'civicrm_contribution',68,79,50.00),(158,'civicrm_financial_item',79,79,50.00),(159,'civicrm_contribution',76,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',72,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',58,82,50.00),(164,'civicrm_financial_item',82,82,50.00),(165,'civicrm_contribution',94,83,50.00),(166,'civicrm_financial_item',83,83,50.00),(167,'civicrm_contribution',89,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',61,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',52,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',85,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',66,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',60,89,50.00),(178,'civicrm_financial_item',89,89,50.00),(179,'civicrm_contribution',77,90,50.00),(180,'civicrm_financial_item',90,90,50.00),(181,'civicrm_contribution',67,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',91,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',47,93,50.00),(186,'civicrm_financial_item',93,93,50.00); /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -457,7 +457,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_entity_tag` WRITE; /*!40000 ALTER TABLE `civicrm_entity_tag` DISABLE KEYS */; -INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES (44,'civicrm_contact',2,4),(61,'civicrm_contact',4,4),(86,'civicrm_contact',6,4),(87,'civicrm_contact',6,5),(92,'civicrm_contact',8,5),(37,'civicrm_contact',9,4),(38,'civicrm_contact',9,5),(5,'civicrm_contact',10,1),(43,'civicrm_contact',14,4),(83,'civicrm_contact',15,4),(84,'civicrm_contact',15,5),(54,'civicrm_contact',18,4),(55,'civicrm_contact',18,5),(68,'civicrm_contact',19,5),(69,'civicrm_contact',21,4),(70,'civicrm_contact',21,5),(85,'civicrm_contact',22,4),(16,'civicrm_contact',23,4),(59,'civicrm_contact',24,4),(60,'civicrm_contact',24,5),(104,'civicrm_contact',27,4),(105,'civicrm_contact',27,5),(62,'civicrm_contact',30,4),(63,'civicrm_contact',30,5),(42,'civicrm_contact',31,5),(9,'civicrm_contact',34,3),(106,'civicrm_contact',35,5),(14,'civicrm_contact',38,5),(2,'civicrm_contact',39,3),(95,'civicrm_contact',44,5),(64,'civicrm_contact',45,4),(65,'civicrm_contact',45,5),(107,'civicrm_contact',47,5),(17,'civicrm_contact',52,5),(52,'civicrm_contact',53,5),(31,'civicrm_contact',54,4),(32,'civicrm_contact',54,5),(56,'civicrm_contact',56,5),(45,'civicrm_contact',59,4),(23,'civicrm_contact',60,4),(24,'civicrm_contact',60,5),(27,'civicrm_contact',62,4),(117,'civicrm_contact',65,5),(12,'civicrm_contact',67,4),(99,'civicrm_contact',73,4),(96,'civicrm_contact',78,4),(97,'civicrm_contact',78,5),(75,'civicrm_contact',81,4),(76,'civicrm_contact',81,5),(114,'civicrm_contact',86,5),(66,'civicrm_contact',87,4),(67,'civicrm_contact',87,5),(18,'civicrm_contact',94,4),(29,'civicrm_contact',95,4),(6,'civicrm_contact',100,3),(110,'civicrm_contact',102,4),(111,'civicrm_contact',102,5),(10,'civicrm_contact',103,3),(21,'civicrm_contact',109,4),(30,'civicrm_contact',110,5),(39,'civicrm_contact',111,4),(40,'civicrm_contact',111,5),(28,'civicrm_contact',113,5),(77,'civicrm_contact',114,4),(78,'civicrm_contact',114,5),(79,'civicrm_contact',120,4),(80,'civicrm_contact',120,5),(109,'civicrm_contact',122,4),(82,'civicrm_contact',124,5),(19,'civicrm_contact',125,4),(25,'civicrm_contact',127,5),(50,'civicrm_contact',128,4),(46,'civicrm_contact',129,4),(47,'civicrm_contact',129,5),(113,'civicrm_contact',130,4),(108,'civicrm_contact',134,5),(36,'civicrm_contact',136,5),(93,'civicrm_contact',138,4),(94,'civicrm_contact',138,5),(81,'civicrm_contact',139,4),(51,'civicrm_contact',143,4),(11,'civicrm_contact',146,4),(13,'civicrm_contact',148,5),(3,'civicrm_contact',151,2),(33,'civicrm_contact',152,4),(15,'civicrm_contact',155,5),(1,'civicrm_contact',162,3),(100,'civicrm_contact',163,5),(98,'civicrm_contact',164,5),(115,'civicrm_contact',165,4),(116,'civicrm_contact',165,5),(57,'civicrm_contact',168,4),(58,'civicrm_contact',168,5),(20,'civicrm_contact',173,4),(90,'civicrm_contact',176,5),(73,'civicrm_contact',177,4),(74,'civicrm_contact',177,5),(8,'civicrm_contact',178,1),(112,'civicrm_contact',179,5),(88,'civicrm_contact',180,4),(89,'civicrm_contact',180,5),(91,'civicrm_contact',184,5),(48,'civicrm_contact',186,4),(49,'civicrm_contact',186,5),(35,'civicrm_contact',187,4),(34,'civicrm_contact',188,5),(26,'civicrm_contact',191,5),(41,'civicrm_contact',193,4),(22,'civicrm_contact',194,5),(7,'civicrm_contact',195,1),(101,'civicrm_contact',196,5),(71,'civicrm_contact',198,4),(72,'civicrm_contact',198,5),(4,'civicrm_contact',199,2),(53,'civicrm_contact',200,4),(102,'civicrm_contact',201,4),(103,'civicrm_contact',201,5); +INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES (48,'civicrm_contact',4,5),(26,'civicrm_contact',15,4),(27,'civicrm_contact',15,5),(57,'civicrm_contact',16,5),(4,'civicrm_contact',21,2),(12,'civicrm_contact',22,4),(98,'civicrm_contact',23,5),(114,'civicrm_contact',24,4),(115,'civicrm_contact',24,5),(62,'civicrm_contact',26,5),(78,'civicrm_contact',27,4),(79,'civicrm_contact',27,5),(73,'civicrm_contact',28,5),(36,'civicrm_contact',31,5),(7,'civicrm_contact',32,3),(76,'civicrm_contact',36,4),(77,'civicrm_contact',36,5),(30,'civicrm_contact',38,5),(100,'civicrm_contact',39,4),(101,'civicrm_contact',39,5),(99,'civicrm_contact',40,5),(32,'civicrm_contact',42,4),(33,'civicrm_contact',42,5),(3,'civicrm_contact',44,1),(71,'civicrm_contact',45,4),(72,'civicrm_contact',45,5),(108,'civicrm_contact',46,5),(109,'civicrm_contact',48,4),(110,'civicrm_contact',48,5),(107,'civicrm_contact',49,5),(23,'civicrm_contact',51,4),(24,'civicrm_contact',51,5),(74,'civicrm_contact',52,5),(6,'civicrm_contact',54,1),(93,'civicrm_contact',56,5),(75,'civicrm_contact',61,5),(38,'civicrm_contact',63,4),(39,'civicrm_contact',63,5),(87,'civicrm_contact',64,5),(17,'civicrm_contact',66,4),(18,'civicrm_contact',66,5),(25,'civicrm_contact',70,4),(8,'civicrm_contact',71,1),(82,'civicrm_contact',73,5),(34,'civicrm_contact',74,5),(10,'civicrm_contact',78,2),(81,'civicrm_contact',82,5),(29,'civicrm_contact',83,5),(21,'civicrm_contact',84,4),(22,'civicrm_contact',84,5),(5,'civicrm_contact',86,2),(80,'civicrm_contact',88,5),(95,'civicrm_contact',89,4),(104,'civicrm_contact',90,4),(105,'civicrm_contact',90,5),(40,'civicrm_contact',94,5),(55,'civicrm_contact',101,4),(89,'civicrm_contact',105,4),(90,'civicrm_contact',105,5),(43,'civicrm_contact',108,4),(44,'civicrm_contact',108,5),(88,'civicrm_contact',109,5),(54,'civicrm_contact',112,4),(47,'civicrm_contact',113,4),(69,'civicrm_contact',116,5),(52,'civicrm_contact',117,4),(53,'civicrm_contact',117,5),(97,'civicrm_contact',118,5),(63,'civicrm_contact',119,4),(103,'civicrm_contact',122,5),(11,'civicrm_contact',124,4),(60,'civicrm_contact',126,4),(61,'civicrm_contact',126,5),(112,'civicrm_contact',129,4),(113,'civicrm_contact',129,5),(31,'civicrm_contact',131,4),(66,'civicrm_contact',136,4),(84,'civicrm_contact',137,5),(20,'civicrm_contact',139,4),(92,'civicrm_contact',140,4),(41,'civicrm_contact',141,4),(42,'civicrm_contact',141,5),(102,'civicrm_contact',142,5),(83,'civicrm_contact',143,4),(70,'civicrm_contact',146,4),(9,'civicrm_contact',147,3),(85,'civicrm_contact',150,4),(86,'civicrm_contact',150,5),(19,'civicrm_contact',151,4),(49,'civicrm_contact',152,5),(111,'civicrm_contact',155,4),(15,'civicrm_contact',156,4),(16,'civicrm_contact',156,5),(67,'civicrm_contact',159,4),(68,'civicrm_contact',159,5),(14,'civicrm_contact',160,5),(64,'civicrm_contact',162,4),(65,'civicrm_contact',162,5),(13,'civicrm_contact',169,4),(2,'civicrm_contact',170,3),(91,'civicrm_contact',173,4),(116,'civicrm_contact',174,4),(117,'civicrm_contact',174,5),(96,'civicrm_contact',176,4),(1,'civicrm_contact',178,3),(28,'civicrm_contact',182,5),(45,'civicrm_contact',183,4),(46,'civicrm_contact',183,5),(94,'civicrm_contact',187,5),(106,'civicrm_contact',188,5),(58,'civicrm_contact',189,4),(59,'civicrm_contact',189,5),(35,'civicrm_contact',190,5),(37,'civicrm_contact',196,4),(56,'civicrm_contact',197,4),(50,'civicrm_contact',198,4),(51,'civicrm_contact',198,5); /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -467,7 +467,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_event` WRITE; /*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */; -INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2018-11-21 17:00:00','2018-11-23 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2018-05-20 12:00:00','2018-05-20 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,NULL,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2018-12-21 07:00:00','2018-12-24 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,NULL,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); +INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2019-02-23 17:00:00','2019-02-25 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2018-08-22 12:00:00','2018-08-22 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,NULL,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2019-03-23 07:00:00','2019-03-26 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,NULL,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); /*!40000 ALTER TABLE `civicrm_event` ENABLE KEYS */; UNLOCK TABLES; @@ -523,7 +523,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_item` WRITE; /*!40000 ALTER TABLE `civicrm_financial_item` DISABLE KEYS */; -INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES (1,'2018-05-21 20:27:23','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2018-05-21 20:27:23','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2018-05-21 20:27:23','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2018-05-21 20:27:23','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2018-05-21 20:27:23','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2018-05-21 20:27:23','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2018-05-21 20:27:23','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2018-05-21 20:27:23','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2018-05-21 20:27:23','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2018-05-21 20:27:23','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2018-05-21 20:27:23','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2018-05-21 20:27:23','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2018-05-21 20:27:23','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2018-05-21 20:27:23','2018-05-22 01:57:23',8,'General',100.00,'USD',2,1,'civicrm_line_item',23),(15,'2018-05-21 20:27:23','2018-05-22 01:57:23',18,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(16,'2018-05-21 20:27:23','2018-05-22 01:57:23',22,'General',100.00,'USD',2,1,'civicrm_line_item',24),(17,'2018-05-21 20:27:23','2018-05-22 01:57:23',45,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(18,'2018-05-21 20:27:23','2018-05-22 01:57:23',49,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(19,'2018-05-21 20:27:23','2018-05-22 01:57:23',62,'Student',50.00,'USD',2,1,'civicrm_line_item',29),(20,'2018-05-21 20:27:23','2018-05-22 01:57:23',63,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(21,'2018-05-21 20:27:23','2018-05-22 01:57:23',69,'General',100.00,'USD',2,1,'civicrm_line_item',18),(22,'2018-05-21 20:27:23','2018-05-22 01:57:23',78,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(23,'2018-05-21 20:27:23','2018-05-22 01:57:23',87,'General',100.00,'USD',2,1,'civicrm_line_item',20),(24,'2018-05-21 20:27:23','2018-05-22 01:57:23',102,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(25,'2018-05-21 20:27:23','2018-05-22 01:57:23',113,'Student',50.00,'USD',2,1,'civicrm_line_item',30),(26,'2018-05-21 20:27:23','2018-05-22 01:57:23',118,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(27,'2018-05-21 20:27:23','2018-05-22 01:57:23',123,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(28,'2018-05-21 20:27:23','2018-05-22 01:57:23',129,'General',100.00,'USD',2,1,'civicrm_line_item',28),(29,'2018-05-21 20:27:23','2018-05-22 01:57:23',137,'General',100.00,'USD',2,1,'civicrm_line_item',17),(30,'2018-05-21 20:27:23','2018-05-22 01:57:23',140,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(31,'2018-05-21 20:27:23','2018-05-22 01:57:23',141,'General',100.00,'USD',2,1,'civicrm_line_item',19),(32,'2018-05-21 20:27:23','2018-05-22 01:57:23',147,'General',100.00,'USD',2,1,'civicrm_line_item',27),(33,'2018-05-21 20:27:23','2018-05-22 01:57:23',149,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(34,'2018-05-21 20:27:23','2018-05-22 01:57:23',150,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(35,'2018-05-21 20:27:23','2018-05-22 01:57:23',153,'General',100.00,'USD',2,1,'civicrm_line_item',25),(36,'2018-05-21 20:27:23','2018-05-22 01:57:23',156,'General',100.00,'USD',2,1,'civicrm_line_item',21),(37,'2018-05-21 20:27:23','2018-05-22 01:57:23',158,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(38,'2018-05-21 20:27:23','2018-05-22 01:57:23',161,'General',100.00,'USD',2,1,'civicrm_line_item',26),(39,'2018-05-21 20:27:23','2018-05-22 01:57:23',163,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(40,'2018-05-21 20:27:23','2018-05-22 01:57:23',164,'General',100.00,'USD',2,1,'civicrm_line_item',22),(41,'2018-05-21 20:27:23','2018-05-22 01:57:23',166,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(42,'2018-05-21 20:27:23','2018-05-22 01:57:23',181,'Student',50.00,'USD',2,1,'civicrm_line_item',31),(43,'2018-05-21 20:27:23','2018-05-22 01:57:23',200,'General',100.00,'USD',2,1,'civicrm_line_item',16),(44,'2018-05-21 20:27:23','2018-05-22 01:57:23',112,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(45,'2018-05-21 20:27:23','2018-05-22 01:57:23',96,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2018-05-21 20:27:23','2018-05-22 01:57:23',177,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(47,'2018-05-21 20:27:23','2018-05-22 01:57:23',19,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(48,'2018-05-21 20:27:23','2018-05-22 01:57:23',110,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(49,'2018-05-21 20:27:23','2018-05-22 01:57:23',7,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(50,'2018-05-21 20:27:23','2018-05-22 01:57:23',101,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(51,'2018-05-21 20:27:23','2018-05-22 01:57:23',108,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(52,'2018-05-21 20:27:23','2018-05-22 01:57:23',25,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(53,'2018-05-21 20:27:23','2018-05-22 01:57:23',164,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(54,'2018-05-21 20:27:23','2018-05-22 01:57:23',51,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(55,'2018-05-21 20:27:23','2018-05-22 01:57:23',124,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(56,'2018-05-21 20:27:23','2018-05-22 01:57:23',106,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(57,'2018-05-21 20:27:23','2018-05-22 01:57:23',41,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(58,'2018-05-21 20:27:23','2018-05-22 01:57:23',63,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(59,'2018-05-21 20:27:23','2018-05-22 01:57:23',137,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(60,'2018-05-21 20:27:23','2018-05-22 01:57:23',103,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(61,'2018-05-21 20:27:23','2018-05-22 01:57:23',2,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(62,'2018-05-21 20:27:23','2018-05-22 01:57:23',155,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(63,'2018-05-21 20:27:23','2018-05-22 01:57:23',186,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(64,'2018-05-21 20:27:23','2018-05-22 01:57:23',4,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(65,'2018-05-21 20:27:23','2018-05-22 01:57:23',121,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(66,'2018-05-21 20:27:23','2018-05-22 01:57:23',86,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(67,'2018-05-21 20:27:23','2018-05-22 01:57:23',73,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(68,'2018-05-21 20:27:23','2018-05-22 01:57:23',182,'Single',50.00,'USD',4,1,'civicrm_line_item',80),(69,'2018-05-21 20:27:23','2018-05-22 01:57:23',190,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(70,'2018-05-21 20:27:23','2018-05-22 01:57:23',114,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(71,'2018-05-21 20:27:23','2018-05-22 01:57:23',153,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(72,'2018-05-21 20:27:23','2018-05-22 01:57:23',61,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(73,'2018-05-21 20:27:23','2018-05-22 01:57:23',89,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(74,'2018-05-21 20:27:23','2018-05-22 01:57:23',166,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(75,'2018-05-21 20:27:23','2018-05-22 01:57:23',113,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(76,'2018-05-21 20:27:23','2018-05-22 01:57:23',129,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(77,'2018-05-21 20:27:23','2018-05-22 01:57:23',85,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(78,'2018-05-21 20:27:23','2018-05-22 01:57:23',44,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(79,'2018-05-21 20:27:23','2018-05-22 01:57:23',162,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(80,'2018-05-21 20:27:23','2018-05-22 01:57:23',109,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(81,'2018-05-21 20:27:23','2018-05-22 01:57:23',31,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(82,'2018-05-21 20:27:23','2018-05-22 01:57:23',151,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(83,'2018-05-21 20:27:23','2018-05-22 01:57:23',199,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(84,'2018-05-21 20:27:23','2018-05-22 01:57:23',115,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(85,'2018-05-21 20:27:23','2018-05-22 01:57:23',35,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(86,'2018-05-21 20:27:23','2018-05-22 01:57:23',9,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(87,'2018-05-21 20:27:23','2018-05-22 01:57:23',188,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2018-05-21 20:27:23','2018-05-22 01:57:23',133,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(89,'2018-05-21 20:27:23','2018-05-22 01:57:23',20,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(90,'2018-05-21 20:27:23','2018-05-22 01:57:23',48,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(91,'2018-05-21 20:27:23','2018-05-22 01:57:23',131,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2018-05-21 20:27:23','2018-05-22 01:57:23',128,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(93,'2018-05-21 20:27:23','2018-05-22 01:57:23',66,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96); +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,'2018-08-22 22:01:48','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2018-08-22 22:01:48','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2018-08-22 22:01:48','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2018-08-22 22:01:48','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2018-08-22 22:01:48','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2018-08-22 22:01:48','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2018-08-22 22:01:48','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2018-08-22 22:01:48','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2018-08-22 22:01:48','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2018-08-22 22:01:48','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2018-08-22 22:01:48','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2018-08-22 22:01:48','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2018-08-22 22:01:48','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2018-08-22 22:01:48','2018-08-23 08:01:48',121,'General',100.00,'USD',2,1,'civicrm_line_item',16),(15,'2018-08-22 22:01:48','2018-08-23 08:01:48',175,'General',100.00,'USD',2,1,'civicrm_line_item',17),(16,'2018-08-22 22:01:48','2018-08-23 08:01:48',106,'General',100.00,'USD',2,1,'civicrm_line_item',18),(17,'2018-08-22 22:01:48','2018-08-23 08:01:48',133,'General',100.00,'USD',2,1,'civicrm_line_item',19),(18,'2018-08-22 22:01:48','2018-08-23 08:01:48',118,'General',100.00,'USD',2,1,'civicrm_line_item',20),(19,'2018-08-22 22:01:48','2018-08-23 08:01:48',176,'General',100.00,'USD',2,1,'civicrm_line_item',21),(20,'2018-08-22 22:01:48','2018-08-23 08:01:48',3,'General',100.00,'USD',2,1,'civicrm_line_item',22),(21,'2018-08-22 22:01:48','2018-08-23 08:01:48',6,'General',100.00,'USD',2,1,'civicrm_line_item',23),(22,'2018-08-22 22:01:48','2018-08-23 08:01:48',42,'General',100.00,'USD',2,1,'civicrm_line_item',24),(23,'2018-08-22 22:01:48','2018-08-23 08:01:48',77,'General',100.00,'USD',2,1,'civicrm_line_item',25),(24,'2018-08-22 22:01:48','2018-08-23 08:01:48',144,'General',100.00,'USD',2,1,'civicrm_line_item',26),(25,'2018-08-22 22:01:48','2018-08-23 08:01:48',45,'General',100.00,'USD',2,1,'civicrm_line_item',27),(26,'2018-08-22 22:01:48','2018-08-23 08:01:48',165,'General',100.00,'USD',2,1,'civicrm_line_item',28),(27,'2018-08-22 22:01:48','2018-08-23 08:01:48',38,'General',100.00,'USD',2,1,'civicrm_line_item',29),(28,'2018-08-22 22:01:48','2018-08-23 08:01:48',191,'Student',50.00,'USD',2,1,'civicrm_line_item',30),(29,'2018-08-22 22:01:48','2018-08-23 08:01:48',51,'Student',50.00,'USD',2,1,'civicrm_line_item',31),(30,'2018-08-22 22:01:48','2018-08-23 08:01:48',41,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(31,'2018-08-22 22:01:48','2018-08-23 08:01:48',159,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(32,'2018-08-22 22:01:48','2018-08-23 08:01:48',90,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(33,'2018-08-22 22:01:48','2018-08-23 08:01:48',56,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(34,'2018-08-22 22:01:48','2018-08-23 08:01:48',25,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(35,'2018-08-22 22:01:48','2018-08-23 08:01:48',197,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(36,'2018-08-22 22:01:48','2018-08-23 08:01:48',185,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(37,'2018-08-22 22:01:48','2018-08-23 08:01:48',180,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(38,'2018-08-22 22:01:48','2018-08-23 08:01:48',101,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(39,'2018-08-22 22:01:48','2018-08-23 08:01:48',138,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(40,'2018-08-22 22:01:48','2018-08-23 08:01:48',145,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(41,'2018-08-22 22:01:48','2018-08-23 08:01:48',177,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(42,'2018-08-22 22:01:48','2018-08-23 08:01:48',143,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(43,'2018-08-22 22:01:48','2018-08-23 08:01:48',61,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(44,'2018-08-22 22:01:48','2018-08-23 08:01:48',174,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(45,'2018-08-22 22:01:48','2018-08-23 08:01:48',102,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2018-08-22 22:01:48','2018-08-23 08:01:48',137,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(47,'2018-08-22 22:01:48','2018-08-23 08:01:48',146,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(48,'2018-08-22 22:01:48','2018-08-23 08:01:48',111,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(49,'2018-08-22 22:01:48','2018-08-23 08:01:48',154,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(50,'2018-08-22 22:01:48','2018-08-23 08:01:48',119,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(51,'2018-08-22 22:01:48','2018-08-23 08:01:48',74,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(52,'2018-08-22 22:01:48','2018-08-23 08:01:48',191,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(53,'2018-08-22 22:01:48','2018-08-23 08:01:48',91,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(54,'2018-08-22 22:01:48','2018-08-23 08:01:48',90,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(55,'2018-08-22 22:01:48','2018-08-23 08:01:48',17,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(56,'2018-08-22 22:01:48','2018-08-23 08:01:48',49,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(57,'2018-08-22 22:01:48','2018-08-23 08:01:48',35,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(58,'2018-08-22 22:01:48','2018-08-23 08:01:48',147,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(59,'2018-08-22 22:01:48','2018-08-23 08:01:48',190,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96),(60,'2018-08-22 22:01:48','2018-08-23 08:01:48',161,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(61,'2018-08-22 22:01:48','2018-08-23 08:01:48',6,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(62,'2018-08-22 22:01:48','2018-08-23 08:01:48',2,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(63,'2018-08-22 22:01:48','2018-08-23 08:01:48',142,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(64,'2018-08-22 22:01:48','2018-08-23 08:01:48',60,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(65,'2018-08-22 22:01:48','2018-08-23 08:01:48',129,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(66,'2018-08-22 22:01:48','2018-08-23 08:01:48',105,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(67,'2018-08-22 22:01:48','2018-08-23 08:01:48',41,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(68,'2018-08-22 22:01:48','2018-08-23 08:01:48',144,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(69,'2018-08-22 22:01:48','2018-08-23 08:01:48',145,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(70,'2018-08-22 22:01:48','2018-08-23 08:01:48',50,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(71,'2018-08-22 22:01:48','2018-08-23 08:01:48',114,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(72,'2018-08-22 22:01:48','2018-08-23 08:01:48',36,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(73,'2018-08-22 22:01:48','2018-08-23 08:01:48',170,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(74,'2018-08-22 22:01:48','2018-08-23 08:01:48',167,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(75,'2018-08-22 22:01:48','2018-08-23 08:01:48',182,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(76,'2018-08-22 22:01:48','2018-08-23 08:01:48',45,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(77,'2018-08-22 22:01:48','2018-08-23 08:01:48',33,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(78,'2018-08-22 22:01:48','2018-08-23 08:01:48',136,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(79,'2018-08-22 22:01:48','2018-08-23 08:01:48',110,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(80,'2018-08-22 22:01:48','2018-08-23 08:01:48',140,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(81,'2018-08-22 22:01:48','2018-08-23 08:01:48',127,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(82,'2018-08-22 22:01:48','2018-08-23 08:01:48',69,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(83,'2018-08-22 22:01:48','2018-08-23 08:01:48',200,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(84,'2018-08-22 22:01:48','2018-08-23 08:01:48',180,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(85,'2018-08-22 22:01:48','2018-08-23 08:01:48',86,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(86,'2018-08-22 22:01:48','2018-08-23 08:01:48',37,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(87,'2018-08-22 22:01:48','2018-08-23 08:01:48',165,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2018-08-22 22:01:48','2018-08-23 08:01:48',108,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(89,'2018-08-22 22:01:48','2018-08-23 08:01:48',75,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(90,'2018-08-22 22:01:48','2018-08-23 08:01:48',141,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(91,'2018-08-22 22:01:48','2018-08-23 08:01:48',109,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2018-08-22 22:01:48','2018-08-23 08:01:48',183,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(93,'2018-08-22 22:01:48','2018-08-23 08:01:48',10,'Single',50.00,'USD',4,1,'civicrm_line_item',80); /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */; UNLOCK TABLES; @@ -533,7 +533,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_financial_trxn` WRITE; /*!40000 ALTER TABLE `civicrm_financial_trxn` DISABLE KEYS */; -INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`) VALUES (1,NULL,1,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL),(2,NULL,1,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL),(3,NULL,1,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL),(4,NULL,1,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL),(5,NULL,1,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL),(6,NULL,1,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL),(7,NULL,1,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL),(8,NULL,1,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL),(9,NULL,1,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL),(10,NULL,1,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL),(11,NULL,1,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL),(12,NULL,1,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL),(13,NULL,1,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL),(14,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(15,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(16,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(17,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(18,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(19,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(20,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(21,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(22,NULL,1,'2018-05-22 01:57:23',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(23,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(24,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(25,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(26,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(27,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(28,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(29,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(30,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(31,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(32,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(33,NULL,1,'2018-05-22 01:57:23',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(34,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(35,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(36,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(37,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(38,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(39,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(40,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(41,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(42,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(43,NULL,1,'2018-05-22 01:57:23',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(44,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(45,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(46,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(47,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(48,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(49,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(50,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(51,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(52,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(53,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(54,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(55,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(56,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(57,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(58,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(59,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(60,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(61,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(62,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(63,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(64,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(65,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(66,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(67,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(68,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(69,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(70,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(71,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(72,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(73,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(74,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(75,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(76,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(77,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(78,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(79,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(80,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(81,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(82,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(83,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(84,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(85,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(86,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(87,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(88,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(89,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(90,NULL,1,'2018-05-22 01:57:23',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(91,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(92,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(93,NULL,1,'2018-05-22 01:57:23',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL); +INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`) VALUES (1,NULL,1,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL),(2,NULL,1,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL),(3,NULL,1,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL),(4,NULL,1,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL),(5,NULL,1,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL),(6,NULL,1,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL),(7,NULL,1,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL),(8,NULL,1,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL),(9,NULL,1,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL),(10,NULL,1,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL),(11,NULL,1,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL),(12,NULL,1,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL),(13,NULL,1,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL),(14,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(15,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(16,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(17,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(18,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(19,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(20,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(21,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(22,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(23,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(24,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(25,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(26,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(27,NULL,1,'2018-08-23 08:01:48',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(28,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(29,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(30,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(31,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(32,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(33,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(34,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(35,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(36,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(37,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(38,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(39,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(40,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(41,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(42,NULL,1,'2018-08-23 08:01:48',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(43,NULL,1,'2018-08-23 08:01:48',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(44,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(45,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(46,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(47,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(48,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(49,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(50,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(51,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(52,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(53,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(54,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(55,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(56,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(57,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(58,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(59,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(60,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(61,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(62,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(63,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(64,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(65,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(66,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(67,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(68,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(69,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(70,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(71,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(72,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(73,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(74,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(75,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(76,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(77,NULL,1,'2018-08-23 08:01:48',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(78,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(79,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(80,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(81,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(82,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(83,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(84,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(85,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(86,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(87,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(88,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(89,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(90,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(91,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(92,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(93,NULL,1,'2018-08-23 08:01:48',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -572,7 +572,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_group_contact` WRITE; /*!40000 ALTER TABLE `civicrm_group_contact` DISABLE KEYS */; -INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES (1,2,146,'Added',NULL,NULL),(2,2,96,'Added',NULL,NULL),(3,2,67,'Added',NULL,NULL),(4,2,57,'Added',NULL,NULL),(5,2,148,'Added',NULL,NULL),(6,2,108,'Added',NULL,NULL),(7,2,38,'Added',NULL,NULL),(8,2,161,'Added',NULL,NULL),(9,2,155,'Added',NULL,NULL),(10,2,154,'Added',NULL,NULL),(11,2,23,'Added',NULL,NULL),(12,2,92,'Added',NULL,NULL),(13,2,52,'Added',NULL,NULL),(14,2,107,'Added',NULL,NULL),(15,2,94,'Added',NULL,NULL),(16,2,3,'Added',NULL,NULL),(17,2,125,'Added',NULL,NULL),(18,2,115,'Added',NULL,NULL),(19,2,173,'Added',NULL,NULL),(20,2,80,'Added',NULL,NULL),(21,2,109,'Added',NULL,NULL),(22,2,69,'Added',NULL,NULL),(23,2,194,'Added',NULL,NULL),(24,2,181,'Added',NULL,NULL),(25,2,60,'Added',NULL,NULL),(26,2,133,'Added',NULL,NULL),(27,2,127,'Added',NULL,NULL),(28,2,190,'Added',NULL,NULL),(29,2,191,'Added',NULL,NULL),(30,2,121,'Added',NULL,NULL),(31,2,62,'Added',NULL,NULL),(32,2,160,'Added',NULL,NULL),(33,2,113,'Added',NULL,NULL),(34,2,13,'Added',NULL,NULL),(35,2,95,'Added',NULL,NULL),(36,2,71,'Added',NULL,NULL),(37,2,110,'Added',NULL,NULL),(38,2,43,'Added',NULL,NULL),(39,2,54,'Added',NULL,NULL),(40,2,17,'Added',NULL,NULL),(41,2,152,'Added',NULL,NULL),(42,2,149,'Added',NULL,NULL),(43,2,188,'Added',NULL,NULL),(44,2,36,'Added',NULL,NULL),(45,2,187,'Added',NULL,NULL),(46,2,167,'Added',NULL,NULL),(47,2,136,'Added',NULL,NULL),(48,2,150,'Added',NULL,NULL),(49,2,9,'Added',NULL,NULL),(50,2,63,'Added',NULL,NULL),(51,2,111,'Added',NULL,NULL),(52,2,131,'Added',NULL,NULL),(53,2,193,'Added',NULL,NULL),(54,2,5,'Added',NULL,NULL),(55,2,31,'Added',NULL,NULL),(56,2,46,'Added',NULL,NULL),(57,2,14,'Added',NULL,NULL),(58,2,117,'Added',NULL,NULL),(59,2,2,'Added',NULL,NULL),(60,2,66,'Added',NULL,NULL),(61,3,59,'Added',NULL,NULL),(62,3,28,'Added',NULL,NULL),(63,3,129,'Added',NULL,NULL),(64,3,171,'Added',NULL,NULL),(65,3,186,'Added',NULL,NULL),(66,3,91,'Added',NULL,NULL),(67,3,128,'Added',NULL,NULL),(68,3,126,'Added',NULL,NULL),(69,3,143,'Added',NULL,NULL),(70,3,98,'Added',NULL,NULL),(71,3,53,'Added',NULL,NULL),(72,3,170,'Added',NULL,NULL),(73,3,200,'Added',NULL,NULL),(74,3,93,'Added',NULL,NULL),(75,3,18,'Added',NULL,NULL),(76,4,146,'Added',NULL,NULL),(77,4,161,'Added',NULL,NULL),(78,4,94,'Added',NULL,NULL),(79,4,69,'Added',NULL,NULL),(80,4,191,'Added',NULL,NULL),(81,4,71,'Added',NULL,NULL),(82,4,188,'Added',NULL,NULL),(83,4,63,'Added',NULL,NULL); +INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES (1,2,124,'Added',NULL,NULL),(2,2,158,'Added',NULL,NULL),(3,2,22,'Added',NULL,NULL),(4,2,13,'Added',NULL,NULL),(5,2,169,'Added',NULL,NULL),(6,2,77,'Added',NULL,NULL),(7,2,160,'Added',NULL,NULL),(8,2,186,'Added',NULL,NULL),(9,2,156,'Added',NULL,NULL),(10,2,102,'Added',NULL,NULL),(11,2,66,'Added',NULL,NULL),(12,2,92,'Added',NULL,NULL),(13,2,151,'Added',NULL,NULL),(14,2,103,'Added',NULL,NULL),(15,2,139,'Added',NULL,NULL),(16,2,97,'Added',NULL,NULL),(17,2,84,'Added',NULL,NULL),(18,2,164,'Added',NULL,NULL),(19,2,51,'Added',NULL,NULL),(20,2,128,'Added',NULL,NULL),(21,2,70,'Added',NULL,NULL),(22,2,69,'Added',NULL,NULL),(23,2,15,'Added',NULL,NULL),(24,2,98,'Added',NULL,NULL),(25,2,182,'Added',NULL,NULL),(26,2,161,'Added',NULL,NULL),(27,2,83,'Added',NULL,NULL),(28,2,110,'Added',NULL,NULL),(29,2,38,'Added',NULL,NULL),(30,2,121,'Added',NULL,NULL),(31,2,131,'Added',NULL,NULL),(32,2,87,'Added',NULL,NULL),(33,2,42,'Added',NULL,NULL),(34,2,75,'Added',NULL,NULL),(35,2,74,'Added',NULL,NULL),(36,2,55,'Added',NULL,NULL),(37,2,190,'Added',NULL,NULL),(38,2,165,'Added',NULL,NULL),(39,2,31,'Added',NULL,NULL),(40,2,104,'Added',NULL,NULL),(41,2,196,'Added',NULL,NULL),(42,2,76,'Added',NULL,NULL),(43,2,63,'Added',NULL,NULL),(44,2,148,'Added',NULL,NULL),(45,2,94,'Added',NULL,NULL),(46,2,6,'Added',NULL,NULL),(47,2,141,'Added',NULL,NULL),(48,2,149,'Added',NULL,NULL),(49,2,108,'Added',NULL,NULL),(50,2,181,'Added',NULL,NULL),(51,2,183,'Added',NULL,NULL),(52,2,43,'Added',NULL,NULL),(53,2,113,'Added',NULL,NULL),(54,2,180,'Added',NULL,NULL),(55,2,4,'Added',NULL,NULL),(56,2,41,'Added',NULL,NULL),(57,2,152,'Added',NULL,NULL),(58,2,111,'Added',NULL,NULL),(59,2,198,'Added',NULL,NULL),(60,2,184,'Added',NULL,NULL),(61,3,117,'Added',NULL,NULL),(62,3,72,'Added',NULL,NULL),(63,3,112,'Added',NULL,NULL),(64,3,59,'Added',NULL,NULL),(65,3,101,'Added',NULL,NULL),(66,3,167,'Added',NULL,NULL),(67,3,197,'Added',NULL,NULL),(68,3,171,'Added',NULL,NULL),(69,3,16,'Added',NULL,NULL),(70,3,154,'Added',NULL,NULL),(71,3,189,'Added',NULL,NULL),(72,3,37,'Added',NULL,NULL),(73,3,126,'Added',NULL,NULL),(74,3,96,'Added',NULL,NULL),(75,3,26,'Added',NULL,NULL),(76,4,124,'Added',NULL,NULL),(77,4,186,'Added',NULL,NULL),(78,4,139,'Added',NULL,NULL),(79,4,69,'Added',NULL,NULL),(80,4,38,'Added',NULL,NULL),(81,4,55,'Added',NULL,NULL),(82,4,63,'Added',NULL,NULL),(83,4,181,'Added',NULL,NULL); /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -637,7 +637,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_line_item` WRITE; /*!40000 ALTER TABLE `civicrm_line_item` DISABLE KEYS */; -INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',5,18,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',7,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',9,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',13,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',17,30,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',19,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',20,33,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',21,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',23,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',27,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',29,42,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(29,'civicrm_membership',2,15,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(30,'civicrm_membership',4,17,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(31,'civicrm_membership',6,19,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(32,'civicrm_membership',8,21,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',10,23,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',12,25,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',14,27,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',15,28,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',16,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',18,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',24,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',25,38,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,24,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,35,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,89,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,94,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,64,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,88,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,45,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,91,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,69,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,50,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,56,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,55,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,93,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,70,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,68,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,49,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,82,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,47,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,92,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,79,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,46,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,51,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,80,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,61,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,90,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,57,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,65,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,52,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,58,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,54,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,59,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,53,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,48,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,66,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,81,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,62,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,63,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,78,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,60,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL); +INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,15,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',5,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',7,17,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',9,18,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',10,19,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',13,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',17,21,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',19,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',21,23,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',23,24,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',25,25,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',27,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(29,'civicrm_membership',29,27,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(30,'civicrm_membership',2,28,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(31,'civicrm_membership',4,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(32,'civicrm_membership',6,30,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',8,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',12,32,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',14,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',15,34,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',16,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',18,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',20,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',24,38,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,40,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,43,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,46,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,45,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,78,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,57,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,53,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,79,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,56,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,70,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,51,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,54,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,49,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,68,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,76,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,58,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,89,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,61,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,52,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,85,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,60,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,77,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,47,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,88,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,81,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,69,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,71,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,59,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,93,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,63,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,62,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,48,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,55,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,50,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL); /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */; UNLOCK TABLES; @@ -647,7 +647,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_loc_block` WRITE; /*!40000 ALTER TABLE `civicrm_loc_block` DISABLE KEYS */; -INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES (1,177,204,168,NULL,NULL,NULL,NULL,NULL),(2,178,205,169,NULL,NULL,NULL,NULL,NULL),(3,179,206,170,NULL,NULL,NULL,NULL,NULL); +INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES (1,188,206,181,NULL,NULL,NULL,NULL,NULL),(2,189,207,182,NULL,NULL,NULL,NULL,NULL),(3,190,208,183,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */; UNLOCK TABLES; @@ -896,7 +896,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership` WRITE; /*!40000 ALTER TABLE `civicrm_membership` DISABLE KEYS */; -INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES (1,200,1,'2018-05-21','2018-05-21','2020-05-20','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,62,2,'2018-05-20','2018-05-20','2019-05-19','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,137,1,'2018-05-19','2018-05-19','2020-05-18','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,113,2,'2018-05-18','2018-05-18','2019-05-17','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,69,1,'2016-04-19','2016-04-19','2018-04-18','Payment',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,181,2,'2018-05-16','2018-05-16','2019-05-15','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,141,1,'2018-05-15','2018-05-15','2020-05-14','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,102,2,'2018-05-14','2018-05-14','2019-05-13','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,87,1,'2018-05-13','2018-05-13','2020-05-12','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,166,2,'2017-05-12','2017-05-12','2018-05-11','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,78,3,'2018-05-11','2018-05-11',NULL,'Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,45,2,'2018-05-10','2018-05-10','2019-05-09','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,156,1,'2018-05-09','2018-05-09','2020-05-08','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,49,2,'2018-05-08','2018-05-08','2019-05-07','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,140,2,'2017-05-07','2017-05-07','2018-05-06','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,163,2,'2018-05-06','2018-05-06','2019-05-05','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,164,1,'2018-05-05','2018-05-05','2020-05-04','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,158,2,'2018-05-04','2018-05-04','2019-05-03','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,8,1,'2018-05-03','2018-05-03','2020-05-02','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,22,1,'2015-12-21','2015-12-21','2017-12-20','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,153,1,'2018-05-01','2018-05-01','2020-04-30','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,149,3,'2018-04-30','2018-04-30',NULL,'Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,161,1,'2018-04-29','2018-04-29','2020-04-28','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,118,2,'2018-04-28','2018-04-28','2019-04-27','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,18,2,'2017-04-27','2017-04-27','2018-04-26','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,63,2,'2018-04-26','2018-04-26','2019-04-25','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,147,1,'2018-04-25','2018-04-25','2020-04-24','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,150,2,'2018-04-24','2018-04-24','2019-04-23','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,129,1,'2018-04-23','2018-04-23','2020-04-22','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,123,2,'2017-04-22','2017-04-22','2018-04-21','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL); +INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES (1,121,1,'2018-08-23','2018-08-23','2020-08-22','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,191,2,'2018-08-22','2018-08-22','2019-08-21','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,175,1,'2018-08-21','2018-08-21','2020-08-20','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,51,2,'2018-08-20','2018-08-20','2019-08-19','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,106,1,'2016-07-22','2016-07-22','2018-07-21','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,41,2,'2018-08-18','2018-08-18','2019-08-17','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,133,1,'2018-08-17','2018-08-17','2020-08-16','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,159,2,'2018-08-16','2018-08-16','2019-08-15','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,118,1,'2018-08-15','2018-08-15','2020-08-14','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,176,1,'2016-06-12','2016-06-12','2018-06-11','Payment',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,143,3,'2018-08-13','2018-08-13',NULL,'Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,90,2,'2018-08-12','2018-08-12','2019-08-11','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,3,1,'2018-08-11','2018-08-11','2020-08-10','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,56,2,'2018-08-10','2018-08-10','2019-08-09','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,25,2,'2017-08-09','2017-08-09','2018-08-08','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,197,2,'2018-08-08','2018-08-08','2019-08-07','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,6,1,'2018-08-07','2018-08-07','2020-08-06','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,185,2,'2018-08-06','2018-08-06','2019-08-05','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,42,1,'2018-08-05','2018-08-05','2020-08-04','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,180,2,'2017-08-04','2017-08-04','2018-08-03','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,77,1,'2018-08-03','2018-08-03','2020-08-02','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,61,3,'2018-08-02','2018-08-02',NULL,'Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,144,1,'2018-08-01','2018-08-01','2020-07-31','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,101,2,'2018-07-31','2018-07-31','2019-07-30','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,45,1,'2016-02-13','2016-02-13','2018-02-12','Payment',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,138,2,'2018-07-29','2018-07-29','2019-07-28','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,165,1,'2018-07-28','2018-07-28','2020-07-27','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,145,2,'2018-07-27','2018-07-27','2019-07-26','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,38,1,'2018-07-26','2018-07-26','2020-07-25','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,177,2,'2017-07-25','2017-07-25','2018-07-24','Donation',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL); /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */; UNLOCK TABLES; @@ -916,7 +916,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership_log` WRITE; /*!40000 ALTER TABLE `civicrm_membership_log` DISABLE KEYS */; -INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES (1,19,1,'2018-05-03','2020-05-02',8,'2018-05-21',1,NULL),(2,25,4,'2017-04-27','2018-04-26',18,'2018-05-21',2,NULL),(3,20,3,'2015-12-21','2017-12-20',22,'2018-05-21',1,NULL),(4,12,1,'2018-05-10','2019-05-09',45,'2018-05-21',2,NULL),(5,14,1,'2018-05-08','2019-05-07',49,'2018-05-21',2,NULL),(6,2,1,'2018-05-20','2019-05-19',62,'2018-05-21',2,NULL),(7,26,1,'2018-04-26','2019-04-25',63,'2018-05-21',2,NULL),(8,5,3,'2016-04-19','2018-04-18',69,'2018-05-21',1,NULL),(9,11,1,'2018-05-11',NULL,78,'2018-05-21',3,NULL),(10,9,1,'2018-05-13','2020-05-12',87,'2018-05-21',1,NULL),(11,8,1,'2018-05-14','2019-05-13',102,'2018-05-21',2,NULL),(12,4,1,'2018-05-18','2019-05-17',113,'2018-05-21',2,NULL),(13,24,1,'2018-04-28','2019-04-27',118,'2018-05-21',2,NULL),(14,30,4,'2017-04-22','2018-04-21',123,'2018-05-21',2,NULL),(15,29,1,'2018-04-23','2020-04-22',129,'2018-05-21',1,NULL),(16,3,1,'2018-05-19','2020-05-18',137,'2018-05-21',1,NULL),(17,15,4,'2017-05-07','2018-05-06',140,'2018-05-21',2,NULL),(18,7,1,'2018-05-15','2020-05-14',141,'2018-05-21',1,NULL),(19,27,1,'2018-04-25','2020-04-24',147,'2018-05-21',1,NULL),(20,22,1,'2018-04-30',NULL,149,'2018-05-21',3,NULL),(21,28,1,'2018-04-24','2019-04-23',150,'2018-05-21',2,NULL),(22,21,1,'2018-05-01','2020-04-30',153,'2018-05-21',1,NULL),(23,13,1,'2018-05-09','2020-05-08',156,'2018-05-21',1,NULL),(24,18,1,'2018-05-04','2019-05-03',158,'2018-05-21',2,NULL),(25,23,1,'2018-04-29','2020-04-28',161,'2018-05-21',1,NULL),(26,16,1,'2018-05-06','2019-05-05',163,'2018-05-21',2,NULL),(27,17,1,'2018-05-05','2020-05-04',164,'2018-05-21',1,NULL),(28,10,4,'2017-05-12','2018-05-11',166,'2018-05-21',2,NULL),(29,6,1,'2018-05-16','2019-05-15',181,'2018-05-21',2,NULL),(30,1,1,'2018-05-21','2020-05-20',200,'2018-05-21',1,NULL); +INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES (1,13,1,'2018-08-11','2020-08-10',3,'2018-08-23',1,NULL),(2,17,1,'2018-08-07','2020-08-06',6,'2018-08-23',1,NULL),(3,15,4,'2017-08-09','2018-08-08',25,'2018-08-23',2,NULL),(4,29,1,'2018-07-26','2020-07-25',38,'2018-08-23',1,NULL),(5,6,1,'2018-08-18','2019-08-17',41,'2018-08-23',2,NULL),(6,19,1,'2018-08-05','2020-08-04',42,'2018-08-23',1,NULL),(7,25,3,'2016-02-13','2018-02-12',45,'2018-08-23',1,NULL),(8,4,1,'2018-08-20','2019-08-19',51,'2018-08-23',2,NULL),(9,14,1,'2018-08-10','2019-08-09',56,'2018-08-23',2,NULL),(10,22,1,'2018-08-02',NULL,61,'2018-08-23',3,NULL),(11,21,1,'2018-08-03','2020-08-02',77,'2018-08-23',1,NULL),(12,12,1,'2018-08-12','2019-08-11',90,'2018-08-23',2,NULL),(13,24,1,'2018-07-31','2019-07-30',101,'2018-08-23',2,NULL),(14,5,3,'2016-07-22','2018-07-21',106,'2018-08-23',1,NULL),(15,9,1,'2018-08-15','2020-08-14',118,'2018-08-23',1,NULL),(16,1,1,'2018-08-23','2020-08-22',121,'2018-08-23',1,NULL),(17,7,1,'2018-08-17','2020-08-16',133,'2018-08-23',1,NULL),(18,26,1,'2018-07-29','2019-07-28',138,'2018-08-23',2,NULL),(19,11,1,'2018-08-13',NULL,143,'2018-08-23',3,NULL),(20,23,1,'2018-08-01','2020-07-31',144,'2018-08-23',1,NULL),(21,28,1,'2018-07-27','2019-07-26',145,'2018-08-23',2,NULL),(22,8,1,'2018-08-16','2019-08-15',159,'2018-08-23',2,NULL),(23,27,1,'2018-07-28','2020-07-27',165,'2018-08-23',1,NULL),(24,3,1,'2018-08-21','2020-08-20',175,'2018-08-23',1,NULL),(25,10,3,'2016-06-12','2018-06-11',176,'2018-08-23',1,NULL),(26,30,4,'2017-07-25','2018-07-24',177,'2018-08-23',2,NULL),(27,20,4,'2017-08-04','2018-08-03',180,'2018-08-23',2,NULL),(28,18,1,'2018-08-06','2019-08-05',185,'2018-08-23',2,NULL),(29,2,1,'2018-08-22','2019-08-21',191,'2018-08-23',2,NULL),(30,16,1,'2018-08-08','2019-08-07',197,'2018-08-23',2,NULL); /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */; UNLOCK TABLES; @@ -926,7 +926,7 @@ 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 (1,1,14),(2,2,15),(3,3,16),(4,4,17),(5,5,18),(6,6,19),(7,7,20),(8,8,21),(9,9,22),(10,10,23),(11,11,24),(12,12,25),(13,13,26),(14,14,27),(15,15,28),(16,16,29),(17,17,30),(18,18,31),(19,19,32),(20,20,33),(21,21,34),(22,22,35),(23,23,36),(24,24,37),(25,25,38),(26,26,39),(27,27,40),(28,28,41),(29,29,42),(30,30,43); +INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES (1,1,14),(2,3,15),(3,5,16),(4,7,17),(5,9,18),(6,10,19),(7,13,20),(8,17,21),(9,19,22),(10,21,23),(11,23,24),(12,25,25),(13,27,26),(14,29,27),(15,2,28),(16,4,29),(17,6,30),(18,8,31),(19,12,32),(20,14,33),(21,15,34),(22,16,35),(23,18,36),(24,20,37),(25,24,38),(26,26,39),(27,28,40),(28,30,41),(29,11,42),(30,22,43); /*!40000 ALTER TABLE `civicrm_membership_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -956,7 +956,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_menu` WRITE; /*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */; -INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES (1,1,'civicrm/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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(2,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:94:\"/civicrm-master/index.php?q=civicrm/activity&reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(3,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(4,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(5,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(6,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(7,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(8,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(9,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:94:\"/civicrm-master/index.php?q=civicrm/activity&reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(10,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/custm_data.png\";}'),(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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/admin/custom/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,11,1,0,0,'a:0:{}'),(12,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/admin/custom/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(13,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/admin/custom/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(14,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/admin/custom/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(15,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/admin/custom/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(16,1,'civicrm/admin/custom/group/field/changetype',NULL,'Custom Field - Change Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Custom_Form_ChangeFieldType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/admin/custom/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'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:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),(18,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/admin/uf/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,21,1,0,0,'a:0:{}'),(19,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/admin/uf/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,22,1,0,NULL,'a:0:{}'),(20,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/admin/uf/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,23,1,0,NULL,'a:0:{}'),(21,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/admin/uf/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,24,1,0,NULL,'a:0:{}'),(22,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/admin/uf/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,25,1,0,NULL,'a:0:{}'),(23,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/admin/uf/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,0,1,0,NULL,'a:0:{}'),(24,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/05.png\";}'),(25,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,35,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:25:\"admin/small/rela_type.png\";}'),(26,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/09.png\";}'),(27,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,45,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(28,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(29,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,55,1,0,NULL,'a:3:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/10.png\";}'),(30,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(31,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,65,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(32,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(33,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/08.png\";}'),(34,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:7:\"tel.gif\";}'),(35,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(36,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,95,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(37,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(38,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(39,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(40,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(41,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:22:\"admin/small/domain.png\";}'),(42,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(43,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:1:{i:0;s:22:\"edit message templates\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(44,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:1:{i:0;s:22:\"edit message templates\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:70:\"/civicrm-master/index.php?q=civicrm/admin/messageTemplates&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,262,1,0,NULL,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),(45,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:3:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(46,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(47,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:29:\"admin/small/communication.png\";}'),(48,1,'civicrm/admin/labelFormats',NULL,'Label Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:3:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(49,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(50,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:3:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(51,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(52,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:3:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(53,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(54,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(55,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(56,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(57,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:3:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(58,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";s:4:\"icon\";s:18:\"admin/small/03.png\";}'),(59,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/admin/access&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),(60,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";s:4:\"icon\";s:26:\"admin/small/Synch_user.png\";}'),(61,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}','civicrm/admin/configtask',NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:9:\"check.gif\";}'),(62,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(63,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:3:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";}'),(64,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/extensions&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(65,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(66,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";}'),(67,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(68,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(69,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(70,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(71,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/updatepath.png\";}'),(72,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(73,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(74,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:3:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(75,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:33:\"admin/small/import_export_map.png\";}'),(76,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(77,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Preferences_Multisite\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,130,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(78,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Preferences_Campaign\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(79,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:32:\"CRM_Admin_Form_Preferences_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(80,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(81,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(82,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),(83,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1370,1,0,NULL,'a:3:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(84,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1380,1,0,NULL,'a:3:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(85,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:3:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";s:4:\"icon\";s:26:\"admin/small/grant_type.png\";}'),(86,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),(87,1,'civicrm/admin',NULL,'Administer CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,9000,1,1,NULL,'a:0:{}'),(88,1,'civicrm/ajax/menujs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s: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:17:\"getNavigationMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(89,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(90,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(91,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";}'),(92,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:59:\"/civicrm-master/index.php?q=civicrm/admin/price&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),(93,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:59:\"/civicrm-master/index.php?q=civicrm/admin/price&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,0,'a:0:{}'),(94,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:59:\"/civicrm-master/index.php?q=civicrm/admin/price&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(95,1,'civicrm/admin/tplstrings/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Persistent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(96,1,'civicrm/admin/tplstrings',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Persistent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(97,1,'civicrm/ajax/mapping',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:11:\"mappingList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(98,1,'civicrm/ajax/recipientListing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:16:\"recipientListing\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(99,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,500,1,0,NULL,'a:3:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(100,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(101,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(102,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,399,1,0,NULL,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(103,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:83:\"/civicrm-master/index.php?q=civicrm/admin/badgelayout&reset=1&action=browse\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(104,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(105,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(106,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,1,NULL,'a:0:{}'),(107,1,'civicrm/dashlet',NULL,'CiviCRM Dashlets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Page_Dashlet\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,1,NULL,'a:0:{}'),(108,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,10,1,1,NULL,'a:0:{}'),(109,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(110,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(111,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/contact/search&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(112,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/contact/search&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,12,1,1,NULL,'a:0:{}'),(113,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/contact/search&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,14,1,1,NULL,'a:0:{}'),(114,1,'civicrm/contact/search/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/contact/search&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(115,1,'civicrm/contact/search/custom/list',NULL,'Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Page_CustomSearch\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:62:\"/civicrm-master/index.php?q=civicrm/contact/search&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,16,1,1,NULL,'a:0:{}'),(116,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(117,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:59:\"/civicrm-master/index.php?q=civicrm/contact/add&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(118,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:59:\"/civicrm-master/index.php?q=civicrm/contact/add&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(119,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:59:\"/civicrm-master/index.php?q=civicrm/contact/add&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(120,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(121,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(122,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(123,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(124,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:59:\"/civicrm-master/index.php?q=civicrm/contact/map&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(125,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(126,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(127,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(128,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:94:\"/civicrm-master/index.php?q=civicrm/activity&reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(129,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:94:\"/civicrm-master/index.php?q=civicrm/activity&reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(130,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:94:\"/civicrm-master/index.php?q=civicrm/activity&reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(131,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(132,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(133,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(134,1,'civicrm/contact/view/note','cid=%%cid%%','Notes','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Contact_Page_View_Note\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(135,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(136,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(137,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(138,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(139,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(140,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(141,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(142,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/dashlet&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(143,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/dashlet&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(144,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/dashlet&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(145,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(146,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(147,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(148,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(149,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(150,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(151,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(152,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(153,1,'civicrm/ajax/dashboard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"dashboard\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(154,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(155,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(156,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(157,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(158,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/dashlet&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(159,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/dashlet&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(160,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/dashlet&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(161,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,105,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:34:\"admin/small/duplicate_matching.png\";}'),(162,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(163,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(164,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(165,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,110,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),(166,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(167,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(168,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(169,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(170,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(171,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:94:\"/civicrm-master/index.php?q=civicrm/activity&reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(172,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(173,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(174,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(175,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(176,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(177,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(178,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,30,1,1,NULL,'a:0:{}'),(179,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),(180,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/group&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(181,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(182,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,400,1,1,NULL,'a:0:{}'),(183,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/import&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,410,1,1,NULL,'a:0:{}'),(184,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/import&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(185,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/import&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(186,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(187,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(188,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(189,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(190,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(191,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/export&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(192,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/export&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(193,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(194,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(195,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:51:\"/civicrm-master/index.php?q=civicrm/acl&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(196,1,'civicrm/acl/basic',NULL,'ACL','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_ACL_Page_ACLBasic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:51:\"/civicrm-master/index.php?q=civicrm/acl&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(197,1,'civicrm/standalone/register',NULL,'Registration Page','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Standalone_Form_Register\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(198,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(199,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/file&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(200,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(201,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,9999,1,1,NULL,'a:0:{}'),(202,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(203,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(204,1,'civicrm/api',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(205,1,'civicrm/ajax/apiexample',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:14:\"getExampleFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(206,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(207,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(208,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:14:\"CiviCRM API v3\";s:3:\"url\";s:51:\"/civicrm-master/index.php?q=civicrm/api&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(209,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(210,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(211,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(212,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(213,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:70:\"/civicrm-master/index.php?q=civicrm/payment&reset=1&action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(214,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(215,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/batch&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(216,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/batch&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(217,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(218,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(219,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(220,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(221,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(222,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(223,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(224,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(225,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(226,1,'civicrm/ajax/l10n-js',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Resources\";i:1;s:20:\"outputLocalizationJS\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(227,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(228,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(229,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(230,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(231,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(232,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(233,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(234,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(235,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(236,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(237,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(238,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(239,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:70:\"/civicrm-master/index.php?q=civicrm/payment&reset=1&action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(240,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:70:\"/civicrm-master/index.php?q=civicrm/payment&reset=1&action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(241,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(242,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(243,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(244,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,362,1,0,NULL,'a:3:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";}'),(245,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(246,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(247,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(248,1,'civicrm/tag',NULL,'Tags (Categories)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,25,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/11.png\";}'),(249,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:51:\"/civicrm-master/index.php?q=civicrm/tag&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(250,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:51:\"/civicrm-master/index.php?q=civicrm/tag&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(251,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(252,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,800,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(253,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(254,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(255,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(256,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(257,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_ICalendar\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(258,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(259,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:28:\"admin/small/event_manage.png\";}'),(260,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,375,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(261,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/event_type.png\";}'),(262,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:28:\"admin/small/parti_status.png\";}'),(263,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/parti_role.png\";}'),(264,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,398,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(265,1,'civicrm/admin/conference_slots','group=conference_slot','Conference Slot Labels','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(266,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,810,1,1,NULL,'a:0:{}'),(267,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,820,1,1,NULL,'a:0:{}'),(268,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(269,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/event/manage&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,910,1,0,NULL,'a:0:{}'),(270,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/event/manage&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(271,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/event/manage&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,920,1,0,NULL,'a:0:{}'),(272,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/event/manage&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(273,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/event/manage&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,940,1,0,NULL,'a:0:{}'),(274,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/event/manage&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(275,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/event/manage&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,960,1,0,NULL,'a:0:{}'),(276,1,'civicrm/event/manage/conference',NULL,'Conference Slots','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:37:\"CRM_Event_Form_ManageEvent_Conference\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/event/manage&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(277,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,830,1,0,NULL,'a:0:{}'),(278,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,840,1,1,NULL,'a:0:{}'),(279,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,850,1,1,NULL,'a:0:{}'),(280,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,880,1,1,NULL,'a:0:{}'),(281,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,890,1,1,NULL,'a:0:{}'),(282,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,4,1,0,NULL,'a:0:{}'),(283,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(284,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(285,1,'civicrm/ajax/event/add_participant_to_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:23:\"add_participant_to_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(286,1,'civicrm/ajax/event/remove_participant_from_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:28:\"remove_participant_from_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(287,1,'civicrm/event/add_to_cart',NULL,'Add Event To Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:29:\"CRM_Event_Cart_Page_AddToCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(288,1,'civicrm/event/cart_checkout',NULL,'Cart Checkout','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Controller_Checkout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(289,1,'civicrm/event/remove_from_cart',NULL,'Remove From Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Page_RemoveFromCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(290,1,'civicrm/event/view_cart',NULL,'View Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Cart_Page_ViewCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(291,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:65:\"/civicrm-master/index.php?q=civicrm/event/participant&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(292,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:60:\"/civicrm-master/index.php?q=civicrm/event/manage&reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,540,1,1,NULL,'a:0:{}'),(293,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(294,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/event&reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(295,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,500,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(296,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(297,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(298,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,1,NULL,1,0,1,0,NULL,'a:0:{}'),(299,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,360,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";}'),(300,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:0:{}'),(301,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:0:{}'),(302,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:0:{}'),(303,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(304,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(305,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,440,1,0,NULL,'a:0:{}'),(306,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,460,1,0,NULL,'a:0:{}'),(307,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,470,1,0,NULL,'a:0:{}'),(308,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,480,1,0,NULL,'a:0:{}'),(309,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(310,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,365,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/Premiums.png\";}'),(311,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,580,1,0,NULL,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(312,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(313,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";}'),(314,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:35:\"admin/small/payment_instruments.png\";}'),(315,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:36:\"admin/small/accepted_creditcards.png\";}'),(316,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:32:\"admin/small/soft_credit_type.png\";}'),(317,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(318,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(319,1,'civicrm/contact/view/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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:73:\"/civicrm-master/index.php?q=civicrm/contact/view/contribution&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(320,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,510,1,1,NULL,'a:0:{}'),(321,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,588,1,1,NULL,'a:0:{}'),(322,1,'civicrm/contribute/import',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,520,1,1,NULL,'a:0:{}'),(323,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,530,1,1,NULL,'a:0:{}'),(324,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(325,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(326,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(327,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(328,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(329,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(330,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(331,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:77:\"/civicrm-master/index.php?q=civicrm/admin/financial/financialType&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,581,1,0,NULL,'a:0:{}'),(332,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,585,1,0,NULL,'a:0:{}'),(333,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,586,1,0,NULL,'a:0:{}'),(334,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,600,1,0,NULL,'a:0:{}'),(335,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:63:\"/civicrm-master/index.php?q=civicrm/financial/batch&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,0,NULL,'a:0:{}'),(336,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:70:\"/civicrm-master/index.php?q=civicrm/payment&reset=1&action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(337,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(338,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,620,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(339,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/contribute/invoice&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,630,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(340,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(341,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(342,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(343,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,450,1,0,NULL,'a:0:{}'),(344,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:58:\"/civicrm-master/index.php?q=civicrm/contribute&reset=1\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(345,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,700,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(346,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/member&reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(347,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:31:\"admin/small/membership_type.png\";}'),(348,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";s:4:\"icon\";s:33:\"admin/small/membership_status.png\";}'),(349,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,2,1,0,NULL,'a:0:{}'),(350,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,390,1,0,NULL,'a:0:{}'),(351,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/member&reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,710,1,1,NULL,'a:0:{}'),(352,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/member&reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,720,1,1,NULL,'a:0:{}'),(353,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(354,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:75:\"/civicrm-master/index.php?q=civicrm/admin/member/membershipType&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(355,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,600,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),(356,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(357,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:3:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),(358,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:80:\"/civicrm-master/index.php?q=civicrm/admin/options/from_email_address&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:3:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(359,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:3:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(360,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(361,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(362,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(363,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,625,1,1,NULL,'a:0:{}'),(364,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,630,1,1,NULL,'a:0:{}'),(365,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,640,1,0,NULL,'a:0:{}'),(366,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,645,1,0,NULL,'a:0:{}'),(367,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,650,1,0,NULL,'a:0:{}'),(368,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(369,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(370,1,'civicrm/mailing/preview',NULL,'Preview Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Page_Preview\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,670,1,0,NULL,'a:0:{}'),(371,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,680,1,0,NULL,'a:0:{}'),(372,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,685,1,0,NULL,'a:0:{}'),(373,1,'civicrm/mailing/queue',NULL,'Sending Mail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,690,1,0,NULL,'a:0:{}'),(374,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:78:\"/civicrm-master/index.php?q=civicrm/mailing/report&reset=1&mid=%%mid%%\";}}',NULL,NULL,4,NULL,NULL,NULL,0,695,1,0,NULL,'a:0:{}'),(375,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(376,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,800,1,0,NULL,'a:0:{}'),(377,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:55:\"/civicrm-master/index.php?q=civicrm/mailing&reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,850,1,0,NULL,'a:0:{}'),(378,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(379,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(380,1,'civicrm/grant',NULL,'CiviGrant Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1000,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(381,1,'civicrm/grant/info',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/grant&reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(382,1,'civicrm/grant/search',NULL,'Find Grants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:27:\"CRM_Grant_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/grant&reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1010,1,1,NULL,'a:0:{}'),(383,1,'civicrm/grant/add','action=add','New Grant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/grant&reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(384,1,'civicrm/contact/view/grant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(385,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,550,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(386,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/pledge&reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,560,1,1,NULL,'a:0:{}'),(387,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,570,1,0,NULL,'a:0:{}'),(388,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/pledge&reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(389,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/pledge&reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,580,1,0,NULL,'a:0:{}'),(390,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(391,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,900,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(392,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(393,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,910,1,1,NULL,'a:0:{}'),(394,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(395,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(396,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(397,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(398,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/case/activity&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(399,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:76:\"/civicrm-master/index.php?q=civicrm/contact/view&reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:65:\"/civicrm-master/index.php?q=civicrm/contact/view/case&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(400,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(401,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(402,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(403,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:3:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(404,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:30:\"admin/small/redaction_type.png\";}'),(405,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(406,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(407,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:59:\"/civicrm-master/index.php?q=civicrm/case/report&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(408,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(409,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(410,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:52:\"/civicrm-master/index.php?q=civicrm/case&reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(411,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(412,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(413,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1200,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),(414,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/report&reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(415,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/report&reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1220,1,1,NULL,'a:0:{}'),(416,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/report&reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1241,1,1,NULL,'a:0:{}'),(417,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),(418,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/report&reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(419,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:31:\"admin/small/report_template.gif\";}'),(420,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(421,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:27:\"admin/small/report_list.gif\";}'),(422,1,'civicrm/report/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','a:2:{i:0;s:15:\"CRM_Report_Form\";i:1;s:16:\"uploadChartImage\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:54:\"/civicrm-master/index.php?q=civicrm/report&reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(423,1,'civicrm/campaign',NULL,'Campaign Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:27:\"CRM_Campaign_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(424,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:56:\"/civicrm-master/index.php?q=civicrm/campaign&reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(425,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(426,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:56:\"/civicrm-master/index.php?q=civicrm/campaign&reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(427,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"icon\";s:18:\"admin/small/05.png\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(428,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,2,1,0,NULL,'a:4:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(429,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,3,1,0,NULL,'a:4:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(430,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:53:\"/civicrm-master/index.php?q=civicrm/admin&reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,4,1,0,NULL,'a:4:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(431,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(432,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:56:\"/civicrm-master/index.php?q=civicrm/campaign&reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(433,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(434,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(435,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(436,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(437,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(438,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:56:\"/civicrm-master/index.php?q=civicrm/campaign&reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(439,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(440,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(441,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(442,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:47:\"/civicrm-master/index.php?q=civicrm&reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(443,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:3:{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:66:\"/civicrm-master/index.php?q=civicrm/admin/custom/group&reset=1\";s:4:\"icon\";s:26:\"admin/small/custm_data.png\";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:62:\"/civicrm-master/index.php?q=civicrm/admin/uf/group&reset=1\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";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:75:\"/civicrm-master/index.php?q=civicrm/admin/options/activity_type&reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";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:61:\"/civicrm-master/index.php?q=civicrm/admin/reltype&reset=1\";s:4:\"icon\";s:25:\"admin/small/rela_type.png\";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:69:\"/civicrm-master/index.php?q=civicrm/admin/options/subtype&reset=1\";s:4:\"icon\";s:18:\"admin/small/09.png\";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:68:\"/civicrm-master/index.php?q=civicrm/admin/options/gender&reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";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:79:\"/civicrm-master/index.php?q=civicrm/admin/options/individual_prefix&reset=1\";s:4:\"icon\";s:21:\"admin/small/title.png\";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:79:\"/civicrm-master/index.php?q=civicrm/admin/options/individual_suffix&reset=1\";s:4:\"icon\";s:18:\"admin/small/10.png\";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:66:\"/civicrm-master/index.php?q=civicrm/admin/locationType&reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";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:74:\"/civicrm-master/index.php?q=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:87:\"/civicrm-master/index.php?q=civicrm/admin/options/instant_messenger_service&reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";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:77:\"/civicrm-master/index.php?q=civicrm/admin/options/mobile_provider&reset=1\";s:4:\"icon\";s:18:\"admin/small/08.png\";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:72:\"/civicrm-master/index.php?q=civicrm/admin/options/phone_type&reset=1\";s:4:\"icon\";s:7:\"tel.gif\";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:81:\"/civicrm-master/index.php?q=civicrm/admin/setting/preferences/display&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:68:\"/civicrm-master/index.php?q=civicrm/admin/setting/search&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:58:\"/civicrm-master/index.php?q=civicrm/admin/menu&reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";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:78:\"/civicrm-master/index.php?q=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:75:\"/civicrm-master/index.php?q=civicrm/admin/options/custom_search&reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:26:\"{weight}.Tags (Categories)\";a:6:{s:5:\"title\";s:17:\"Tags (Categories)\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:15:\"Tags_Categories\";s:3:\"url\";s:51:\"/civicrm-master/index.php?q=civicrm/tag&reset=1\";s:4:\"icon\";s:18:\"admin/small/11.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:10;}s:14:\"Communications\";a:3:{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:78:\"/civicrm-master/index.php?q=civicrm/admin/domain&action=update&reset=1\";s:4:\"icon\";s:22:\"admin/small/domain.png\";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:80:\"/civicrm-master/index.php?q=civicrm/admin/options/from_email_address&reset=1\";s:4:\"icon\";s:21:\"admin/small/title.png\";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:70:\"/civicrm-master/index.php?q=civicrm/admin/messageTemplates&reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";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:71:\"/civicrm-master/index.php?q=civicrm/admin/scheduleReminders&reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";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:92:\"/civicrm-master/index.php?q=civicrm/admin/options/preferred_communication_method&reset=1\";s:4:\"icon\";s:29:\"admin/small/communication.png\";s:5:\"extra\";N;}s:22:\"{weight}.Label Formats\";a:6:{s:5:\"title\";s:13:\"Label Formats\";s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:2:\"id\";s:12:\"LabelFormats\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/admin/labelFormats&reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";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:64:\"/civicrm-master/index.php?q=civicrm/admin/pdfFormats&reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";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:81:\"/civicrm-master/index.php?q=civicrm/admin/options/communication_style&reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";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:76:\"/civicrm-master/index.php?q=civicrm/admin/options/email_greeting&reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";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:77:\"/civicrm-master/index.php?q=civicrm/admin/options/postal_greeting&reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";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:71:\"/civicrm-master/index.php?q=civicrm/admin/options/addressee&reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:6;}s:12:\"Localization\";a:3:{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:74:\"/civicrm-master/index.php?q=civicrm/admin/setting/localization&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:81:\"/civicrm-master/index.php?q=civicrm/admin/setting/preferences/address&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:66:\"/civicrm-master/index.php?q=civicrm/admin/setting/date&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:71:\"/civicrm-master/index.php?q=civicrm/admin/options/languages&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:21:\"Users and Permissions\";a:3:{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:60:\"/civicrm-master/index.php?q=civicrm/admin/access&reset=1\";s:4:\"icon\";s:18:\"admin/small/03.png\";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:63:\"/civicrm-master/index.php?q=civicrm/admin/synchUser&reset=1\";s:4:\"icon\";s:26:\"admin/small/Synch_user.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:15:\"System Settings\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:18:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:64:\"/civicrm-master/index.php?q=civicrm/admin/configtask&reset=1\";s:4:\"icon\";s:9:\"check.gif\";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:71:\"/civicrm-master/index.php?q=civicrm/admin/setting/component&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:64:\"/civicrm-master/index.php?q=civicrm/admin/extensions&reset=1\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";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:66:\"/civicrm-master/index.php?q=civicrm/admin/setting/smtp&reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";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:70:\"/civicrm-master/index.php?q=civicrm/admin/paymentProcessor&reset=1\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";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:69:\"/civicrm-master/index.php?q=civicrm/admin/setting/mapping&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:62:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";a:6:{s:5:\"title\";s:53:\"Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:2:\"id\";s:46:\"Misc_Undelete_PDFs_Limits_Logging_Captcha_etc.\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/admin/setting/misc&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:66:\"/civicrm-master/index.php?q=civicrm/admin/setting/path&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:65:\"/civicrm-master/index.php?q=civicrm/admin/setting/url&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:81:\"/civicrm-master/index.php?q=civicrm/admin/setting/updateConfigBackend&reset=1\";s:4:\"icon\";s:26:\"admin/small/updatepath.png\";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:64:\"/civicrm-master/index.php?q=civicrm/admin/setting/uf&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:81:\"/civicrm-master/index.php?q=civicrm/admin/options/safe_file_extension&reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";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:61:\"/civicrm-master/index.php?q=civicrm/admin/options&reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";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:61:\"/civicrm-master/index.php?q=civicrm/admin/mapping&reset=1\";s:4:\"icon\";s:33:\"admin/small/import_export_map.png\";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:67:\"/civicrm-master/index.php?q=civicrm/admin/setting/debug&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:83:\"/civicrm-master/index.php?q=civicrm/admin/setting/preferences/multisite&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:57:\"/civicrm-master/index.php?q=civicrm/admin/job&reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";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:66:\"/civicrm-master/index.php?q=civicrm/admin/sms/provider&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:9;}s:12:\"CiviCampaign\";a:3:{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:82:\"/civicrm-master/index.php?q=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:73:\"/civicrm-master/index.php?q=civicrm/admin/campaign/surveyType&reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";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:75:\"/civicrm-master/index.php?q=civicrm/admin/options/campaign_type&reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";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:77:\"/civicrm-master/index.php?q=civicrm/admin/options/campaign_status&reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";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:78:\"/civicrm-master/index.php?q=civicrm/admin/options/engagement_index&reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:9:\"CiviEvent\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:79:\"/civicrm-master/index.php?q=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:83:\"/civicrm-master/index.php?q=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:59:\"/civicrm-master/index.php?q=civicrm/admin/event&reset=1\";s:4:\"icon\";s:28:\"admin/small/event_manage.png\";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:67:\"/civicrm-master/index.php?q=civicrm/admin/eventTemplate&reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";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:72:\"/civicrm-master/index.php?q=civicrm/admin/options/event_type&reset=1\";s:4:\"icon\";s:26:\"admin/small/event_type.png\";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:72:\"/civicrm-master/index.php?q=civicrm/admin/participant_status&reset=1\";s:4:\"icon\";s:28:\"admin/small/parti_status.png\";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:78:\"/civicrm-master/index.php?q=civicrm/admin/options/participant_role&reset=1\";s:4:\"icon\";s:26:\"admin/small/parti_role.png\";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:81:\"/civicrm-master/index.php?q=civicrm/admin/options/participant_listing&reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:31:\"{weight}.Conference Slot Labels\";a:6:{s:5:\"title\";s:22:\"Conference Slot Labels\";s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:2:\"id\";s:20:\"ConferenceSlotLabels\";s:3:\"url\";s:96:\"/civicrm-master/index.php?q=civicrm/admin/conference_slots&group=conference_slot&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}s:9:\"perColumn\";d:5;}s:8:\"CiviMail\";a:3:{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:81:\"/civicrm-master/index.php?q=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:58:\"/civicrm-master/index.php?q=civicrm/admin/mail&reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";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:63:\"/civicrm-master/index.php?q=civicrm/admin/component&reset=1\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";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:89:\"/civicrm-master/index.php?q=civicrm/admin/options/from_email_address/civimail&reset=1\";s:4:\"icon\";s:21:\"admin/small/title.png\";s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:32:\"Configure email account setting.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:66:\"/civicrm-master/index.php?q=civicrm/admin/mailSettings&reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:10:\"CiviMember\";a:3:{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:80:\"/civicrm-master/index.php?q=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:75:\"/civicrm-master/index.php?q=civicrm/admin/member/membershipType&reset=1\";s:4:\"icon\";s:31:\"admin/small/membership_type.png\";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:77:\"/civicrm-master/index.php?q=civicrm/admin/member/membershipStatus&reset=1\";s:4:\"icon\";s:33:\"admin/small/membership_status.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:6:\"Manage\";a:3:{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:60:\"/civicrm-master/index.php?q=civicrm/admin/joblog&reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";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:67:\"/civicrm-master/index.php?q=civicrm/contact/deduperules&reset=1\";s:4:\"icon\";s:34:\"admin/small/duplicate_matching.png\";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:64:\"/civicrm-master/index.php?q=civicrm/dedupe/exception&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:12:\"Option Lists\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:72:\"/civicrm-master/index.php?q=civicrm/admin/options/grant_type&reset=1\";s:4:\"icon\";s:26:\"admin/small/grant_type.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:9:\"Customize\";a:3:{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:59:\"/civicrm-master/index.php?q=civicrm/admin/price&reset=1\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:14:\"CiviContribute\";a:3:{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:80:\"/civicrm-master/index.php?q=civicrm/admin/pcp&context=contribute&reset=1\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";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:64:\"/civicrm-master/index.php?q=civicrm/admin/contribute&reset=1\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";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:79:\"/civicrm-master/index.php?q=civicrm/admin/contribute/managePremiums&reset=1\";s:4:\"icon\";s:24:\"admin/small/Premiums.png\";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:77:\"/civicrm-master/index.php?q=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:80:\"/civicrm-master/index.php?q=civicrm/admin/financial/financialAccount&reset=1\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";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:80:\"/civicrm-master/index.php?q=civicrm/admin/options/payment_instrument&reset=1\";s:4:\"icon\";s:35:\"admin/small/payment_instruments.png\";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:79:\"/civicrm-master/index.php?q=civicrm/admin/options/accept_creditcard&reset=1\";s:4:\"icon\";s:36:\"admin/small/accepted_creditcards.png\";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:78:\"/civicrm-master/index.php?q=civicrm/admin/options/soft_credit_type&reset=1\";s:4:\"icon\";s:32:\"admin/small/soft_credit_type.png\";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:84:\"/civicrm-master/index.php?q=civicrm/admin/setting/preferences/contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}s:9:\"perColumn\";d:5;}s:8:\"CiviCase\";a:3:{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:66:\"/civicrm-master/index.php?q=civicrm/admin/setting/case&reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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:71:\"/civicrm-master/index.php?q=civicrm/admin/options/case_type&reset=1\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";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:76:\"/civicrm-master/index.php?q=civicrm/admin/options/redaction_rule&reset=1\";s:4:\"icon\";s:30:\"admin/small/redaction_type.png\";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:73:\"/civicrm-master/index.php?q=civicrm/admin/options/case_status&reset=1\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";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:78:\"/civicrm-master/index.php?q=civicrm/admin/options/encounter_medium&reset=1\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:10:\"CiviReport\";a:3:{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:74:\"/civicrm-master/index.php?q=civicrm/admin/report/template/list&reset=1\";s:4:\"icon\";s:31:\"admin/small/report_template.gif\";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:84:\"/civicrm-master/index.php?q=civicrm/admin/report/options/report_template&reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";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:65:\"/civicrm-master/index.php?q=civicrm/admin/report/list&reset=1\";s:4:\"icon\";s:27:\"admin/small/report_list.gif\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}}',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,NULL,'a:0:{}'); +INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES (1,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(2,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(3,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(4,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(5,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(6,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(7,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(8,1,'civicrm/acl/basic',NULL,'ACL','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_ACL_Page_ACLBasic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(9,1,'civicrm/standalone/register',NULL,'Registration Page','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Standalone_Form_Register\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(10,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(11,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(12,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(13,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,9999,1,1,NULL,'a:0:{}'),(14,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(15,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(16,1,'civicrm/api',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(17,1,'civicrm/ajax/apiexample',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:14:\"getExampleFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(18,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(19,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(20,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:14:\"CiviCRM API v3\";s:3:\"url\";s:20:\"/civicrm/api?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(21,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(22,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(23,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(24,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(25,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(26,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(27,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(28,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(29,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(30,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(31,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(32,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(33,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(34,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(35,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(36,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(37,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(38,1,'civicrm/ajax/l10n-js',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Resources\";i:1;s:20:\"outputLocalizationJS\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(39,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(40,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(41,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(42,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(43,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(44,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(45,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(46,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(47,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(48,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(49,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(50,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(51,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(52,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(53,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(54,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,30,1,1,NULL,'a:0:{}'),(55,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),(56,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(57,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(58,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(59,1,'civicrm/tag',NULL,'Tags (Categories)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,25,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/11.png\";}'),(60,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(61,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(62,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(63,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(64,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,1,NULL,'a:0:{}'),(65,1,'civicrm/dashlet',NULL,'CiviCRM Dashlets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Page_Dashlet\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,1,NULL,'a:0:{}'),(66,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,10,1,1,NULL,'a:0:{}'),(67,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(68,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(69,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(70,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,12,1,1,NULL,'a:0:{}'),(71,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,14,1,1,NULL,'a:0:{}'),(72,1,'civicrm/contact/search/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(73,1,'civicrm/contact/search/custom/list',NULL,'Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Page_CustomSearch\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,16,1,1,NULL,'a:0:{}'),(74,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(75,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(76,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(77,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(78,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(79,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(80,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(81,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(82,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(83,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(84,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(85,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(86,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(87,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(88,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(89,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(90,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(91,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(92,1,'civicrm/contact/view/note','cid=%%cid%%','Notes','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Contact_Page_View_Note\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(93,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(94,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(95,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(96,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(97,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(98,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(99,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(100,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(101,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(102,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(103,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(104,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(105,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(106,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(107,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(108,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(109,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(110,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(111,1,'civicrm/ajax/dashboard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"dashboard\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(112,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(113,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(114,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(115,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(116,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(117,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(118,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(119,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,105,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:34:\"admin/small/duplicate_matching.png\";}'),(120,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(121,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(122,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(123,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,110,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),(124,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(125,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(126,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(127,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(128,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(129,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(130,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(131,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(132,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(133,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(134,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(135,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/custm_data.png\";}'),(136,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,11,1,0,0,'a:0:{}'),(137,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(138,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(139,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(140,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(141,1,'civicrm/admin/custom/group/field/changetype',NULL,'Custom Field - Change Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Custom_Form_ChangeFieldType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(142,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),(143,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,21,1,0,0,'a:0:{}'),(144,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,22,1,0,NULL,'a:0:{}'),(145,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,23,1,0,NULL,'a:0:{}'),(146,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,24,1,0,NULL,'a:0:{}'),(147,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,25,1,0,NULL,'a:0:{}'),(148,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,0,1,0,NULL,'a:0:{}'),(149,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/05.png\";}'),(150,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,35,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:25:\"admin/small/rela_type.png\";}'),(151,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/09.png\";}'),(152,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,45,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(153,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(154,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,55,1,0,NULL,'a:3:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/10.png\";}'),(155,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(156,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,65,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(157,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(158,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/08.png\";}'),(159,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:7:\"tel.gif\";}'),(160,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(161,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,95,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(162,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(163,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(164,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(165,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(166,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:22:\"admin/small/domain.png\";}'),(167,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(168,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(169,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,262,1,0,NULL,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),(170,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:3:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(171,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(172,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:29:\"admin/small/communication.png\";}'),(173,1,'civicrm/admin/labelFormats',NULL,'Label Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:3:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(174,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(175,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:3:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(176,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(177,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:3:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(178,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(179,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(180,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(181,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(182,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:3:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(183,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";s:4:\"icon\";s:18:\"admin/small/03.png\";}'),(184,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),(185,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";s:4:\"icon\";s:26:\"admin/small/Synch_user.png\";}'),(186,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:9:\"check.gif\";}'),(187,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(188,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:3:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";}'),(189,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(190,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(191,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";}'),(192,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(193,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(194,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(195,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(196,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/updatepath.png\";}'),(197,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(198,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(199,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:3:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(200,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:33:\"admin/small/import_export_map.png\";}'),(201,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(202,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Preferences_Multisite\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,130,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(203,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Preferences_Campaign\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(204,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:32:\"CRM_Admin_Form_Preferences_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:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(205,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(206,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(207,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),(208,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1370,1,0,NULL,'a:3:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(209,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1380,1,0,NULL,'a:3:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(210,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:3:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";s:4:\"icon\";s:26:\"admin/small/grant_type.png\";}'),(211,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),(212,1,'civicrm/admin',NULL,'Administer CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,9000,1,1,NULL,'a:0:{}'),(213,1,'civicrm/ajax/menujs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s: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:17:\"getNavigationMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(214,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(215,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(216,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";}'),(217,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),(218,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,0,'a:0:{}'),(219,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(220,1,'civicrm/admin/tplstrings/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Persistent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(221,1,'civicrm/admin/tplstrings',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Persistent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(222,1,'civicrm/ajax/mapping',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:11:\"mappingList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(223,1,'civicrm/ajax/recipientListing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:16:\"recipientListing\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(224,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,500,1,0,NULL,'a:3:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(225,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(226,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(227,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,399,1,0,NULL,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(228,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(229,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(230,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(231,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(232,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(233,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(234,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(235,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(236,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(237,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,362,1,0,NULL,'a:3:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";}'),(238,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(239,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(240,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(241,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(242,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(243,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(244,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(245,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(246,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(247,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,400,1,1,NULL,'a:0:{}'),(248,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,410,1,1,NULL,'a:0:{}'),(249,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(250,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(251,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(252,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,800,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(253,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(254,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(255,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(256,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(257,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_ICalendar\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(258,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(259,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:28:\"admin/small/event_manage.png\";}'),(260,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,375,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(261,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/event_type.png\";}'),(262,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:28:\"admin/small/parti_status.png\";}'),(263,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:26:\"admin/small/parti_role.png\";}'),(264,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,398,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(265,1,'civicrm/admin/conference_slots','group=conference_slot','Conference Slot Labels','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(266,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,810,1,1,NULL,'a:0:{}'),(267,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,820,1,1,NULL,'a:0:{}'),(268,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(269,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,910,1,0,NULL,'a:0:{}'),(270,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(271,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,920,1,0,NULL,'a:0:{}'),(272,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(273,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,940,1,0,NULL,'a:0:{}'),(274,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(275,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,960,1,0,NULL,'a:0:{}'),(276,1,'civicrm/event/manage/conference',NULL,'Conference Slots','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:37:\"CRM_Event_Form_ManageEvent_Conference\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(277,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,830,1,0,NULL,'a:0:{}'),(278,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,840,1,1,NULL,'a:0:{}'),(279,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,850,1,1,NULL,'a:0:{}'),(280,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,880,1,1,NULL,'a:0:{}'),(281,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,890,1,1,NULL,'a:0:{}'),(282,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,4,1,0,NULL,'a:0:{}'),(283,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(284,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(285,1,'civicrm/ajax/event/add_participant_to_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:23:\"add_participant_to_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(286,1,'civicrm/ajax/event/remove_participant_from_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:28:\"remove_participant_from_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(287,1,'civicrm/event/add_to_cart',NULL,'Add Event To Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:29:\"CRM_Event_Cart_Page_AddToCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(288,1,'civicrm/event/cart_checkout',NULL,'Cart Checkout','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Controller_Checkout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(289,1,'civicrm/event/remove_from_cart',NULL,'Remove From Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Page_RemoveFromCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(290,1,'civicrm/event/view_cart',NULL,'View Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Cart_Page_ViewCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(291,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(292,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,540,1,1,NULL,'a:0:{}'),(293,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(294,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(295,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,500,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(296,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(297,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(298,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,1,0,1,0,NULL,'a:0:{}'),(299,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,360,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";}'),(300,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:0:{}'),(301,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:0:{}'),(302,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:0:{}'),(303,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(304,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(305,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,440,1,0,NULL,'a:0:{}'),(306,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,460,1,0,NULL,'a:0:{}'),(307,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,470,1,0,NULL,'a:0:{}'),(308,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,480,1,0,NULL,'a:0:{}'),(309,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(310,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,365,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:24:\"admin/small/Premiums.png\";}'),(311,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,580,1,0,NULL,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(312,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(313,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";}'),(314,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:35:\"admin/small/payment_instruments.png\";}'),(315,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:36:\"admin/small/accepted_creditcards.png\";}'),(316,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:32:\"admin/small/soft_credit_type.png\";}'),(317,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(318,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(319,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(320,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,510,1,1,NULL,'a:0:{}'),(321,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,588,1,1,NULL,'a:0:{}'),(322,1,'civicrm/contribute/import',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,520,1,1,NULL,'a:0:{}'),(323,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,530,1,1,NULL,'a:0:{}'),(324,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(325,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(326,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(327,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(328,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(329,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(330,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(331,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,581,1,0,NULL,'a:0:{}'),(332,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,585,1,0,NULL,'a:0:{}'),(333,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,586,1,0,NULL,'a:0:{}'),(334,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,600,1,0,NULL,'a:0:{}'),(335,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,0,NULL,'a:0:{}'),(336,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(337,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(338,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,620,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(339,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,630,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(340,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(341,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(342,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(343,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,450,1,0,NULL,'a:0:{}'),(344,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(345,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,700,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(346,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(347,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{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\";s:4:\"icon\";s:31:\"admin/small/membership_type.png\";}'),(348,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";s:4:\"icon\";s:33:\"admin/small/membership_status.png\";}'),(349,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,2,1,0,NULL,'a:0:{}'),(350,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,390,1,0,NULL,'a:0:{}'),(351,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,710,1,1,NULL,'a:0:{}'),(352,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,720,1,1,NULL,'a:0:{}'),(353,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(354,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(355,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,600,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),(356,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(357,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:3:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),(358,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:3:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(359,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:3:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(360,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(361,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(362,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(363,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,625,1,1,NULL,'a:0:{}'),(364,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,630,1,1,NULL,'a:0:{}'),(365,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,640,1,0,NULL,'a:0:{}'),(366,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,645,1,0,NULL,'a:0:{}'),(367,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,650,1,0,NULL,'a:0:{}'),(368,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(369,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(370,1,'civicrm/mailing/preview',NULL,'Preview Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Page_Preview\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,670,1,0,NULL,'a:0:{}'),(371,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,680,1,0,NULL,'a:0:{}'),(372,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,685,1,0,NULL,'a:0:{}'),(373,1,'civicrm/mailing/queue',NULL,'Sending Mail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,690,1,0,NULL,'a:0:{}'),(374,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&mid=%%mid%%\";}}',NULL,NULL,4,NULL,NULL,NULL,0,695,1,0,NULL,'a:0:{}'),(375,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(376,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,800,1,0,NULL,'a:0:{}'),(377,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,850,1,0,NULL,'a:0:{}'),(378,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(379,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(380,1,'civicrm/grant',NULL,'CiviGrant Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1000,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(381,1,'civicrm/grant/info',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(382,1,'civicrm/grant/search',NULL,'Find Grants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:27:\"CRM_Grant_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1010,1,1,NULL,'a:0:{}'),(383,1,'civicrm/grant/add','action=add','New Grant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(384,1,'civicrm/contact/view/grant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(385,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,550,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(386,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,560,1,1,NULL,'a:0:{}'),(387,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,570,1,0,NULL,'a:0:{}'),(388,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(389,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,580,1,0,NULL,'a:0:{}'),(390,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(391,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,900,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(392,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(393,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,910,1,1,NULL,'a:0:{}'),(394,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(395,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(396,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(397,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(398,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(399,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(400,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(401,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(402,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(403,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:3:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(404,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:30:\"admin/small/redaction_type.png\";}'),(405,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(406,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(407,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(408,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(409,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(410,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(411,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(412,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(413,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1200,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),(414,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(415,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1220,1,1,NULL,'a:0:{}'),(416,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1241,1,1,NULL,'a:0:{}'),(417,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),(418,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(419,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:31:\"admin/small/report_template.gif\";}'),(420,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(421,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:27:\"admin/small/report_list.gif\";}'),(422,1,'civicrm/report/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','a:2:{i:0;s:15:\"CRM_Report_Form\";i:1;s:16:\"uploadChartImage\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(423,1,'civicrm/campaign',NULL,'Campaign Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:27:\"CRM_Campaign_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(424,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(425,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(426,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(427,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"icon\";s:18:\"admin/small/05.png\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(428,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,2,1,0,NULL,'a:4:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(429,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,3,1,0,NULL,'a:4:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(430,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,4,1,0,NULL,'a:4:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(431,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(432,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(433,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(434,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(435,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(436,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(437,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(438,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(439,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(440,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(441,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(442,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(443,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:26:\"{weight}.Tags (Categories)\";a:6:{s:5:\"title\";s:17:\"Tags (Categories)\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:15:\"Tags_Categories\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";s:18:\"admin/small/11.png\";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\";s:26:\"admin/small/custm_data.png\";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\";s:23:\"admin/small/Profile.png\";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\";s:18:\"admin/small/05.png\";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\";s:25:\"admin/small/rela_type.png\";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\";s:18:\"admin/small/09.png\";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\";s:18:\"admin/small/01.png\";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\";s:21:\"admin/small/title.png\";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\";s:18:\"admin/small/10.png\";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\";s:18:\"admin/small/13.png\";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\";s:18:\"admin/small/07.png\";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\";s:18:\"admin/small/08.png\";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\";s:7:\"tel.gif\";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\";s:18:\"admin/small/36.png\";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\";s:18:\"admin/small/36.png\";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\";s:24:\"admin/small/template.png\";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\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:10;}s:6:\"Manage\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";s:34:\"admin/small/duplicate_matching.png\";s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:14:\"Communications\";a:3:{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\";s:22:\"admin/small/domain.png\";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\";s:21:\"admin/small/title.png\";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\";s:24:\"admin/small/template.png\";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\";s:24:\"admin/small/template.png\";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\";s:29:\"admin/small/communication.png\";s:5:\"extra\";N;}s:22:\"{weight}.Label Formats\";a:6:{s:5:\"title\";s:13:\"Label Formats\";s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:2:\"id\";s:12:\"LabelFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";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\";s:24:\"admin/small/template.png\";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\";s:18:\"admin/small/01.png\";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\";s:18:\"admin/small/01.png\";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\";s:18:\"admin/small/01.png\";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\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:6;}s:12:\"Localization\";a:3:{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\";s:18:\"admin/small/36.png\";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\";s:18:\"admin/small/36.png\";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\";s:18:\"admin/small/36.png\";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\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:21:\"Users and Permissions\";a:3:{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\";s:18:\"admin/small/03.png\";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\";s:26:\"admin/small/Synch_user.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:15:\"System Settings\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:18:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";s:9:\"check.gif\";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\";s:18:\"admin/small/36.png\";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\";s:26:\"admin/small/price_sets.png\";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\";s:18:\"admin/small/07.png\";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\";s:41:\"admin/small/online_contribution_pages.png\";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\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:62:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";a:6:{s:5:\"title\";s:53:\"Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:2:\"id\";s:46:\"Misc_Undelete_PDFs_Limits_Logging_Captcha_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";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\";s:18:\"admin/small/36.png\";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\";s:18:\"admin/small/36.png\";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\";s:26:\"admin/small/updatepath.png\";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\";s:18:\"admin/small/36.png\";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\";s:18:\"admin/small/01.png\";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\";s:18:\"admin/small/01.png\";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\";s:33:\"admin/small/import_export_map.png\";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\";s:18:\"admin/small/36.png\";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\";s:18:\"admin/small/36.png\";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\";s:18:\"admin/small/13.png\";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\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:9;}s:12:\"CiviCampaign\";a:3:{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\";s:18:\"admin/small/05.png\";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\";s:18:\"admin/small/05.png\";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\";s:18:\"admin/small/05.png\";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\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:9:\"CiviEvent\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";s:28:\"admin/small/event_manage.png\";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\";s:24:\"admin/small/template.png\";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\";s:26:\"admin/small/event_type.png\";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\";s:28:\"admin/small/parti_status.png\";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\";s:26:\"admin/small/parti_role.png\";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\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:31:\"{weight}.Conference Slot Labels\";a:6:{s:5:\"title\";s:22:\"Conference Slot Labels\";s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:2:\"id\";s:20:\"ConferenceSlotLabels\";s:3:\"url\";s:65:\"/civicrm/admin/conference_slots?group=conference_slot&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}s:9:\"perColumn\";d:5;}s:8:\"CiviMail\";a:3:{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\";s:18:\"admin/small/07.png\";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\";s:23:\"admin/small/Profile.png\";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\";s:21:\"admin/small/title.png\";s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:32:\"Configure email account setting.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:10:\"CiviMember\";a:3:{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\";s:31:\"admin/small/membership_type.png\";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\";s:33:\"admin/small/membership_status.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:12:\"Option Lists\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";s:26:\"admin/small/grant_type.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:9:\"Customize\";a:3:{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\";s:26:\"admin/small/price_sets.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:14:\"CiviContribute\";a:3:{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\";s:34:\"admin/small/contribution_types.png\";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\";s:41:\"admin/small/online_contribution_pages.png\";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\";s:24:\"admin/small/Premiums.png\";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\";s:34:\"admin/small/contribution_types.png\";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\";s:35:\"admin/small/payment_instruments.png\";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\";s:36:\"admin/small/accepted_creditcards.png\";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\";s:32:\"admin/small/soft_credit_type.png\";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:9:\"perColumn\";d:5;}s:8:\"CiviCase\";a:3:{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\";s:18:\"admin/small/36.png\";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\";s:25:\"admin/small/case_type.png\";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\";s:30:\"admin/small/redaction_type.png\";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\";s:25:\"admin/small/case_type.png\";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\";s:25:\"admin/small/case_type.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:10:\"CiviReport\";a:3:{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\";s:31:\"admin/small/report_template.gif\";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\";s:24:\"admin/small/template.png\";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\";s:27:\"admin/small/report_list.gif\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}}',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,NULL,'a:0:{}'); /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */; UNLOCK TABLES; @@ -966,7 +966,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_msg_template` WRITE; /*!40000 ALTER TABLE `civicrm_msg_template` DISABLE KEYS */; -INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`, `msg_html`, `is_active`, `workflow_id`, `is_default`, `is_reserved`, `is_sms`, `pdf_format_id`) VALUES (1,'Cases - Send Copy of an Activity','{if $idHash}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if $isCaseActivity}\n{ts}Your Case Role(s){/ts} : {$contact.role}\n{if $manageCaseURL}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if $editActURL}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if $viewActURL}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label}{if $field.category}({$field.category}){/if} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label}{if $field.category}({$field.category}){/if} : {$field.value}\n{/if}\n{/foreach}\n\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Activity Summary{/ts} - {$activityTypeName}\n </th>\n </tr>\n {if $isCaseActivity}\n <tr>\n <td {$labelStyle}>\n {ts}Your Case Role(s){/ts}\n </td>\n <td {$valueStyle}>\n {$contact.role}\n </td>\n </tr>\n {if $manageCaseURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n </td>\n </tr>\n {/if}\n {/if}\n {if $editActURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {if $viewActURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {foreach from=$activity.fields item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}{if $field.category}({$field.category}){/if}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n <tr>\n <th {$headerStyle}>\n {$customGroupName}\n </th>\n </tr>\n {foreach from=$customGroup item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n </table>\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,805,1,0,0,NULL),(2,'Cases - Send Copy of an Activity','{if $idHash}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if $isCaseActivity}\n{ts}Your Case Role(s){/ts} : {$contact.role}\n{if $manageCaseURL}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if $editActURL}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if $viewActURL}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label}{if $field.category}({$field.category}){/if} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label}{if $field.category}({$field.category}){/if} : {$field.value}\n{/if}\n{/foreach}\n\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Activity Summary{/ts} - {$activityTypeName}\n </th>\n </tr>\n {if $isCaseActivity}\n <tr>\n <td {$labelStyle}>\n {ts}Your Case Role(s){/ts}\n </td>\n <td {$valueStyle}>\n {$contact.role}\n </td>\n </tr>\n {if $manageCaseURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n </td>\n </tr>\n {/if}\n {/if}\n {if $editActURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {if $viewActURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {foreach from=$activity.fields item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}{if $field.category}({$field.category}){/if}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n <tr>\n <th {$headerStyle}>\n {$customGroupName}\n </th>\n </tr>\n {foreach from=$customGroup item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n </table>\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,805,0,1,0,NULL),(3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Organization Name{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Email{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfEmail}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Contact ID{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfID}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n </td>\n </tr>\n {if $receiptMessage}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Copy of Contribution Receipt{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n {/if}\n </table>\n</center>\n\n</body>\n</html>\n',1,806,1,0,0,NULL),(4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Organization Name{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Email{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfEmail}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Contact ID{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfID}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n </td>\n </tr>\n {if $receiptMessage}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Copy of Contribution Receipt{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n {/if}\n </table>\n</center>\n\n</body>\n</html>\n',1,806,0,1,0,NULL),(5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts}\n','{if $formValues.receipt_text}\n{$formValues.receipt_text}\n{else}{ts}Thank you for your support.{/ts}{/if}\n\n{ts}Please print this receipt for your records.{/ts}\n\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{if $lineItem}\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{if $getTaxDetails}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $getTaxDetails} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\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.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $getTaxDetails}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $getTaxDetails && $dataArray}\n{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0 || $value != \'\'}\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 isset($totalTaxAmount) && $totalTaxAmount !== \'null\'}\n{ts}Total Tax Amount{/ts} : {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{ts}Total Amount{/ts} : {$formValues.total_amount|crmMoney:$currency}\n{if $receive_date}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $receipt_date}\n{ts}Receipt Date{/ts}: {$receipt_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $formValues.paidBy and !$formValues.hidden_CreditCard}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if $formValues.check_number}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{if $formValues.trxn_id}\n{ts}Transaction ID{/ts}: {$formValues.trxn_id}\n{/if}\n\n{if $ccContribution}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $softCreditTypes and $softCredits}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $formValues.product_name}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if $fulfilled_date}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n {if $formValues.receipt_text}\n <p>{$formValues.receipt_text|htmlize}</p>\n {else}\n <p>{ts}Thank you for your support.{/ts}</p>\n {/if}\n\n <p>{ts}Please print this receipt for your records.{/ts}</p>\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}Contribution Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.contributionType_name}\n </td>\n </tr>\n\n {if $lineItem and !$is_quick_config}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $getTaxDetails}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $getTaxDetails}\n <td>\n {$line.unit_price*$line.qty|crmMoney:$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:$currency}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {/if}\n {if $getTaxDetails && $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount before Tax : {/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0 || $value != \'\'}\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\n {if isset($totalTaxAmount) && $totalTaxAmount !== \'null\'}\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\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount|crmMoney:$currency}\n </td>\n </tr>\n\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Date Received{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $receipt_date}\n <tr>\n <td {$labelStyle}>\n {ts}Receipt Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receipt_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $formValues.paidBy and !$formValues.hidden_CreditCard}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.paidBy}\n </td>\n </tr>\n {if $formValues.check_number}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $formValues.trxn_id}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction ID{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if $ccContribution}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $softCreditTypes and $softCredits}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $formValues.product_name}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$formValues.product_name}\n </td>\n </tr>\n {if $formValues.product_option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_option}\n </td>\n </tr>\n {/if}\n {if $formValues.product_sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_sku}\n </td>\n </tr>\n {/if}\n {if $fulfilled_date}\n <tr>\n <td {$labelStyle}>\n {ts}Sent{/ts}\n </td>\n <td {$valueStyle}>\n {$fulfilled_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,807,1,0,0,NULL),(6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts}\n','{if $formValues.receipt_text}\n{$formValues.receipt_text}\n{else}{ts}Thank you for your support.{/ts}{/if}\n\n{ts}Please print this receipt for your records.{/ts}\n\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{if $lineItem}\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{if $getTaxDetails}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $getTaxDetails} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\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.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $getTaxDetails}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $getTaxDetails && $dataArray}\n{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0 || $value != \'\'}\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 isset($totalTaxAmount) && $totalTaxAmount !== \'null\'}\n{ts}Total Tax Amount{/ts} : {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{ts}Total Amount{/ts} : {$formValues.total_amount|crmMoney:$currency}\n{if $receive_date}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $receipt_date}\n{ts}Receipt Date{/ts}: {$receipt_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $formValues.paidBy and !$formValues.hidden_CreditCard}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if $formValues.check_number}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{if $formValues.trxn_id}\n{ts}Transaction ID{/ts}: {$formValues.trxn_id}\n{/if}\n\n{if $ccContribution}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $softCreditTypes and $softCredits}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $formValues.product_name}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if $fulfilled_date}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n {if $formValues.receipt_text}\n <p>{$formValues.receipt_text|htmlize}</p>\n {else}\n <p>{ts}Thank you for your support.{/ts}</p>\n {/if}\n\n <p>{ts}Please print this receipt for your records.{/ts}</p>\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}Contribution Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.contributionType_name}\n </td>\n </tr>\n\n {if $lineItem and !$is_quick_config}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $getTaxDetails}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $getTaxDetails}\n <td>\n {$line.unit_price*$line.qty|crmMoney:$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:$currency}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {/if}\n {if $getTaxDetails && $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount before Tax : {/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0 || $value != \'\'}\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\n {if isset($totalTaxAmount) && $totalTaxAmount !== \'null\'}\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\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount|crmMoney:$currency}\n </td>\n </tr>\n\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Date Received{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $receipt_date}\n <tr>\n <td {$labelStyle}>\n {ts}Receipt Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receipt_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $formValues.paidBy and !$formValues.hidden_CreditCard}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.paidBy}\n </td>\n </tr>\n {if $formValues.check_number}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $formValues.trxn_id}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction ID{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if $ccContribution}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $softCreditTypes and $softCredits}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $formValues.product_name}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$formValues.product_name}\n </td>\n </tr>\n {if $formValues.product_option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_option}\n </td>\n </tr>\n {/if}\n {if $formValues.product_sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_sku}\n </td>\n </tr>\n {/if}\n {if $fulfilled_date}\n <tr>\n <td {$labelStyle}>\n {ts}Sent{/ts}\n </td>\n <td {$valueStyle}>\n {$fulfilled_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,807,0,1,0,NULL),(7,'Contributions - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title}\n','{if $receipt_text}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{else}\n\n{ts}Please print this receipt for your records.{/ts}\n{/if}\n\n{if $amount}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $lineItem and $priceSetID and !$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{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\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.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $dataArray}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{if $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 $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney:$currency}\n{else}\n{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if $amount_level } - {$amount_level} {/if}\n{/if}\n{/if}\n{if $receive_date}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $is_monetary and $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n\n{if $is_recur and ($contributeMode eq \'notify\' or $contributeMode eq \'directIPN\')}\n{ts}This is a recurring contribution. You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif $softCreditTypes and $softCredits}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if $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 $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 !( $contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\' ) and $is_monetary}\n{if $is_pay_later && !$isBillingAddressRequiredForPayLater}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{elseif $amount GT 0}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{/if} {* End ! is_pay_later condition. *}\n{/if}\n{if $contributeMode eq \'direct\' AND !$is_pay_later AND $amount GT 0}\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 $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 $contact_email OR $contact_phone}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if $contact_email}\n {$contact_email}\n{/if}\n{if $contact_phone}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND $price}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if $customPre}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if $customPost}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}','<!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<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n {if $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 {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n </table>\n <table width=\"500\" style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $amount}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Contribution Information{/ts}\n </th>\n </tr>\n\n {if $lineItem and $priceSetID and !$is_quick_config}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $getTaxDetails}\n <td>\n {$line.unit_price*$line.qty|crmMoney:$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:$currency}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount before Tax : {/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$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\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n\n {else}\n\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:$currency} {if $amount_level} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n {/if}\n\n\n {if $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 $is_monetary and $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 $is_recur}\n {if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This is a recurring contribution. You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n {if $updateSubscriptionBillingUrl}\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n {/if}\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {elseif $softCreditTypes and $softCredits}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $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 $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 $isShare}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n </td>\n </tr>\n {/if}\n\n {if ! ($contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\') and $is_monetary}\n {if $is_pay_later && !$isBillingAddressRequiredForPayLater}\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 {elseif $amount GT 0}\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 {/if}\n {/if}\n\n {if $contributeMode eq \'direct\' AND !$is_pay_later AND $amount GT 0}\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 $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 $contact_email OR $contact_phone}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if $contact_email}\n <p>{$contact_email}</p>\n {/if}\n {if $contact_phone}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND $price}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $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</center>\n\n</body>\n</html>\n',1,808,1,0,0,NULL),(8,'Contributions - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title}\n','{if $receipt_text}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{else}\n\n{ts}Please print this receipt for your records.{/ts}\n{/if}\n\n{if $amount}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $lineItem and $priceSetID and !$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{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\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.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $dataArray}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{if $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 $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney:$currency}\n{else}\n{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if $amount_level } - {$amount_level} {/if}\n{/if}\n{/if}\n{if $receive_date}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $is_monetary and $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n\n{if $is_recur and ($contributeMode eq \'notify\' or $contributeMode eq \'directIPN\')}\n{ts}This is a recurring contribution. You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif $softCreditTypes and $softCredits}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if $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 $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 !( $contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\' ) and $is_monetary}\n{if $is_pay_later && !$isBillingAddressRequiredForPayLater}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{elseif $amount GT 0}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{/if} {* End ! is_pay_later condition. *}\n{/if}\n{if $contributeMode eq \'direct\' AND !$is_pay_later AND $amount GT 0}\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 $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 $contact_email OR $contact_phone}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if $contact_email}\n {$contact_email}\n{/if}\n{if $contact_phone}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND $price}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if $customPre}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if $customPost}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}','<!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<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n {if $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 {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n </table>\n <table width=\"500\" style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $amount}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Contribution Information{/ts}\n </th>\n </tr>\n\n {if $lineItem and $priceSetID and !$is_quick_config}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $getTaxDetails}\n <td>\n {$line.unit_price*$line.qty|crmMoney:$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:$currency}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount before Tax : {/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$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\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n\n {else}\n\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:$currency} {if $amount_level} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n {/if}\n\n\n {if $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 $is_monetary and $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 $is_recur}\n {if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This is a recurring contribution. You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n {if $updateSubscriptionBillingUrl}\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n {/if}\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {elseif $softCreditTypes and $softCredits}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $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 $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 $isShare}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n </td>\n </tr>\n {/if}\n\n {if ! ($contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\') and $is_monetary}\n {if $is_pay_later && !$isBillingAddressRequiredForPayLater}\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 {elseif $amount GT 0}\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 {/if}\n {/if}\n\n {if $contributeMode eq \'direct\' AND !$is_pay_later AND $amount GT 0}\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 $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 $contact_email OR $contact_phone}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if $contact_email}\n <p>{$contact_email}</p>\n {/if}\n {if $contact_phone}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND $price}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $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</center>\n\n</body>\n</html>\n',1,808,0,1,0,NULL),(9,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns = \"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv = \"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n <table style = \"margin-top:2px;padding-left:7px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/civi99.png\" height = \"34px\" width = \"99px\"></td>\n </tr>\n </table>\n <center>\n <table style = \"padding-right:19px;font-family: Arial, Verdana, sans-serif;\" width = \"500\" height = \"100\" border = \"0\" cellpadding = \"2\" cellspacing = \"1\">\n <tr>\n <td style = \"padding-left:15px;\" ><b><font size = \"4\" align = \"center\">{ts}INVOICE{/ts}</font></b></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"center\" >{ts}Invoice Date:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\">{$domain_organization}</font></td>\n </tr>\n <tr>\n {if $organization_name}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\" >{$display_name} ({$organization_name})</font></td>\n {else}\n <td style = \"padding-left:15px;\"><font size = \"1\" align = \"center\" >{$display_name}</font></td>\n {/if}\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_date}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_street_address }{$domain_street_address}{/if}\n {if $domain_supplemental_address_1 }{$domain_supplemental_address_1}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Invoice Number:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_supplemental_address_2 }{$domain_supplemental_address_2}{/if}\n {if $domain_state }{$domain_state}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td colspan=\"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_number}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_city}{$domain_city}{/if}\n {if $domain_postal_code }{$domain_postal_code}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"right\">{$city} {$postal_code}</font></td>\n <td colspan=\"1\"></td>\n <td height = \"10\" style = \"padding-left:70px;\"><b><font size = \"1\"align = \"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_country}{$domain_country}{/if}</font></td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td style = \"padding-left:70px;\"><font size = \"1\"align = \"right\">{$source}</font></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_phone}{$domain_phone}{/if}</font> </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_email}{$domain_email}{/if}</font> </td>\n </tr>\n </table>\n <table style = \"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width = \"590\" border = \"0\"cellpadding = \"-5\" cellspacing = \"19\" id = \"desc\">\n <tr>\n <td colspan = \"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th style = \"padding-right:34px;text-align:left;font-weight:bold;width:200px;\"><font size = \"1\">{ts}Description{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\" ><font size = \"1\">{ts}Quantity{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Unit Price{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;width:20px;\"><font size = \"1\">{$taxTerm} </font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts 1=$defaultCurrency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItem item=value key=priceset name=taxpricevalue}\n {if $smarty.foreach.taxpricevalue.index eq 0}\n <tr>\n <td colspan = \"5\" ><hr size=\"3\" style = \"color:#000;\"></hr></td>\n </tr>\n {else}\n <tr>\n <td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td>\n </tr>\n {/if}\n <tr>\n <td style=\"text-align:left;\" ><font size = \"1\">\n {if $value.html_type eq \'Text\'}\n {$value.label}\n {else}\n {$value.field_title} - {$value.label}\n {/if}\n {if $value.description}\n <div>{$value.description|truncate:30:\"...\"}</div>\n {/if}\n </font>\n </td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$value.qty}</font></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$value.unit_price|crmMoney:$currency}</font></td>\n {if $value.tax_amount != \'\'}\n <td style = \"padding-left:34px;text-align:right;width:20px;\"><font size = \"1\"> {$value.tax_rate}%</font></td>\n {else}\n <td style = \"padding-left:34px;text-align:right;width:20px;\"><font size = \"1\">{ts 1=$taxTerm}No %1{/ts}</font></td>\n {/if}\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$value.subTotal|crmMoney:$currency}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">{ts}Sub Total{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from = $dataArray item = value key = priceset}\n <tr>\n <td colspan = \"3\"></td>\n {if $priceset}\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\"> {ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n {elseif $priceset == 0}\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">{ts 1=$taxTerm}TOTAL NO %1{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><b><font size = \"1\">{ts 1=$defaultCurrency}TOTAL %1{/ts}</font></b></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n <td style = \"padding-left:34px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {if $is_pay_later == 0}\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">\n {if $contribution_status_id == $refundedStatusId}\n {ts}LESS Amount Credited{/ts}\n {else}\n {ts}LESS Amount Paid{/ts}\n {/if}\n </font>\n </td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$amountPaid|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\" ><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><b><font size = \"1\">{ts}AMOUNT DUE:{/ts} </font></b></td>\n <td style = \"padding-left:34px;text-align:right;\"><b><font size = \"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style = \"padding-left:34px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan = \"3\"></td>\n </tr>\n {if $contribution_status_id == $pendingStatusId && $is_pay_later == 1}\n <tr>\n <td><b><font size = \"1\" align = \"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n <td colspan = \"3\"></td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n </table>\n {if $contribution_status_id == $pendingStatusId && $is_pay_later == 1}\n <table style = \"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/contribute/cut_line.png\" height = \"15\" width = \"630\"></td>\n </tr>\n </table>\n <table style = \"margin-top:6px;padding-right:20px;font-family: Arial, Verdana, sans-serif\" width = \"480\" border = \"0\"cellpadding = \"-5\" cellspacing=\"19\" id = \"desc\">\n <tr>\n <td width=\"60%\"><b><font size = \"4\" align = \"right\">{ts}PAYMENT ADVICE{/ts}</font></b> <br/><br/> <font size = \"1\" align = \"right\"><b>{ts}To: {/ts}</b><div style=\"width:17em;word-wrap:break-word;\">\n {$domain_organization} <br />\n {$domain_street_address} {$domain_supplemental_address_1} <br />\n {$domain_supplemental_address_2} {$domain_state} <br />\n {$domain_city} {$domain_postal_code} <br />\n {$domain_country} <br />\n {$domain_phone} <br />\n {$domain_email}</div>\n </font><br/><br/><font size=\"1\" align=\"right\">{$notes}</font>\n </td>\n <td width=\"40%\">\n <table cellpadding = \"-10\" cellspacing = \"22\" align=\"right\" >\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Customer: {/ts}</font></td>\n <td ><font size = \"1\" align = \"right\">{$display_name}</font></td>\n </tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Invoice Number: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\">{$invoice_id}</font></td>\n </tr>\n <tr><td colspan = \"5\"style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n {if $is_pay_later == 1}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {else}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Amount Due: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n </tr>\n {/if}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Due Date: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\">{$dueDate}</font></td>\n </tr>\n <tr>\n <td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n {if $contribution_status_id == $refundedStatusId || $contribution_status_id == $cancelledStatusId}\n <table style = \"margin-top:2px;padding-left:7px;page-break-before: always;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/civi99.png\" height = \"34px\" width = \"99px\"></td>\n </tr>\n </table>\n <center>\n\n <table style = \"padding-right:19px;font-family: Arial, Verdana, sans-serif\" width = \"500\" height = \"100\" border = \"0\" cellpadding = \"2\" cellspacing = \"1\">\n <tr>\n <td style = \"padding-left:15px;\" ><b><font size = \"4\" align = \"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Date:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\">{$domain_organization}</font></td>\n </tr>\n <tr>\n {if $organization_name}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$display_name} ({$organization_name})</font></td>\n {else}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$display_name}</font></td>\n {/if}\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_date}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_street_address }{$domain_street_address}{/if}\n {if $domain_supplemental_address_1 }{$domain_supplemental_address_1}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_supplemental_address_2 }{$domain_supplemental_address_2}{/if}\n {if $domain_state }{$domain_state}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td colspan=\"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$creditnote_id}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_city}{$domain_city}{/if}\n {if $domain_postal_code }{$domain_postal_code}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"right\">{$city} {$postal_code}</font></td>\n <td colspan=\"1\"></td>\n <td height = \"10\" style = \"padding-left:70px;\"><b><font size = \"1\"align = \"right\">{ts}Reference:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_country}{$domain_country}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td style = \"padding-left:70px;\"><font size = \"1\"align = \"right\">{$source}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_phone}{$domain_phone}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_email}{$domain_email}{/if}\n </font>\n </td>\n </tr>\n </table>\n\n <table style = \"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width = \"590\" border = \"0\"cellpadding = \"-5\" cellspacing = \"19\" id = \"desc\">\n <tr>\n <td colspan = \"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th style = \"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size = \"1\">{ts}Description{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Quantity{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Unit Price{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{$taxTerm} </font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts 1=$defaultCurrency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItem item=value key=priceset name=pricevalue}\n {if $smarty.foreach.pricevalue.index eq 0}\n <tr><td colspan = \"5\" ><hr size=\"3\" style = \"color:#000;\"></hr></td></tr>\n {else}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n {/if}\n <tr>\n <td style =\"text-align:left;\" >\n <font size = \"1\">\n {if $value.html_type eq \'Text\'}\n {$value.label}\n {else}\n {$value.field_title} - {$value.label}\n {/if}\n {if $value.description}\n <div>{$value.description|truncate:30:\"...\"}</div>\n {/if}\n </font>\n </td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.qty}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.unit_price|crmMoney:$currency}</font></td>\n {if $value.tax_amount != \'\'}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.tax_rate}%</font></td>\n {else}\n <td style = \"padding-left:28px;text-align:right\"><font size = \"1\" >{ts 1=$taxTerm}No %1{/ts}</font></td>\n {/if}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" >{$value.subTotal|crmMoney:$currency}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{ts}Sub Total{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from = $dataArray item = value key = priceset}\n <tr>\n <td colspan = \"3\"></td>\n {if $priceset}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n {elseif $priceset == 0}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{ts 1=$taxTerm}TOTAL NO %1{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{ts 1=$defaultCurrency}TOTAL %1{/ts}</font></b></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {if $is_pay_later == 0}\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" >{ts}LESS Credit to invoice(s){/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\" ><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style = \"padding-left:28px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan = \"3\"></td>\n </tr>\n <tr>\n <td></td>\n <td colspan = \"3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n <table style = \"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/contribute/cut_line.png\" height = \"15\" width = \"630\"></td>\n </tr>\n </table>\n\n <table style = \"margin-top:6px;padding-right:20px;font-family: Arial, Verdana, sans-serif\" width = \"507\" border = \"0\"cellpadding = \"-5\" cellspacing=\"19\" id = \"desc\">\n <tr>\n <td width=\"60%\"><font size = \"4\" align = \"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n <td width=\"40%\">\n <table align=\"right\" >\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts} </font></td>\n <td><font size = \"1\" align = \"right\" >{$display_name}</font></td>\n </tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts} </font></td>\n <td><font size = \"1\" align = \"right\">{$creditnote_id}</font></td>\n </tr>\n <tr><td colspan = \"5\"style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n <td width=\'50px\'><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n </center>\n </body>\n</html>\n',1,809,1,0,0,NULL),(10,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns = \"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv = \"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n <table style = \"margin-top:2px;padding-left:7px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/civi99.png\" height = \"34px\" width = \"99px\"></td>\n </tr>\n </table>\n <center>\n <table style = \"padding-right:19px;font-family: Arial, Verdana, sans-serif;\" width = \"500\" height = \"100\" border = \"0\" cellpadding = \"2\" cellspacing = \"1\">\n <tr>\n <td style = \"padding-left:15px;\" ><b><font size = \"4\" align = \"center\">{ts}INVOICE{/ts}</font></b></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"center\" >{ts}Invoice Date:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\">{$domain_organization}</font></td>\n </tr>\n <tr>\n {if $organization_name}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\" >{$display_name} ({$organization_name})</font></td>\n {else}\n <td style = \"padding-left:15px;\"><font size = \"1\" align = \"center\" >{$display_name}</font></td>\n {/if}\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_date}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_street_address }{$domain_street_address}{/if}\n {if $domain_supplemental_address_1 }{$domain_supplemental_address_1}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Invoice Number:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_supplemental_address_2 }{$domain_supplemental_address_2}{/if}\n {if $domain_state }{$domain_state}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td colspan=\"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_number}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_city}{$domain_city}{/if}\n {if $domain_postal_code }{$domain_postal_code}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"right\">{$city} {$postal_code}</font></td>\n <td colspan=\"1\"></td>\n <td height = \"10\" style = \"padding-left:70px;\"><b><font size = \"1\"align = \"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_country}{$domain_country}{/if}</font></td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td style = \"padding-left:70px;\"><font size = \"1\"align = \"right\">{$source}</font></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_phone}{$domain_phone}{/if}</font> </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_email}{$domain_email}{/if}</font> </td>\n </tr>\n </table>\n <table style = \"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width = \"590\" border = \"0\"cellpadding = \"-5\" cellspacing = \"19\" id = \"desc\">\n <tr>\n <td colspan = \"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th style = \"padding-right:34px;text-align:left;font-weight:bold;width:200px;\"><font size = \"1\">{ts}Description{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\" ><font size = \"1\">{ts}Quantity{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Unit Price{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;width:20px;\"><font size = \"1\">{$taxTerm} </font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts 1=$defaultCurrency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItem item=value key=priceset name=taxpricevalue}\n {if $smarty.foreach.taxpricevalue.index eq 0}\n <tr>\n <td colspan = \"5\" ><hr size=\"3\" style = \"color:#000;\"></hr></td>\n </tr>\n {else}\n <tr>\n <td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td>\n </tr>\n {/if}\n <tr>\n <td style=\"text-align:left;\" ><font size = \"1\">\n {if $value.html_type eq \'Text\'}\n {$value.label}\n {else}\n {$value.field_title} - {$value.label}\n {/if}\n {if $value.description}\n <div>{$value.description|truncate:30:\"...\"}</div>\n {/if}\n </font>\n </td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$value.qty}</font></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$value.unit_price|crmMoney:$currency}</font></td>\n {if $value.tax_amount != \'\'}\n <td style = \"padding-left:34px;text-align:right;width:20px;\"><font size = \"1\"> {$value.tax_rate}%</font></td>\n {else}\n <td style = \"padding-left:34px;text-align:right;width:20px;\"><font size = \"1\">{ts 1=$taxTerm}No %1{/ts}</font></td>\n {/if}\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$value.subTotal|crmMoney:$currency}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">{ts}Sub Total{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from = $dataArray item = value key = priceset}\n <tr>\n <td colspan = \"3\"></td>\n {if $priceset}\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\"> {ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n {elseif $priceset == 0}\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">{ts 1=$taxTerm}TOTAL NO %1{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><b><font size = \"1\">{ts 1=$defaultCurrency}TOTAL %1{/ts}</font></b></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n <td style = \"padding-left:34px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {if $is_pay_later == 0}\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">\n {if $contribution_status_id == $refundedStatusId}\n {ts}LESS Amount Credited{/ts}\n {else}\n {ts}LESS Amount Paid{/ts}\n {/if}\n </font>\n </td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$amountPaid|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\" ><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><b><font size = \"1\">{ts}AMOUNT DUE:{/ts} </font></b></td>\n <td style = \"padding-left:34px;text-align:right;\"><b><font size = \"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style = \"padding-left:34px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan = \"3\"></td>\n </tr>\n {if $contribution_status_id == $pendingStatusId && $is_pay_later == 1}\n <tr>\n <td><b><font size = \"1\" align = \"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n <td colspan = \"3\"></td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n </table>\n {if $contribution_status_id == $pendingStatusId && $is_pay_later == 1}\n <table style = \"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/contribute/cut_line.png\" height = \"15\" width = \"630\"></td>\n </tr>\n </table>\n <table style = \"margin-top:6px;padding-right:20px;font-family: Arial, Verdana, sans-serif\" width = \"480\" border = \"0\"cellpadding = \"-5\" cellspacing=\"19\" id = \"desc\">\n <tr>\n <td width=\"60%\"><b><font size = \"4\" align = \"right\">{ts}PAYMENT ADVICE{/ts}</font></b> <br/><br/> <font size = \"1\" align = \"right\"><b>{ts}To: {/ts}</b><div style=\"width:17em;word-wrap:break-word;\">\n {$domain_organization} <br />\n {$domain_street_address} {$domain_supplemental_address_1} <br />\n {$domain_supplemental_address_2} {$domain_state} <br />\n {$domain_city} {$domain_postal_code} <br />\n {$domain_country} <br />\n {$domain_phone} <br />\n {$domain_email}</div>\n </font><br/><br/><font size=\"1\" align=\"right\">{$notes}</font>\n </td>\n <td width=\"40%\">\n <table cellpadding = \"-10\" cellspacing = \"22\" align=\"right\" >\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Customer: {/ts}</font></td>\n <td ><font size = \"1\" align = \"right\">{$display_name}</font></td>\n </tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Invoice Number: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\">{$invoice_id}</font></td>\n </tr>\n <tr><td colspan = \"5\"style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n {if $is_pay_later == 1}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {else}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Amount Due: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n </tr>\n {/if}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Due Date: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\">{$dueDate}</font></td>\n </tr>\n <tr>\n <td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n {if $contribution_status_id == $refundedStatusId || $contribution_status_id == $cancelledStatusId}\n <table style = \"margin-top:2px;padding-left:7px;page-break-before: always;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/civi99.png\" height = \"34px\" width = \"99px\"></td>\n </tr>\n </table>\n <center>\n\n <table style = \"padding-right:19px;font-family: Arial, Verdana, sans-serif\" width = \"500\" height = \"100\" border = \"0\" cellpadding = \"2\" cellspacing = \"1\">\n <tr>\n <td style = \"padding-left:15px;\" ><b><font size = \"4\" align = \"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Date:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\">{$domain_organization}</font></td>\n </tr>\n <tr>\n {if $organization_name}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$display_name} ({$organization_name})</font></td>\n {else}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$display_name}</font></td>\n {/if}\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_date}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_street_address }{$domain_street_address}{/if}\n {if $domain_supplemental_address_1 }{$domain_supplemental_address_1}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_supplemental_address_2 }{$domain_supplemental_address_2}{/if}\n {if $domain_state }{$domain_state}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td colspan=\"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$creditnote_id}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_city}{$domain_city}{/if}\n {if $domain_postal_code }{$domain_postal_code}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"right\">{$city} {$postal_code}</font></td>\n <td colspan=\"1\"></td>\n <td height = \"10\" style = \"padding-left:70px;\"><b><font size = \"1\"align = \"right\">{ts}Reference:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_country}{$domain_country}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td style = \"padding-left:70px;\"><font size = \"1\"align = \"right\">{$source}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_phone}{$domain_phone}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_email}{$domain_email}{/if}\n </font>\n </td>\n </tr>\n </table>\n\n <table style = \"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width = \"590\" border = \"0\"cellpadding = \"-5\" cellspacing = \"19\" id = \"desc\">\n <tr>\n <td colspan = \"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th style = \"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size = \"1\">{ts}Description{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Quantity{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Unit Price{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{$taxTerm} </font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts 1=$defaultCurrency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItem item=value key=priceset name=pricevalue}\n {if $smarty.foreach.pricevalue.index eq 0}\n <tr><td colspan = \"5\" ><hr size=\"3\" style = \"color:#000;\"></hr></td></tr>\n {else}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n {/if}\n <tr>\n <td style =\"text-align:left;\" >\n <font size = \"1\">\n {if $value.html_type eq \'Text\'}\n {$value.label}\n {else}\n {$value.field_title} - {$value.label}\n {/if}\n {if $value.description}\n <div>{$value.description|truncate:30:\"...\"}</div>\n {/if}\n </font>\n </td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.qty}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.unit_price|crmMoney:$currency}</font></td>\n {if $value.tax_amount != \'\'}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.tax_rate}%</font></td>\n {else}\n <td style = \"padding-left:28px;text-align:right\"><font size = \"1\" >{ts 1=$taxTerm}No %1{/ts}</font></td>\n {/if}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" >{$value.subTotal|crmMoney:$currency}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{ts}Sub Total{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from = $dataArray item = value key = priceset}\n <tr>\n <td colspan = \"3\"></td>\n {if $priceset}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n {elseif $priceset == 0}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{ts 1=$taxTerm}TOTAL NO %1{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{ts 1=$defaultCurrency}TOTAL %1{/ts}</font></b></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {if $is_pay_later == 0}\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" >{ts}LESS Credit to invoice(s){/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\" ><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style = \"padding-left:28px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan = \"3\"></td>\n </tr>\n <tr>\n <td></td>\n <td colspan = \"3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n <table style = \"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/contribute/cut_line.png\" height = \"15\" width = \"630\"></td>\n </tr>\n </table>\n\n <table style = \"margin-top:6px;padding-right:20px;font-family: Arial, Verdana, sans-serif\" width = \"507\" border = \"0\"cellpadding = \"-5\" cellspacing=\"19\" id = \"desc\">\n <tr>\n <td width=\"60%\"><font size = \"4\" align = \"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n <td width=\"40%\">\n <table align=\"right\" >\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts} </font></td>\n <td><font size = \"1\" align = \"right\" >{$display_name}</font></td>\n </tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts} </font></td>\n <td><font size = \"1\" align = \"right\">{$creditnote_id}</font></td>\n </tr>\n <tr><td colspan = \"5\"style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n <td width=\'50px\'><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n </center>\n </body>\n</html>\n',1,809,0,1,0,NULL),(11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts}\n','{ts 1=$displayName}Dear %1{/ts},\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you for your support.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$displayName}Dear %1{/ts},</p>\n </td>\n </tr>\n\n <tr>\n <td> </td>\n </tr>\n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {else}\n <tr>\n <td>\n <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n </td>\n </tr>\n {else}\n <tr>\n <td>\n <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you for your support.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_start_date|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_end_date|crmDate}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n {/if}\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,810,1,0,0,NULL),(12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts}\n','{ts 1=$displayName}Dear %1{/ts},\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you for your support.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$displayName}Dear %1{/ts},</p>\n </td>\n </tr>\n\n <tr>\n <td> </td>\n </tr>\n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {else}\n <tr>\n <td>\n <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n </td>\n </tr>\n {else}\n <tr>\n <td>\n <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you for your support.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_start_date|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_end_date|crmDate}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n {/if}\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,810,0,1,0,NULL),(13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,811,1,0,0,NULL),(14,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,811,0,1,0,NULL),(15,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n <table width=\"500\" style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n<tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>',1,812,1,0,0,NULL),(16,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n <table width=\"500\" style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n<tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>',1,812,0,1,0,NULL),(17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts}Your recurring contribution has been updated as requested:{/ts}\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,813,1,0,0,NULL),(18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts}Your recurring contribution has been updated as requested:{/ts}\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,813,0,1,0,NULL),(19,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1}{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page Notification{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Action{/ts}:\n </td>\n <td {$valueStyle}>\n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Personal Campaign Page Title{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpTitle}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Current Status{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpStatus}\n </td>\n </tr>\n\n <tr>\n <td {$labelStyle}>\n <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n </td>\n <td></td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Supporter{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$supporterUrl}\">{$supporterName}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Linked to Contribution Page{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n </td>\n <td></td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,814,1,0,0,NULL),(20,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1}{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page Notification{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Action{/ts}:\n </td>\n <td {$valueStyle}>\n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Personal Campaign Page Title{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpTitle}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Current Status{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpStatus}\n </td>\n </tr>\n\n <tr>\n <td {$labelStyle}>\n <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n </td>\n <td></td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Supporter{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$supporterUrl}\">{$supporterName}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Linked to Contribution Page{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n </td>\n <td></td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,814,0,1,0,NULL),(21,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n {if $pcpStatus eq \'Approved\'}\n\n <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n {if $isTellFriendEnabled}\n <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n {if $pcpNotifyEmailAddress}\n <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {/if}\n\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,815,1,0,0,NULL),(22,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n {if $pcpStatus eq \'Approved\'}\n\n <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n {if $isTellFriendEnabled}\n <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n {if $pcpNotifyEmailAddress}\n <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {/if}\n\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,815,0,1,0,NULL),(23,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts}\n','{ts}Dear supporter{/ts},\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts}Dear supporter{/ts},</p>\n <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n </td>\n </tr>\n\n {if $pcpStatus eq \'Approved\'}\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Promoting Your Page{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if $isTellFriendEnabled}\n <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n </ol>\n {else}\n <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Managing Your Page{/ts}\n </th>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n </td>\n </tr>\n </tr>\n </table>\n </td>\n </tr>\n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n <tr>\n <td>\n <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n </ol>\n </td>\n </tr>\n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <tr>\n <td>\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n </td>\n </tr>\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,816,1,0,0,NULL),(24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts}\n','{ts}Dear supporter{/ts},\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts}Dear supporter{/ts},</p>\n <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n </td>\n </tr>\n\n {if $pcpStatus eq \'Approved\'}\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Promoting Your Page{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if $isTellFriendEnabled}\n <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n </ol>\n {else}\n <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Managing Your Page{/ts}\n </th>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n </td>\n </tr>\n </tr>\n </table>\n </td>\n </tr>\n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n <tr>\n <td>\n <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n </ol>\n </td>\n </tr>\n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <tr>\n <td>\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n </td>\n </tr>\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,816,0,1,0,NULL),(25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\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}Received{/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 <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 width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n <tr><td>{ts}Received{/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,817,1,0,0,NULL),(26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\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}Received{/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 <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 width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n <tr><td>{ts}Received{/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,817,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}','Dear {$contactDisplayName}\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}A payment has been received.{/ts}\n{/if}\n\n{ts}Please print this confirmation for your records.{/ts}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}Total Fees{/ts}: {$totalAmount|crmMoney}\n{ts}You Paid{/ts}: {$totalPaid|crmMoney}\n------------------------------------------------------------------------------------\n{ts}Refund Amount{/ts}: {$refundAmount|crmMoney}\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}Total Fees{/ts}: {$totalAmount|crmMoney}\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney}\n------------------------------------------------------------------------------------\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney} {* This will be zero after final payment. *}\n\n{if $paymentsComplete}\n\n{ts}Thank you for completing payment.{/ts}\n{/if}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode eq \'direct\' and !$isAmountzero}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero}\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if $event.participant_role}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $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<p>Dear {$contactDisplayName}</p>\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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 {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}A payment has been received.{/ts}</p>\n {/if}\n <p>{ts}Please print this confirmation for your records.{/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 {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}You Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney}\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}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney}\n </td> {* This will be zero after final payment. *}\n </tr>\n <tr> <td {$emptyBlockStyle}></td>\n <td {$emptyBlockValueStyle}></td></tr>\n {if $paymentsComplete}\n <tr>\n <td colspan=\'2\' {$valueStyle}>\n {ts}Thank you for completing payment.{/ts}\n </td>\n </tr>\n {/if}\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 $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 $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 $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 </table>\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 $contributeMode eq \'direct\' and !$isAmountzero}\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 {if $contributeMode eq\'direct\' and !$isAmountzero}\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if $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 $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $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 </center>\n\n </body>\n</html>\n',1,818,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}','Dear {$contactDisplayName}\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}A payment has been received.{/ts}\n{/if}\n\n{ts}Please print this confirmation for your records.{/ts}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}Total Fees{/ts}: {$totalAmount|crmMoney}\n{ts}You Paid{/ts}: {$totalPaid|crmMoney}\n------------------------------------------------------------------------------------\n{ts}Refund Amount{/ts}: {$refundAmount|crmMoney}\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}Total Fees{/ts}: {$totalAmount|crmMoney}\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney}\n------------------------------------------------------------------------------------\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney} {* This will be zero after final payment. *}\n\n{if $paymentsComplete}\n\n{ts}Thank you for completing payment.{/ts}\n{/if}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode eq \'direct\' and !$isAmountzero}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero}\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if $event.participant_role}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $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<p>Dear {$contactDisplayName}</p>\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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 {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}A payment has been received.{/ts}</p>\n {/if}\n <p>{ts}Please print this confirmation for your records.{/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 {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}You Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney}\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}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney}\n </td> {* This will be zero after final payment. *}\n </tr>\n <tr> <td {$emptyBlockStyle}></td>\n <td {$emptyBlockValueStyle}></td></tr>\n {if $paymentsComplete}\n <tr>\n <td colspan=\'2\' {$valueStyle}>\n {ts}Thank you for completing payment.{/ts}\n </td>\n </tr>\n {/if}\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 $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 $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 $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 </table>\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 $contributeMode eq \'direct\' and !$isAmountzero}\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 {if $contributeMode eq\'direct\' and !$isAmountzero}\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if $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 $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $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 </center>\n\n </body>\n</html>\n',1,818,0,1,0,NULL),(29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {$event.title}\n','{contact.email_greeting}\n{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n{$event.confirm_email_text}\n{/if}\n\n{if $isOnWaitlist}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{else}\n\n{ts}Please print this confirmation for your records.{/ts}\n{/if}\n\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if $event.participant_role neq \'Attendee\' and $defaultRole}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $email}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$email}\n{/if}\n{if $event.is_monetary} {* This section for Paid events only.*}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.fee_label}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{if $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}\n{/if}\n{/if}\n---------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if $pricesetFieldsCount }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {$ts_participant_total|string_format:\"%10s\"}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{foreach from=$value item=line}\n{if $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 $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\"} {$ts_participant_count|string_format:\"%10s\"}\n{/foreach}\n{/if}\n{/foreach}\n\n{if $dataArray}\n{ts}Amount before Tax{/ts}: {$totalAmount-$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{/if}\n\n{if $amount && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if $isPrimary}\n\n{if $balanceAmount}{ts}Total Paid{/ts}{else}{ts}Total Amount{/ts}{/if}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n\n{if $balanceAmount}\n{ts}Balance{/ts}: {$balanceAmount|crmMoney}\n{/if}\n\n{if $pricesetFieldsCount }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later }\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $financialTypeName}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if $customPre}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if $customPost}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if $customProfile}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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>{contact.email_greeting}</p>\n\n {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n <p>{$event.confirm_email_text|htmlize}</p>\n {/if}\n\n {if $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 $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 $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\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.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if $event.participant_role neq \'Attendee\' and $defaultRole}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\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 File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n\n {if $event.is_monetary}\n\n <tr>\n <th {$headerStyle}>\n {$event.fee_label}\n </th>\n </tr>\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $isPrimary}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n {if $dataArray}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate != \"\" || $line.tax_amount != \"\"}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {if $pricesetFieldsCount }\n <td>\n {$line.participant_count}\n </td>\n {/if}\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}No{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if $amount && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {if $balanceAmount}\n {ts}Total Paid{/ts}\n {else}\n {ts}Total Amount{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if $balanceAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Balance{/ts}\n </td>\n <td {$valueStyle}>\n {$balanceAmount|crmMoney}\n </td>\n </tr>\n {/if}\n {if $pricesetFieldsCount }\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n {if $is_pay_later}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $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 $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 $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 $paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n\n {if $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 $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=value key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=value key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customProfile}\n {foreach from=$customProfile item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n </th>\n </tr>\n {foreach from=$value item=val key=field}\n {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {if $field eq \'additionalCustomPre\'}\n {$additionalCustomPre_grouptitle}\n {else}\n {$additionalCustomPost_grouptitle}\n {/if}\n </td>\n </tr>\n {foreach from=$val item=v key=f}\n <tr>\n <td {$labelStyle}>\n {$f}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/foreach}\n {/if}\n\n {if $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</center>\n\n</body>\n</html>\n',1,819,1,0,0,NULL),(30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {$event.title}\n','{contact.email_greeting}\n{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n{$event.confirm_email_text}\n{/if}\n\n{if $isOnWaitlist}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{else}\n\n{ts}Please print this confirmation for your records.{/ts}\n{/if}\n\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if $event.participant_role neq \'Attendee\' and $defaultRole}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $email}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$email}\n{/if}\n{if $event.is_monetary} {* This section for Paid events only.*}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.fee_label}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{if $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}\n{/if}\n{/if}\n---------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if $pricesetFieldsCount }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {$ts_participant_total|string_format:\"%10s\"}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{foreach from=$value item=line}\n{if $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 $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\"} {$ts_participant_count|string_format:\"%10s\"}\n{/foreach}\n{/if}\n{/foreach}\n\n{if $dataArray}\n{ts}Amount before Tax{/ts}: {$totalAmount-$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{/if}\n\n{if $amount && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if $isPrimary}\n\n{if $balanceAmount}{ts}Total Paid{/ts}{else}{ts}Total Amount{/ts}{/if}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n\n{if $balanceAmount}\n{ts}Balance{/ts}: {$balanceAmount|crmMoney}\n{/if}\n\n{if $pricesetFieldsCount }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later }\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $financialTypeName}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if $customPre}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if $customPost}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if $customProfile}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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>{contact.email_greeting}</p>\n\n {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n <p>{$event.confirm_email_text|htmlize}</p>\n {/if}\n\n {if $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 $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 $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\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.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if $event.participant_role neq \'Attendee\' and $defaultRole}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\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 File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n\n {if $event.is_monetary}\n\n <tr>\n <th {$headerStyle}>\n {$event.fee_label}\n </th>\n </tr>\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $isPrimary}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n {if $dataArray}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate != \"\" || $line.tax_amount != \"\"}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {if $pricesetFieldsCount }\n <td>\n {$line.participant_count}\n </td>\n {/if}\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}No{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if $amount && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {if $balanceAmount}\n {ts}Total Paid{/ts}\n {else}\n {ts}Total Amount{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if $balanceAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Balance{/ts}\n </td>\n <td {$valueStyle}>\n {$balanceAmount|crmMoney}\n </td>\n </tr>\n {/if}\n {if $pricesetFieldsCount }\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n {if $is_pay_later}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $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 $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 $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 $paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n\n {if $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 $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=value key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=value key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customProfile}\n {foreach from=$customProfile item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n </th>\n </tr>\n {foreach from=$value item=val key=field}\n {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {if $field eq \'additionalCustomPre\'}\n {$additionalCustomPre_grouptitle}\n {else}\n {$additionalCustomPost_grouptitle}\n {/if}\n </td>\n </tr>\n {foreach from=$val item=v key=f}\n <tr>\n <td {$labelStyle}>\n {$f}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/foreach}\n {/if}\n\n {if $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</center>\n\n</body>\n</html>\n',1,819,0,1,0,NULL),(31,'Events - Registration Confirmation and Receipt (on-line)','{if $isOnWaitlist}{ts}Wait List Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {$event.event_title}','{contact.email_greeting},\n\n{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your participation.{/ts}\n {if $participant_status}{ts 1=$participant_status}This letter is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if $isOnWaitlist}{ts}This letter is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This letter is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}.\n\n{/if}\n\n{if $isOnWaitlist}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{else}\n\n{ts}Please print this confirmation for your records.{/ts}\n{/if}\n\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|date_format:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|date_format:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if $event.participant_role neq \'Attendee\' and $defaultRole}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $payer.name}\nYou were registered by: {$payer.name}\n{/if}\n{if $event.is_monetary} {* This section for Paid events only.*}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.fee_label}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{if $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} {$part.$priceset.info}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if $pricesetFieldsCount }-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if $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 $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {$ts_participant_total|string_format:\"%10s\"}\n-----------------------------------------------------------{if $pricesetFieldsCount }-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if $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 $dataArray} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{$ts_participant_count|string_format:\"%10s\"}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if $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 $dataArray}\n{ts}Amount before Tax{/ts}: {$totalAmount-$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{/if}\n\n{if $amounts && !$lineItem}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if $isPrimary }\n\n{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n\n{if $pricesetFieldsCount }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $financialTypeName}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode ne \'notify\' and !$isAmountzero and (!$is_pay_later or $isBillingAddressRequiredForPayLater) and !$isOnWaitlist and !$isRequireApproval}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if $customPre}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $customPost}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if $customProfile}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $event.allow_selfcancelxfer }\n{ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n<center>\n <table width=\"700\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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>{contact.email_greeting},</p>\n\n {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n <p>{$event.confirm_email_text|htmlize}</p>\n\n {else}\n <p>{ts}Thank you for your participation.{/ts}\n {if $participant_status}{ts 1=$participant_status}This letter is a confirmation that your registration has been received and your status has been updated to <strong> %1</strong>.{/ts}\n {else}{if $isOnWaitlist}{ts}This letter is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This letter is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}.</p>\n\n {/if}\n\n <p>\n {if $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 $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 $is_pay_later && !$isAmountzero && !$isAdditionalParticipant}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table width=\"700\" style=\"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.event_title}<br />\n {$event.event_start_date|date_format:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|date_format:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n\n {if $event.participant_role neq \'Attendee\' and $defaultRole}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\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 File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $event.is_share}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id=`$event.id`&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl}\n </td>\n </tr>\n {/if}\n {if $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}\n\n <tr>\n <th {$headerStyle}>\n {$event.fee_label}\n </th>\n </tr>\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $isPrimary}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info}\n </td>\n </tr>\n {/if}\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td {$tdfirstStyle}>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td {$tdStyle} align=\"middle\">\n {$line.qty}\n </td>\n <td {$tdStyle}>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $dataArray}\n <td {$tdStyle}>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate != \"\" || $line.tax_amount != \"\"}\n <td {$tdStyle}>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td {$tdStyle}>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n {if $pricesetFieldsCount }<td {$tdStyle}>{$line.participant_count}</td> {/if}\n </tr>\n {/foreach}\n {if $individual}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount Before Tax: {/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}No{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if $amounts && !$lineItem}\n {foreach from=$amounts item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if $pricesetFieldsCount }\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td> </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $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 $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 $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 $paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n\n {if $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 $contributeMode ne \'notify\' and !$isAmountzero and (!$is_pay_later or $isBillingAddressRequiredForPayLater) and !$isOnWaitlist and !$isRequireApproval}\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n\n{if $customPre}\n{foreach from=$customPre item=customPr key=i}\n <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n {foreach from=$customPr item=customValue key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/if}\n {/foreach}\n{/foreach}\n{/if}\n\n{if $customPost}\n{foreach from=$customPost item=customPos key=j}\n <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n {foreach from=$customPos item=customValue key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $customProfile}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>{foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n </table>\n {if $event.allow_selfcancelxfer }\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,820,1,0,0,NULL),(32,'Events - Registration Confirmation and Receipt (on-line)','{if $isOnWaitlist}{ts}Wait List Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {$event.event_title}','{contact.email_greeting},\n\n{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your participation.{/ts}\n {if $participant_status}{ts 1=$participant_status}This letter is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if $isOnWaitlist}{ts}This letter is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This letter is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}.\n\n{/if}\n\n{if $isOnWaitlist}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{else}\n\n{ts}Please print this confirmation for your records.{/ts}\n{/if}\n\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|date_format:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|date_format:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if $event.participant_role neq \'Attendee\' and $defaultRole}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $payer.name}\nYou were registered by: {$payer.name}\n{/if}\n{if $event.is_monetary} {* This section for Paid events only.*}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.fee_label}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{if $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} {$part.$priceset.info}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if $pricesetFieldsCount }-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if $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 $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {$ts_participant_total|string_format:\"%10s\"}\n-----------------------------------------------------------{if $pricesetFieldsCount }-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if $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 $dataArray} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{$ts_participant_count|string_format:\"%10s\"}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if $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 $dataArray}\n{ts}Amount before Tax{/ts}: {$totalAmount-$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{/if}\n\n{if $amounts && !$lineItem}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if $isPrimary }\n\n{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n\n{if $pricesetFieldsCount }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $financialTypeName}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode ne \'notify\' and !$isAmountzero and (!$is_pay_later or $isBillingAddressRequiredForPayLater) and !$isOnWaitlist and !$isRequireApproval}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if $customPre}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $customPost}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if $customProfile}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $event.allow_selfcancelxfer }\n{ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n<center>\n <table width=\"700\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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>{contact.email_greeting},</p>\n\n {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n <p>{$event.confirm_email_text|htmlize}</p>\n\n {else}\n <p>{ts}Thank you for your participation.{/ts}\n {if $participant_status}{ts 1=$participant_status}This letter is a confirmation that your registration has been received and your status has been updated to <strong> %1</strong>.{/ts}\n {else}{if $isOnWaitlist}{ts}This letter is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This letter is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}.</p>\n\n {/if}\n\n <p>\n {if $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 $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 $is_pay_later && !$isAmountzero && !$isAdditionalParticipant}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table width=\"700\" style=\"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.event_title}<br />\n {$event.event_start_date|date_format:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|date_format:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n\n {if $event.participant_role neq \'Attendee\' and $defaultRole}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\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 File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $event.is_share}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id=`$event.id`&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl}\n </td>\n </tr>\n {/if}\n {if $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}\n\n <tr>\n <th {$headerStyle}>\n {$event.fee_label}\n </th>\n </tr>\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $isPrimary}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info}\n </td>\n </tr>\n {/if}\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td {$tdfirstStyle}>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td {$tdStyle} align=\"middle\">\n {$line.qty}\n </td>\n <td {$tdStyle}>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $dataArray}\n <td {$tdStyle}>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate != \"\" || $line.tax_amount != \"\"}\n <td {$tdStyle}>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td {$tdStyle}>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n {if $pricesetFieldsCount }<td {$tdStyle}>{$line.participant_count}</td> {/if}\n </tr>\n {/foreach}\n {if $individual}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount Before Tax: {/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}No{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if $amounts && !$lineItem}\n {foreach from=$amounts item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if $pricesetFieldsCount }\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td> </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $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 $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 $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 $paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n\n {if $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 $contributeMode ne \'notify\' and !$isAmountzero and (!$is_pay_later or $isBillingAddressRequiredForPayLater) and !$isOnWaitlist and !$isRequireApproval}\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n\n{if $customPre}\n{foreach from=$customPre item=customPr key=i}\n <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n {foreach from=$customPr item=customValue key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/if}\n {/foreach}\n{/foreach}\n{/if}\n\n{if $customPost}\n{foreach from=$customPost item=customPos key=j}\n <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n {foreach from=$customPos item=customValue key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $customProfile}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>{foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n </table>\n {if $event.allow_selfcancelxfer }\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,820,0,1,0,NULL),(33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if}\n','Dear {contact.display_name},\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 $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}. Please print this confirmation for your records.{if $line_items && !$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|date_format:\"%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 $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|date_format:\"%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|date_format:\"%D %I:%M %p\"} - {$line_item.event->end_date|date_format:\"%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 <p>Dear {contact.display_name},</p>\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 $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}. Please print this confirmation for your records.{if $line_items && !$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|date_format:\"%D %I:%M %p %Z\"}:</p>\n\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 $source}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"600\">\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|date_format:\"%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|date_format:\"%D %I:%M %p\"} - {$line_item.event->end_date|date_format:\"%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,821,1,0,0,NULL),(34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if}\n','Dear {contact.display_name},\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 $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}. Please print this confirmation for your records.{if $line_items && !$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|date_format:\"%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 $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|date_format:\"%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|date_format:\"%D %I:%M %p\"} - {$line_item.event->end_date|date_format:\"%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 <p>Dear {contact.display_name},</p>\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 $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}. Please print this confirmation for your records.{if $line_items && !$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|date_format:\"%D %I:%M %p %Z\"}:</p>\n\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 $source}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"600\">\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|date_format:\"%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|date_format:\"%D %I:%M %p\"} - {$line_item.event->end_date|date_format:\"%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,821,0,1,0,NULL),(35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,822,1,0,0,NULL),(36,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,822,0,1,0,NULL),(37,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer }\n{ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|date_format:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n </td>\n </tr>\n {if !$isAdditional and $participant.id}\n <tr>\n <th {$headerStyle}>\n {ts}Confirm Your Registration{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <a href=\"{$confirmUrl}\">Go to a web page where you can confirm your registration online</a>\n </td>\n </tr>\n {/if}\n {if $event.allow_selfcancelxfer }\n This event allows for self-cancel or transfer\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participantID`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Self service cancel transfer{/ts}</a>\n {/if}\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|date_format:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {if $event.allow_selfcancelxfer }\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,823,1,0,0,NULL),(38,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer }\n{ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|date_format:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n </td>\n </tr>\n {if !$isAdditional and $participant.id}\n <tr>\n <th {$headerStyle}>\n {ts}Confirm Your Registration{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <a href=\"{$confirmUrl}\">Go to a web page where you can confirm your registration online</a>\n </td>\n </tr>\n {/if}\n {if $event.allow_selfcancelxfer }\n This event allows for self-cancel or transfer\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participantID`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Self service cancel transfer{/ts}</a>\n {/if}\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|date_format:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {if $event.allow_selfcancelxfer }\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,823,0,1,0,NULL),(39,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,824,1,0,0,NULL),(40,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,824,0,1,0,NULL),(41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,825,1,0,0,NULL),(42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,825,0,1,0,NULL),(43,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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</center>\n\n</body>\n</html>\n',1,826,1,0,0,NULL),(44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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</center>\n\n</body>\n</html>\n',1,826,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}\n','{if $formValues.receipt_text_signup}\n{$formValues.receipt_text_signup}\n{elseif $formValues.receipt_text_renewal}\n{$formValues.receipt_text_renewal}\n{else}{ts}Thank you for your support.{/ts}{/if}\n\n{if ! $cancelled}{ts}Please print this receipt for your records.{/ts}\n\n\n{/if}\n{if !$lineItem}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{/if}\n{if ! $cancelled}\n{if !$lineItem}\n{ts}Membership Start Date{/ts}: {$mem_start_date}\n{ts}Membership End Date{/ts}: {$mem_end_date}\n{/if}\n\n{if $formValues.total_amount OR $formValues.total_amount eq 0 }\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if $formValues.contributionType_name}\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{/if}\n{if $lineItem}\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 $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 End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $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 $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 $dataArray}\n{ts}Amount before Tax{/ts}: {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset}\n{$taxTerm} {$priceset|string_format:\"%.2f\"} %: {$value|crmMoney:$currency}\n{elseif $priceset == 0}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$formValues.total_amount|crmMoney}\n{if $receive_date}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $formValues.paidBy}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if $formValues.check_number}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if $isPrimary }\n{if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later }\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later}\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 $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\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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 {if $formValues.receipt_text_signup}\n <p>{$formValues.receipt_text_signup|htmlize}</p>\n {elseif $formValues.receipt_text_renewal}\n <p>{$formValues.receipt_text_renewal|htmlize}</p>\n {else}\n <p>{ts}Thank you for your support.{/ts}</p>\n {/if}\n {if ! $cancelled}\n <p>{ts}Please print this receipt for your records.{/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 !$lineItem}\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}\n {if ! $cancelled}\n {if !$lineItem}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date}\n </td>\n </tr>\n {/if}\n {if $formValues.total_amount OR $formValues.total_amount eq 0 }\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n {if $formValues.contributionType_name}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.contributionType_name}\n </td>\n </tr>\n {/if}\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $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 End 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 $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 $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {elseif $priceset == 0}\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 isset($totalTaxAmount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount|crmMoney}\n </td>\n </tr>\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Date Received{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $formValues.paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.paidBy}\n </td>\n </tr>\n {if $formValues.check_number}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n {/if}\n {/if}\n </table>\n </td>\n </tr>\n\n {if $isPrimary}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n {if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later }\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later}\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 $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</center>\n\n</body>\n</html>\n',1,827,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}\n','{if $formValues.receipt_text_signup}\n{$formValues.receipt_text_signup}\n{elseif $formValues.receipt_text_renewal}\n{$formValues.receipt_text_renewal}\n{else}{ts}Thank you for your support.{/ts}{/if}\n\n{if ! $cancelled}{ts}Please print this receipt for your records.{/ts}\n\n\n{/if}\n{if !$lineItem}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{/if}\n{if ! $cancelled}\n{if !$lineItem}\n{ts}Membership Start Date{/ts}: {$mem_start_date}\n{ts}Membership End Date{/ts}: {$mem_end_date}\n{/if}\n\n{if $formValues.total_amount OR $formValues.total_amount eq 0 }\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if $formValues.contributionType_name}\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{/if}\n{if $lineItem}\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 $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 End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $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 $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 $dataArray}\n{ts}Amount before Tax{/ts}: {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset}\n{$taxTerm} {$priceset|string_format:\"%.2f\"} %: {$value|crmMoney:$currency}\n{elseif $priceset == 0}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$formValues.total_amount|crmMoney}\n{if $receive_date}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $formValues.paidBy}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if $formValues.check_number}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if $isPrimary }\n{if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later }\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later}\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 $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\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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 {if $formValues.receipt_text_signup}\n <p>{$formValues.receipt_text_signup|htmlize}</p>\n {elseif $formValues.receipt_text_renewal}\n <p>{$formValues.receipt_text_renewal|htmlize}</p>\n {else}\n <p>{ts}Thank you for your support.{/ts}</p>\n {/if}\n {if ! $cancelled}\n <p>{ts}Please print this receipt for your records.{/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 !$lineItem}\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}\n {if ! $cancelled}\n {if !$lineItem}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date}\n </td>\n </tr>\n {/if}\n {if $formValues.total_amount OR $formValues.total_amount eq 0 }\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n {if $formValues.contributionType_name}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.contributionType_name}\n </td>\n </tr>\n {/if}\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $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 End 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 $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 $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {elseif $priceset == 0}\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 isset($totalTaxAmount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount|crmMoney}\n </td>\n </tr>\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Date Received{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $formValues.paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.paidBy}\n </td>\n </tr>\n {if $formValues.check_number}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n {/if}\n {/if}\n </table>\n </td>\n </tr>\n\n {if $isPrimary}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n {if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later }\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later}\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 $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</center>\n\n</body>\n</html>\n',1,827,0,1,0,NULL),(47,'Memberships - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title}\n','{if $receipt_text}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{else}\n\n{ts}Please print this receipt for your records.{/ts}\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 End 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 && $membership_amount && $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 && $lineItem and $priceSetID & !$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 && !$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 $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 End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $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 $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 $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 $amount_level } - {$amount_level} {/if}\n{/if}\n{elseif $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 $receive_date}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $is_monetary and $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if $membership_trx_id}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if $is_recur}\n{if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\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{/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 $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 $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 !( $contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\' ) and $is_monetary}\n{if $is_pay_later}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{elseif $amount GT 0 OR $membership_amount GT 0 }\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{/if} {* End ! is_pay_later condition. *}\n{/if}\n{if $contributeMode eq \'direct\' AND !$is_pay_later AND ( $amount GT 0 OR $membership_amount GT 0 ) }\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 $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 $contact_email OR $contact_phone}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if $contact_email}\n {$contact_email}\n{/if}\n{if $contact_phone}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND $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 $customPre}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if $customPost}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n {if $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 {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n </table>\n <table width=\"500\" style=\"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 End 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 $membership_amount and $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 !$useForMember && $lineItem and $priceSetID and !$is_quick_config}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\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 !$is_quick_config}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $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 End 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 $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 $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 $amount_level} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif $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 $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 $is_monetary and $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 $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 $is_recur}\n {if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\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 {/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 $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 $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 ! ($contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\') and $is_monetary}\n {if $is_pay_later}\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 {elseif $amount GT 0 OR $membership_amount GT 0}\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 {/if}\n {/if}\n\n {if $contributeMode eq \'direct\' AND !$is_pay_later AND ($amount GT 0 OR $membership_amount GT 0)}\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 $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 $contact_email OR $contact_phone}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if $contact_email}\n <p>{$contact_email}</p>\n {/if}\n {if $contact_phone}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND $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 $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $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</center>\n\n</body>\n</html>\n',1,828,1,0,0,NULL),(48,'Memberships - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title}\n','{if $receipt_text}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{else}\n\n{ts}Please print this receipt for your records.{/ts}\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 End 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 && $membership_amount && $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 && $lineItem and $priceSetID & !$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 && !$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 $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 End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $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 $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 $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 $amount_level } - {$amount_level} {/if}\n{/if}\n{elseif $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 $receive_date}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $is_monetary and $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if $membership_trx_id}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if $is_recur}\n{if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\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{/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 $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 $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 !( $contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\' ) and $is_monetary}\n{if $is_pay_later}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{elseif $amount GT 0 OR $membership_amount GT 0 }\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{/if} {* End ! is_pay_later condition. *}\n{/if}\n{if $contributeMode eq \'direct\' AND !$is_pay_later AND ( $amount GT 0 OR $membership_amount GT 0 ) }\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 $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 $contact_email OR $contact_phone}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if $contact_email}\n {$contact_email}\n{/if}\n{if $contact_phone}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND $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 $customPre}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if $customPost}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n {if $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 {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n </table>\n <table width=\"500\" style=\"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 End 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 $membership_amount and $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 !$useForMember && $lineItem and $priceSetID and !$is_quick_config}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\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 !$is_quick_config}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $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 End 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 $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 $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 $amount_level} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif $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 $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 $is_monetary and $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 $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 $is_recur}\n {if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\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 {/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 $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 $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 ! ($contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\') and $is_monetary}\n {if $is_pay_later}\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 {elseif $amount GT 0 OR $membership_amount GT 0}\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 {/if}\n {/if}\n\n {if $contributeMode eq \'direct\' AND !$is_pay_later AND ($amount GT 0 OR $membership_amount GT 0)}\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 $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 $contact_email OR $contact_phone}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if $contact_email}\n <p>{$contact_email}</p>\n {/if}\n {if $contact_phone}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND $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 $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $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</center>\n\n</body>\n</html>\n',1,828,0,1,0,NULL),(49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts}\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 End 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<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n <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 width=\"500\" style=\"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 End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,829,1,0,0,NULL),(50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts}\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 End 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<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n <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 width=\"500\" style=\"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 End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,829,0,1,0,NULL),(51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\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}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\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 width=\"500\" style=\"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</center>\n\n</body>\n</html>\n',1,830,1,0,0,NULL),(52,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\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}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\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 width=\"500\" style=\"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</center>\n\n</body>\n</html>\n',1,830,0,1,0,NULL),(53,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n','<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left\">\n <tr>\n <td>\n <p>{ts}Test-drive Email / Receipt{/ts}</p>\n <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n </td>\n </tr>\n </table>\n</center>\n',1,831,1,0,0,NULL),(54,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n','<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left\">\n <tr>\n <td>\n <p>{ts}Test-drive Email / Receipt{/ts}</p>\n <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n </td>\n </tr>\n </table>\n</center>\n',1,831,0,1,0,NULL),(55,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts}Thank you for your generous pledge. Please print this acknowledgment for your records.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}dear %1{/ts},</p>\n <p>{ts}thank you for your generous pledge. please print this acknowledgment for your records.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$total_pledge_amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Payment Schedule{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}</p>\n\n {if $frequency_day}\n <p>{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}</p>\n {/if}\n </td>\n </tr>\n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n <tr>\n <td {$labelStyle}>\n {ts 1=$count}Payment %1{/ts}\n </td>\n <td {$valueStyle}>\n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n </td>\n </tr>\n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n </td>\n </tr>\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,832,1,0,0,NULL),(56,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts}Thank you for your generous pledge. Please print this acknowledgment for your records.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}dear %1{/ts},</p>\n <p>{ts}thank you for your generous pledge. please print this acknowledgment for your records.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$total_pledge_amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Payment Schedule{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}</p>\n\n {if $frequency_day}\n <p>{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}</p>\n {/if}\n </td>\n </tr>\n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n <tr>\n <td {$labelStyle}>\n {ts 1=$count}Payment %1{/ts}\n </td>\n <td {$valueStyle}>\n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n </td>\n </tr>\n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n </td>\n </tr>\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,832,0,1,0,NULL),(57,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`$contact.contact_id`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{$domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank your for your generous support.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Payment Due{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Amount Due{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_due|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`$contact.contact_id`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0}{/capture}\n <p><a href=\"{$contributionUrl}\">{ts}Go to a web page where you can make your payment online{/ts}</a></p>\n {else}\n <p>{ts}Please mail your payment to{/ts}: {$domain.address}</p>\n {/if}\n </td>\n </tr>\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_paid|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n <p>{ts}Thank your for your generous support.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,833,1,0,0,NULL),(58,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`$contact.contact_id`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{$domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank your for your generous support.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Payment Due{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Amount Due{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_due|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`$contact.contact_id`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0}{/capture}\n <p><a href=\"{$contributionUrl}\">{ts}Go to a web page where you can make your payment online{/ts}</a></p>\n {else}\n <p>{ts}Please mail your payment to{/ts}: {$domain.address}</p>\n {/if}\n </td>\n </tr>\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_paid|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n <p>{ts}Thank your for your generous support.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,833,0,1,0,NULL),(59,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Submitted For{/ts}\n </td>\n <td {$valueStyle}>\n {$displayName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$currentDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contact Summary{/ts}\n </td>\n <td {$valueStyle}>\n {$contactLink}\n </td>\n </tr>\n\n <tr>\n <th {$headerStyle}>\n {$grouptitle}\n </th>\n </tr>\n\n {foreach from=$values item=value key=valueName}\n <tr>\n <td {$labelStyle}>\n {$valueName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,834,1,0,0,NULL),(60,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Submitted For{/ts}\n </td>\n <td {$valueStyle}>\n {$displayName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$currentDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contact Summary{/ts}\n </td>\n <td {$valueStyle}>\n {$contactLink}\n </td>\n </tr>\n\n <tr>\n <th {$headerStyle}>\n {$grouptitle}\n </th>\n </tr>\n\n {foreach from=$values item=value key=valueName}\n <tr>\n <td {$labelStyle}>\n {$valueName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,834,0,1,0,NULL),(61,'Petition - signature added','Thank you for signing {$petition.title}','Thank you for signing {$petition.title}.\n','<p>Thank you for signing {$petition.title}.</p>\n\n{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,835,1,0,0,NULL),(62,'Petition - signature added','Thank you for signing {$petition.title}','Thank you for signing {$petition.title}.\n','<p>Thank you for signing {$petition.title}.</p>\n\n{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,835,0,1,0,NULL),(63,'Petition - need verification','Confirmation of signature needed for {$petition.title}\n','Thank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl} \">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,836,1,0,0,NULL),(64,'Petition - need verification','Confirmation of signature needed for {$petition.title}\n','Thank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl} \">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,836,0,1,0,NULL),(65,'Sample CiviMail Newsletter Template','Sample CiviMail Newsletter','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n<table width=612 cellpadding=0 cellspacing=0 bgcolor=\"#ffffff\">\n <tr>\n <td colspan=\"2\" bgcolor=\"#ffffff\" valign=\"middle\" >\n <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" >\n <tr>\n <td>\n <a href=\"https://civicrm.org\"><img src=\"https://civicrm.org/sites/civicrm.org/files/top-logo_2.png\" border=0 alt=\"Replace this logo with the URL to your own\"></a>\n </td>\n <td> </td>\n <td>\n <a href=\"https://civicrm.org\" style=\"text-decoration: none;\"><font size=5 face=\"Arial, Verdana, sans-serif\" color=\"#8bc539\">Your Newsletter Title</font></a>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td valign=\"top\" width=\"70%\">\n <!-- left column -->\n <table cellpadding=\"10\" cellspacing=\"0\" border=\"0\">\n <tr>\n <td style=\"font-family: Arial, Verdana, sans-serif; font-size: 12px;\" >\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n Greetings {contact.display_name},\n <br /><br />\n This is a sample template designed to help you get started creating and sending your own CiviMail messages. This template uses an HTML layout that is generally compatible with the wide variety of email clients that your recipients might be using (e.g. Gmail, Outlook, Yahoo, etc.).\n <br /><br />You can select this \"Sample CiviMail Newsletter Template\" from the \"Use Template\" drop-down in Step 3 of creating a mailing, and customize it to your needs. Then check the \"Save as New Template\" box on the bottom the page to save your customized version for use in future mailings.\n <br /><br />The logo you use must be uploaded to your server. Copy and paste the URL path to the logo into the <img src= tag in the HTML at the top. Click \"Source\" or the Image button if you are using the text editor.\n <br /><br />\n Edit the color of the links and headers using the color button or by editing the HTML.\n <br /><br />\n Your newsletter message and donation appeal can go here. Click the link button to <a href=\"#\">create links</a> - remember to use a fully qualified URL starting with http:// in all your links!\n <br /><br />\n To use CiviMail:\n <ul>\n <li><a href=\"http://book.civicrm.org/user/advanced-configuration/email-system-configuration/\">Configure your Email System</a>.</li>\n <li>Make sure your web hosting provider allows outgoing bulk mail, and see if they have a restriction on quantity. If they don\'t allow bulk mail, consider <a href=\"https://civicrm.org/providers/hosting\">finding a new host</a>.</li>\n </ul>\n Sincerely,\n <br /><br />\n Your Team\n <br /><br />\n </font>\n </td>\n </tr>\n </table>\n </td>\n\n <td valign=\"top\" width=\"30%\" bgcolor=\"#ffffff\" style=\"border: 1px solid #056085;\">\n <!-- right column -->\n <table cellpadding=10 cellspacing=0 border=0>\n <tr>\n <td bgcolor=\"#056085\"><font face=\"Arial, Verdana, sans-serif\" size=\"4\" color=\"#ffffff\">News and Events</font></td>\n </tr>\n <tr>\n <td style=\"color: #000; font-family: Arial, Verdana, sans-serif; font-size: 12px;\" >\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n <font color=\"#056085\"><strong>Featured Events</strong> </font><br />\n Fundraising Dinner<br />\n Training Meeting<br />\n Board of Directors Annual Meeting<br />\n\n <br /><br />\n <font color=\"#056085\"><strong>Community Events</strong></font><br />\n Bake Sale<br />\n Charity Auction<br />\n Art Exhibit<br />\n\n <br /><br />\n <font color=\"#056085\"><strong>Important Dates</strong></font><br />\n Tuesday August 27<br />\n Wednesday September 8<br />\n Thursday September 29<br />\n Saturday October 1<br />\n Sunday October 20<br />\n </font>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td colspan=\"2\">\n <table cellpadding=\"10\" cellspacing=\"0\" border=\"0\">\n <tr>\n <td>\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n <font color=\"#7dc857\"><strong>Helpful Tips</strong></font>\n <br /><br />\n <font color=\"#3b5187\">Tokens</font><br />\n Click \"Insert Tokens\" to dynamically insert names, addresses, and other contact data of your recipients.\n <br /><br />\n <font color=\"#3b5187\">Plain Text Version</font><br />\n Some people refuse HTML emails altogether. We recommend sending a plain-text version of your important communications to accommodate them. Luckily, CiviCRM accommodates for this! Just click \"Plain Text\" and copy and paste in some text. Line breaks (carriage returns) and fully qualified URLs like http://www.example.com are all you get, no HTML here!\n <br /><br />\n <font color=\"#3b5187\">Play by the Rules</font><br />\n The address of the sender is required by the Can Spam Act law. This is an available token called domain.address. An unsubscribe or opt-out link is also required. There are several available tokens for this. <em>{action.optOutUrl}</em> creates a link for recipients to click if they want to opt out of receiving emails from your organization. <em>{action.unsubscribeUrl}</em> creates a link to unsubscribe from the specific mailing list used to send this message. Click on \"Insert Tokens\" to find these and look for tokens named \"Domain\" or \"Unsubscribe\". This sample template includes both required tokens at the bottom of the message. You can also configure a default Mailing Footer containing these tokens.\n <br /><br />\n <font color=\"#3b5187\">Composing Offline</font><br />\n If you prefer to compose an HTML email offline in your own text editor, you can upload this HTML content into CiviMail or simply click \"Source\" and then copy and paste the HTML in.\n <br /><br />\n <font color=\"#3b5187\">Images</font><br />\n Most email clients these days (Outlook, Gmail, etc) block image loading by default. This is to protect their users from annoying or harmful email. Not much we can do about this, so encourage recipients to add you to their contacts or \"whitelist\". Also use images sparingly, do not rely on images to convey vital information, and always use HTML \"alt\" tags which describe the image content.\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" style=\"color: #000; font-family: Arial, Verdana, sans-serif; font-size: 10px;\">\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n <hr />\n <a href=\"{action.unsubscribeUrl}\" title=\"click to unsubscribe\">Click here</a> to unsubscribe from this mailing list.<br /><br />\n Our mailing address is:<br />\n {domain.address}\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n',1,NULL,1,0,0,NULL),(66,'Sample Responsive Design Newsletter - Single Column Template','Sample Responsive Design Newsletter - Single Column','','<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n <title></title>\n\n <style type=\"text/css\">\n {literal}\n /* Client-specific Styles */\n #outlook a {padding:0;} /* Force Outlook to provide a \"view in browser\" menu link. */\n body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}\n\n /* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */\n .ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */\n .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing. */\n #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}\n img {outline:none; text-decoration:none;border:none; -ms-interpolation-mode: bicubic;}\n a img {border:none;}\n .image_fix {display:block;}\n p {margin: 0px 0px !important;}\n table td {border-collapse: collapse;}\n table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }\n a {text-decoration: none;text-decoration:none;}\n\n /*STYLES*/\n table[class=full] { width: 100%; clear: both; }\n\n /*IPAD STYLES*/\n @media only screen and (max-width: 640px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color:#136388;pointer-events: auto;cursor: default;}\n table[class=devicewidth] {width: 440px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 416px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 416px!important;text-align:center!important;}\n img[class=banner] {width: 440px!important;auto!important;}\n img[class=col2img] {width: 440px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 100px!important;}\n table[class=\"col3img\"] {width: 131px!important;}\n img[class=\"col3img\"] {width: 131px!important;height: auto!important;}\n table[class=\"removeMobile\"]{width:10px!important;}\n img[class=\"blog\"] {width: 440px!important;height: auto!important;}\n }\n\n /*IPHONE STYLES*/\n @media only screen and (max-width: 480px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #136388;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: auto;cursor: default;}\n\n table[class=devicewidth] {width: 280px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 260px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 260px!important;text-align:center!important;}\n img[class=banner] {width: 280px!important;height:100px!important;}\n img[class=col2img] {width: 280px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 260px!important;}\n img[class=\"col3img\"] {width: 280px!important;height: auto!important;}\n table[class=\"col3img\"] {width: 280px!important;}\n img[class=\"blog\"] {width: 280px!important;auto!important;}\n td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}\n }\n\n @media only screen and (max-device-width: 800px)\n {td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}}\n @media only screen and (max-device-width: 769px) {\n .devicewidthmob {font-size:16px;}\n }\n\n @media only screen and (max-width: 640px) {\n .desktop-spacer {display:none !important;}\n }\n {/literal}\n </style>\n\n<body>\n <!-- Start of preheader --><!-- Start of preheader -->\n <table bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"310\">\n <tbody>\n <tr>\n <td align=\"left\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; line-height:120%; color: #f8f8f8;padding-left:15px; padding-bottom:5px;\" valign=\"middle\">Organization or Program Name Here</td>\n </tr>\n </tbody>\n </table>\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"emhide\" width=\"310\">\n <tbody>\n <tr>\n <td align=\"right\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px;color: #f8f8f8;padding-right:15px; text-align:right;\" valign=\"middle\">Month and Year</td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- End of main-banner-->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"93%\">\n <tbody>\n <tr>\n <td rowspan=\"2\" style=\"padding-top:10px; padding-bottom:10px;\" width=\"38%\"><img src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/civicrm-logo-transparent.png\" alt=\"Replace with your own logo\" width=\"220\" border=\"0\" /></td>\n <td align=\"right\" width=\"62%\">\n <h6 class=\"collapse\"> </h6>\n </td>\n </tr>\n <tr>\n <td align=\"right\">\n <h5 style=\"font-family: Gill Sans, Gill Sans MT, Myriad Pro, DejaVu Sans Condensed, Helvetica, Arial, sans-serif; color:#136388;\"> </h5>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 23px; color:#f8f8f8; text-align:left; line-height: 32px; padding:5px 15px; background-color:#136388;\">Headline Here</td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- hero story -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/650x396.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /hero image --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 26px; padding:0 15px; color:#89c66b;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading Here</a></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td style=\"padding:0 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">{contact.email_greeting}, </p>\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></p>\n </td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n </tr>\n <!-- /button --><!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- end of hero image and story --><!-- story 1 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"250\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 26px; padding:0 15px;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading Here</a></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td style=\"padding:0 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n </td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n </tr>\n <!-- /button --><!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story 2--><!-- banner1 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- content --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"padding:15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n </td>\n </tr>\n <!-- /button --><!-- white button -->\n <!-- /button --><!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /banner 1--><!-- banner 2 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#136388\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- content --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"padding: 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Remember to link the facebook and twitter links below to your pages!</p>\n </td>\n </tr>\n <!-- /button --><!-- white button -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-bottom:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#ffffff;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n </tr>\n <!-- /button --><!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /banner2 --><!-- footer -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"footer\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td><!-- logo -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\n <tbody>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px;\"><a href=\"{action.unsubscribeUrl}\" style=\"color: #f0f0f0; \">Unsubscribe | </a><a href=\"{action.subscribeUrl}\" style=\"color: #f0f0f0;\">Subscribe |</a> <a href=\"{action.optOutUrl}\" style=\"color: #f0f0f0;\">Opt out</a></span></td>\n </tr>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px; color: #f0f0f0;\">{domain.address}</span></td>\n </tr>\n </tbody>\n </table>\n <!-- end of logo --><!-- start of social icons -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"40\" vaalign=\"middle\" width=\"60\">\n <tbody>\n <tr>\n <td align=\"left\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/facebook.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"10\"> </td>\n <td align=\"right\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/twitter.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"20\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of social icons --></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n\n</body>\n</html>\n',1,NULL,1,0,0,NULL),(67,'Sample Responsive Design Newsletter - Two Column Template','Sample Responsive Design Newsletter - Two Column','','<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n <title></title>\n <style type=\"text/css\">\n {literal}\n img {height: auto !important;}\n /* Client-specific Styles */\n #outlook a {padding:0;} /* Force Outlook to provide a \"view in browser\" menu link. */\n body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}\n\n /* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */\n .ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */\n .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing. */\n #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}\n img {outline:none; text-decoration:none;border:none; -ms-interpolation-mode: bicubic;}\n a img {border:none;}\n .image_fix {display:block;}\n p {margin: 0px 0px !important;}\n table td {border-collapse: collapse;}\n table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }\n a {/*color: #33b9ff;*/text-decoration: none;text-decoration:none!important;}\n\n\n /*STYLES*/\n table[class=full] { width: 100%; clear: both; }\n\n /*IPAD STYLES*/\n @media only screen and (max-width: 640px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #0a8cce;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color: #0a8cce !important;pointer-events: auto;cursor: default;}\n table[class=devicewidth] {width: 440px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 414px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 414px!important;text-align:center!important;}\n img[class=banner] {width: 440px!important;auto!important;}\n img[class=col2img] {width: 440px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 100px!important;}\n table[class=\"col3img\"] {width: 131px!important;}\n img[class=\"col3img\"] {width: 131px!important;height: auto!important;}\n table[class=\"removeMobile\"]{width:10px!important;}\n img[class=\"blog\"] {width: 440px!important;height: auto!important;}\n }\n\n /*IPHONE STYLES*/\n @media only screen and (max-width: 480px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #0a8cce;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color: #0a8cce !important; pointer-events: auto;cursor: default;}\n table[class=devicewidth] {width: 280px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 260px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 260px!important;text-align:center!important;}\n img[class=banner] {width: 280px!important;height:100px!important;}\n img[class=col2img] {width: 280px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 260px!important;}\n img[class=\"col3img\"] {width: 280px!important;height: auto!important;}\n table[class=\"col3img\"] {width: 280px!important;}\n img[class=\"blog\"] {width: 280px!important;auto!important;}\n td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}\n }\n\n @media only screen and (max-device-width: 800px)\n {td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}}\n @media only screen and (max-device-width: 769px) {.devicewidthmob {font-size:14px;}}\n\n @media only screen and (max-width: 640px) {.desktop-spacer {display:none !important;}\n }\n {/literal}\n </style>\n <body>\n <!-- Start of preheader --><!-- Start of preheader -->\n <table bgcolor=\"#0B4151\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"360\">\n <tbody>\n <tr>\n <td align=\"left\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height:120%; color: #f8f8f8;padding-left:15px;\" valign=\"middle\">Organization or Program Name Here</td>\n </tr>\n </tbody>\n </table>\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"emhide\" width=\"320\">\n <tbody>\n <tr>\n <td align=\"right\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px;color: #f8f8f8;padding-right:15px;\" valign=\"middle\">Month Year</td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- End of preheader --><!-- start of logo -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"93%\">\n <tbody>\n <tr>\n <td rowspan=\"2\" width=\"330\"><a href=\"#\"> <div class=\"imgpop\"><img src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/civicrm-logo-transparent.png\" alt=\"Replace with your own logo\" width=\"220\" border=\"0\" style=\"display:block;\"/></div></a></td>\n <td align=\"right\" >\n <h6 class=\"collapse\"> </h6>\n </td>\n </tr>\n <tr>\n <td align=\"right\">\n\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- end of logo --> <!-- hero story 1 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"101%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#f8f8f8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#f8f8f8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 24px; color:#f8f8f8; text-align:left; line-height: 26px; padding:5px 15px; background-color: #80C457\">Hero Story Heading</td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"700\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"396\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/700x396.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"700\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- hero story -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 26px; padding:0 15px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Subheading Here</a></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr><!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 26px; padding:0 15px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></td>\n </tr>\n\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr><!-- /Spacing -->\n\n <!-- /Spacing --><!-- /hero story -->\n\n <!-- Spacing --> <!-- Spacing -->\n\n\n\n <!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Section Heading -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 24px; color:#f8f8f8; text-align:left; line-height: 26px; padding:5px 15px; background-color: #80C457\">Section Heading Here</td>\n </tr>\n <!-- /Section Heading -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /hero story 1 --><!-- story one -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"CiviCRM helps keep the “City Beautiful†Movementâ€going strong\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"CiviCRM helps keep the “City Beautiful†Movementâ€going strong\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story one -->\n <!-- story two -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- Spacing -->\n <tr>\n <td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"How CiviCRM will take Tribodar Eco Learning Center to another level\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"How CiviCRM will take Tribodar Eco Learning Center to another level\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story two --><!-- story three -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- Spacing -->\n <tr>\n <td height=\"20\" class=\"desktop-spacer\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"CiviCRM provides a soup-to-nuts open-source solution for Friends of the San Pedro River\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"CiviCRM provides a soup-to-nuts open-source solution for Friends of the San Pedro River\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story three -->\n\n\n\n\n\n <!-- story four -->\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <!-- Spacing -->\n <tr>\n <td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <!-- Spacing -->\n <tr>\n <td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"Google Summer of Code\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"Google Summer of Code\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"padding: 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color:#076187; text-align:left; line-height: 26px; padding-bottom:10px;\">Remember to link the facebook and twitter links below to your pages!</p>\n </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story four -->\n\n <!-- footer -->\n\n <!-- End of footer --><!-- Start of postfooter -->\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"footer\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td><!-- logo -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\n <tbody>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px;\"><a href=\"{action.unsubscribeUrl}\" style=\"color: #f0f0f0;\">Unsubscribe | </a><a href=\"{action.subscribeUrl}\" style=\"color: #f0f0f0;\">Subscribe |</a> <a href=\"{action.optOutUrl}\" style=\"color: #f0f0f0;\">Opt out</a></span></td>\n </tr>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px; color: #f0f0f0;\">{domain.address}</span></td>\n </tr>\n </tbody>\n </table>\n <!-- end of logo --><!-- start of social icons -->\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"40\" vaalign=\"middle\" width=\"60\">\n <tbody>\n <tr>\n <td align=\"left\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/facebook.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div> </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"10\"> </td>\n <td align=\"right\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/twitter.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"20\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of social icons --></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td bgcolor=\"#80C457\" height=\"10\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- End of footer -->\n </body>\n</html>\n',1,NULL,1,0,0,NULL); +INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`, `msg_html`, `is_active`, `workflow_id`, `is_default`, `is_reserved`, `is_sms`, `pdf_format_id`) VALUES (1,'Cases - Send Copy of an Activity','{if $idHash}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if $isCaseActivity}\n{ts}Your Case Role(s){/ts} : {$contact.role}\n{if $manageCaseURL}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if $editActURL}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if $viewActURL}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label}{if $field.category}({$field.category}){/if} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label}{if $field.category}({$field.category}){/if} : {$field.value}\n{/if}\n{/foreach}\n\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Activity Summary{/ts} - {$activityTypeName}\n </th>\n </tr>\n {if $isCaseActivity}\n <tr>\n <td {$labelStyle}>\n {ts}Your Case Role(s){/ts}\n </td>\n <td {$valueStyle}>\n {$contact.role}\n </td>\n </tr>\n {if $manageCaseURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n </td>\n </tr>\n {/if}\n {/if}\n {if $editActURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {if $viewActURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {foreach from=$activity.fields item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}{if $field.category}({$field.category}){/if}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n <tr>\n <th {$headerStyle}>\n {$customGroupName}\n </th>\n </tr>\n {foreach from=$customGroup item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n </table>\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,805,1,0,0,NULL),(2,'Cases - Send Copy of an Activity','{if $idHash}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if $isCaseActivity}\n{ts}Your Case Role(s){/ts} : {$contact.role}\n{if $manageCaseURL}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if $editActURL}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if $viewActURL}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label}{if $field.category}({$field.category}){/if} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label}{if $field.category}({$field.category}){/if} : {$field.value}\n{/if}\n{/foreach}\n\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Activity Summary{/ts} - {$activityTypeName}\n </th>\n </tr>\n {if $isCaseActivity}\n <tr>\n <td {$labelStyle}>\n {ts}Your Case Role(s){/ts}\n </td>\n <td {$valueStyle}>\n {$contact.role}\n </td>\n </tr>\n {if $manageCaseURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n </td>\n </tr>\n {/if}\n {/if}\n {if $editActURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {if $viewActURL}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {foreach from=$activity.fields item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}{if $field.category}({$field.category}){/if}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n <tr>\n <th {$headerStyle}>\n {$customGroupName}\n </th>\n </tr>\n {foreach from=$customGroup item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n </table>\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,805,0,1,0,NULL),(3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Organization Name{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Email{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfEmail}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Contact ID{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfID}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n </td>\n </tr>\n {if $receiptMessage}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Copy of Contribution Receipt{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n {/if}\n </table>\n</center>\n\n</body>\n</html>\n',1,806,1,0,0,NULL),(4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Organization Name{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Email{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfEmail}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Contact ID{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfID}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n </td>\n </tr>\n {if $receiptMessage}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Copy of Contribution Receipt{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n {/if}\n </table>\n</center>\n\n</body>\n</html>\n',1,806,0,1,0,NULL),(5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts}\n','{if $formValues.receipt_text}\n{$formValues.receipt_text}\n{else}{ts}Thank you for your support.{/ts}{/if}\n\n{ts}Please print this receipt for your records.{/ts}\n\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{if $lineItem}\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{if $getTaxDetails}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $getTaxDetails} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\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.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $getTaxDetails}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $getTaxDetails && $dataArray}\n{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0 || $value != \'\'}\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 isset($totalTaxAmount) && $totalTaxAmount !== \'null\'}\n{ts}Total Tax Amount{/ts} : {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{ts}Total Amount{/ts} : {$formValues.total_amount|crmMoney:$currency}\n{if $receive_date}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $receipt_date}\n{ts}Receipt Date{/ts}: {$receipt_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $formValues.paidBy and !$formValues.hidden_CreditCard}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if $formValues.check_number}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{if $formValues.trxn_id}\n{ts}Transaction ID{/ts}: {$formValues.trxn_id}\n{/if}\n\n{if $ccContribution}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $softCreditTypes and $softCredits}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $formValues.product_name}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if $fulfilled_date}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n {if $formValues.receipt_text}\n <p>{$formValues.receipt_text|htmlize}</p>\n {else}\n <p>{ts}Thank you for your support.{/ts}</p>\n {/if}\n\n <p>{ts}Please print this receipt for your records.{/ts}</p>\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}Contribution Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.contributionType_name}\n </td>\n </tr>\n\n {if $lineItem and !$is_quick_config}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $getTaxDetails}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $getTaxDetails}\n <td>\n {$line.unit_price*$line.qty|crmMoney:$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:$currency}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {/if}\n {if $getTaxDetails && $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount before Tax : {/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0 || $value != \'\'}\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\n {if isset($totalTaxAmount) && $totalTaxAmount !== \'null\'}\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\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount|crmMoney:$currency}\n </td>\n </tr>\n\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Date Received{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $receipt_date}\n <tr>\n <td {$labelStyle}>\n {ts}Receipt Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receipt_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $formValues.paidBy and !$formValues.hidden_CreditCard}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.paidBy}\n </td>\n </tr>\n {if $formValues.check_number}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $formValues.trxn_id}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction ID{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if $ccContribution}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $softCreditTypes and $softCredits}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $formValues.product_name}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$formValues.product_name}\n </td>\n </tr>\n {if $formValues.product_option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_option}\n </td>\n </tr>\n {/if}\n {if $formValues.product_sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_sku}\n </td>\n </tr>\n {/if}\n {if $fulfilled_date}\n <tr>\n <td {$labelStyle}>\n {ts}Sent{/ts}\n </td>\n <td {$valueStyle}>\n {$fulfilled_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,807,1,0,0,NULL),(6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts}\n','{if $formValues.receipt_text}\n{$formValues.receipt_text}\n{else}{ts}Thank you for your support.{/ts}{/if}\n\n{ts}Please print this receipt for your records.{/ts}\n\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{if $lineItem}\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{if $getTaxDetails}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $getTaxDetails} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\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.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $getTaxDetails}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $getTaxDetails && $dataArray}\n{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0 || $value != \'\'}\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 isset($totalTaxAmount) && $totalTaxAmount !== \'null\'}\n{ts}Total Tax Amount{/ts} : {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{ts}Total Amount{/ts} : {$formValues.total_amount|crmMoney:$currency}\n{if $receive_date}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $receipt_date}\n{ts}Receipt Date{/ts}: {$receipt_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $formValues.paidBy and !$formValues.hidden_CreditCard}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if $formValues.check_number}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{if $formValues.trxn_id}\n{ts}Transaction ID{/ts}: {$formValues.trxn_id}\n{/if}\n\n{if $ccContribution}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $softCreditTypes and $softCredits}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $formValues.product_name}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if $fulfilled_date}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n {if $formValues.receipt_text}\n <p>{$formValues.receipt_text|htmlize}</p>\n {else}\n <p>{ts}Thank you for your support.{/ts}</p>\n {/if}\n\n <p>{ts}Please print this receipt for your records.{/ts}</p>\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}Contribution Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.contributionType_name}\n </td>\n </tr>\n\n {if $lineItem and !$is_quick_config}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $getTaxDetails}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $getTaxDetails}\n <td>\n {$line.unit_price*$line.qty|crmMoney:$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:$currency}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {/if}\n {if $getTaxDetails && $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount before Tax : {/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0 || $value != \'\'}\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\n {if isset($totalTaxAmount) && $totalTaxAmount !== \'null\'}\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\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount|crmMoney:$currency}\n </td>\n </tr>\n\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Date Received{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $receipt_date}\n <tr>\n <td {$labelStyle}>\n {ts}Receipt Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receipt_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $formValues.paidBy and !$formValues.hidden_CreditCard}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.paidBy}\n </td>\n </tr>\n {if $formValues.check_number}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $formValues.trxn_id}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction ID{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if $ccContribution}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $softCreditTypes and $softCredits}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $formValues.product_name}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$formValues.product_name}\n </td>\n </tr>\n {if $formValues.product_option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_option}\n </td>\n </tr>\n {/if}\n {if $formValues.product_sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_sku}\n </td>\n </tr>\n {/if}\n {if $fulfilled_date}\n <tr>\n <td {$labelStyle}>\n {ts}Sent{/ts}\n </td>\n <td {$valueStyle}>\n {$fulfilled_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,807,0,1,0,NULL),(7,'Contributions - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if $receipt_text}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{else}\n\n{ts}Please print this receipt for your records.{/ts}\n{/if}\n\n{if $amount}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $lineItem and $priceSetID and !$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{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\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.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $dataArray}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{if $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 $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney:$currency}\n{else}\n{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if $amount_level } - {$amount_level} {/if}\n{/if}\n{/if}\n{if $receive_date}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $is_monetary and $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n\n{if $is_recur and ($contributeMode eq \'notify\' or $contributeMode eq \'directIPN\')}\n{ts}This is a recurring contribution. You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif $softCreditTypes and $softCredits}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if $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 $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 !( $contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\' ) and $is_monetary}\n{if $is_pay_later && !$isBillingAddressRequiredForPayLater}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{elseif $amount GT 0}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{/if} {* End ! is_pay_later condition. *}\n{/if}\n{if $contributeMode eq \'direct\' AND !$is_pay_later AND $amount GT 0}\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 $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 $contact_email OR $contact_phone}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if $contact_email}\n {$contact_email}\n{/if}\n{if $contact_phone}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND $price}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if $customPre}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if $customPost}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $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 {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n </table>\n <table width=\"500\" style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $amount}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Contribution Information{/ts}\n </th>\n </tr>\n\n {if $lineItem and $priceSetID and !$is_quick_config}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $getTaxDetails}\n <td>\n {$line.unit_price*$line.qty|crmMoney:$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:$currency}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount before Tax : {/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$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\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n\n {else}\n\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:$currency} {if $amount_level} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n {/if}\n\n\n {if $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 $is_monetary and $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 $is_recur}\n {if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This is a recurring contribution. You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n {if $updateSubscriptionBillingUrl}\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n {/if}\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {elseif $softCreditTypes and $softCredits}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $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 $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 $isShare}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n </td>\n </tr>\n {/if}\n\n {if ! ($contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\') and $is_monetary}\n {if $is_pay_later && !$isBillingAddressRequiredForPayLater}\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 {elseif $amount GT 0}\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 {/if}\n {/if}\n\n {if $contributeMode eq \'direct\' AND !$is_pay_later AND $amount GT 0}\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 $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 $contact_email OR $contact_phone}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if $contact_email}\n <p>{$contact_email}</p>\n {/if}\n {if $contact_phone}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND $price}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $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</center>\n\n</body>\n</html>\n',1,808,1,0,0,NULL),(8,'Contributions - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if $receipt_text}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{else}\n\n{ts}Please print this receipt for your records.{/ts}\n{/if}\n\n{if $amount}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $lineItem and $priceSetID and !$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{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\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.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if $dataArray}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{if $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 $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney:$currency}\n{else}\n{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if $amount_level } - {$amount_level} {/if}\n{/if}\n{/if}\n{if $receive_date}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $is_monetary and $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n\n{if $is_recur and ($contributeMode eq \'notify\' or $contributeMode eq \'directIPN\')}\n{ts}This is a recurring contribution. You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif $softCreditTypes and $softCredits}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if $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 $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 !( $contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\' ) and $is_monetary}\n{if $is_pay_later && !$isBillingAddressRequiredForPayLater}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{elseif $amount GT 0}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{/if} {* End ! is_pay_later condition. *}\n{/if}\n{if $contributeMode eq \'direct\' AND !$is_pay_later AND $amount GT 0}\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 $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 $contact_email OR $contact_phone}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if $contact_email}\n {$contact_email}\n{/if}\n{if $contact_phone}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND $price}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if $customPre}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if $customPost}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $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 {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n </table>\n <table width=\"500\" style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n {if $amount}\n\n\n <tr>\n <th {$headerStyle}>\n {ts}Contribution Information{/ts}\n </th>\n </tr>\n\n {if $lineItem and $priceSetID and !$is_quick_config}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}Subtotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $getTaxDetails}\n <td>\n {$line.unit_price*$line.qty|crmMoney:$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:$currency}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount before Tax : {/ts}\n </td>\n <td {$valueStyle}>\n {$amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$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\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n\n {else}\n\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:$currency} {if $amount_level} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n {/if}\n\n\n {if $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 $is_monetary and $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 $is_recur}\n {if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This is a recurring contribution. You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n {if $updateSubscriptionBillingUrl}\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n {/if}\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $honor_block_is_active}\n <tr>\n <th {$headerStyle}>\n {$soft_credit_type}\n </th>\n </tr>\n {foreach from=$honoreeProfile item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {elseif $softCreditTypes and $softCredits}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n item=value key=label}\n <tr>\n <td {$labelStyle}>\n {$label}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n {if $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 $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 $isShare}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n </td>\n </tr>\n {/if}\n\n {if ! ($contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\') and $is_monetary}\n {if $is_pay_later && !$isBillingAddressRequiredForPayLater}\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 {elseif $amount GT 0}\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 {/if}\n {/if}\n\n {if $contributeMode eq \'direct\' AND !$is_pay_later AND $amount GT 0}\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 $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 $contact_email OR $contact_phone}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if $contact_email}\n <p>{$contact_email}</p>\n {/if}\n {if $contact_phone}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND $price}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n </td>\n </tr>\n {/if}\n {/if}\n\n {if $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $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</center>\n\n</body>\n</html>\n',1,808,0,1,0,NULL),(9,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns = \"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv = \"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n <table style = \"margin-top:2px;padding-left:7px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/civi99.png\" height = \"34px\" width = \"99px\"></td>\n </tr>\n </table>\n <center>\n <table style = \"padding-right:19px;font-family: Arial, Verdana, sans-serif;\" width = \"500\" height = \"100\" border = \"0\" cellpadding = \"2\" cellspacing = \"1\">\n <tr>\n <td style = \"padding-left:15px;\" ><b><font size = \"4\" align = \"center\">{ts}INVOICE{/ts}</font></b></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"center\" >{ts}Invoice Date:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\">{$domain_organization}</font></td>\n </tr>\n <tr>\n {if $organization_name}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\" >{$display_name} ({$organization_name})</font></td>\n {else}\n <td style = \"padding-left:15px;\"><font size = \"1\" align = \"center\" >{$display_name}</font></td>\n {/if}\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_date}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_street_address }{$domain_street_address}{/if}\n {if $domain_supplemental_address_1 }{$domain_supplemental_address_1}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Invoice Number:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_supplemental_address_2 }{$domain_supplemental_address_2}{/if}\n {if $domain_state }{$domain_state}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td colspan=\"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_number}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_city}{$domain_city}{/if}\n {if $domain_postal_code }{$domain_postal_code}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"right\">{$city} {$postal_code}</font></td>\n <td colspan=\"1\"></td>\n <td height = \"10\" style = \"padding-left:70px;\"><b><font size = \"1\"align = \"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_country}{$domain_country}{/if}</font></td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td style = \"padding-left:70px;\"><font size = \"1\"align = \"right\">{$source}</font></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_phone}{$domain_phone}{/if}</font> </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_email}{$domain_email}{/if}</font> </td>\n </tr>\n </table>\n <table style = \"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width = \"590\" border = \"0\"cellpadding = \"-5\" cellspacing = \"19\" id = \"desc\">\n <tr>\n <td colspan = \"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th style = \"padding-right:34px;text-align:left;font-weight:bold;width:200px;\"><font size = \"1\">{ts}Description{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\" ><font size = \"1\">{ts}Quantity{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Unit Price{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;width:20px;\"><font size = \"1\">{$taxTerm} </font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts 1=$defaultCurrency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItem item=value key=priceset name=taxpricevalue}\n {if $smarty.foreach.taxpricevalue.index eq 0}\n <tr>\n <td colspan = \"5\" ><hr size=\"3\" style = \"color:#000;\"></hr></td>\n </tr>\n {else}\n <tr>\n <td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td>\n </tr>\n {/if}\n <tr>\n <td style=\"text-align:left;\" ><font size = \"1\">\n {if $value.html_type eq \'Text\'}\n {$value.label}\n {else}\n {$value.field_title} - {$value.label}\n {/if}\n {if $value.description}\n <div>{$value.description|truncate:30:\"...\"}</div>\n {/if}\n </font>\n </td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$value.qty}</font></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$value.unit_price|crmMoney:$currency}</font></td>\n {if $value.tax_amount != \'\'}\n <td style = \"padding-left:34px;text-align:right;width:20px;\"><font size = \"1\"> {$value.tax_rate}%</font></td>\n {else}\n <td style = \"padding-left:34px;text-align:right;width:20px;\"><font size = \"1\">{ts 1=$taxTerm}No %1{/ts}</font></td>\n {/if}\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$value.subTotal|crmMoney:$currency}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">{ts}Sub Total{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from = $dataArray item = value key = priceset}\n <tr>\n <td colspan = \"3\"></td>\n {if $priceset}\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\"> {ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n {elseif $priceset == 0}\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">{ts 1=$taxTerm}TOTAL NO %1{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><b><font size = \"1\">{ts 1=$defaultCurrency}TOTAL %1{/ts}</font></b></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n <td style = \"padding-left:34px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {if $is_pay_later == 0}\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">\n {if $contribution_status_id == $refundedStatusId}\n {ts}LESS Amount Credited{/ts}\n {else}\n {ts}LESS Amount Paid{/ts}\n {/if}\n </font>\n </td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$amountPaid|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\" ><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><b><font size = \"1\">{ts}AMOUNT DUE:{/ts} </font></b></td>\n <td style = \"padding-left:34px;text-align:right;\"><b><font size = \"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style = \"padding-left:34px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan = \"3\"></td>\n </tr>\n {if $contribution_status_id == $pendingStatusId && $is_pay_later == 1}\n <tr>\n <td><b><font size = \"1\" align = \"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n <td colspan = \"3\"></td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n </table>\n {if $contribution_status_id == $pendingStatusId && $is_pay_later == 1}\n <table style = \"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/contribute/cut_line.png\" height = \"15\" width = \"630\"></td>\n </tr>\n </table>\n <table style = \"margin-top:6px;padding-right:20px;font-family: Arial, Verdana, sans-serif\" width = \"480\" border = \"0\"cellpadding = \"-5\" cellspacing=\"19\" id = \"desc\">\n <tr>\n <td width=\"60%\"><b><font size = \"4\" align = \"right\">{ts}PAYMENT ADVICE{/ts}</font></b> <br/><br/> <font size = \"1\" align = \"right\"><b>{ts}To: {/ts}</b><div style=\"width:17em;word-wrap:break-word;\">\n {$domain_organization} <br />\n {$domain_street_address} {$domain_supplemental_address_1} <br />\n {$domain_supplemental_address_2} {$domain_state} <br />\n {$domain_city} {$domain_postal_code} <br />\n {$domain_country} <br />\n {$domain_phone} <br />\n {$domain_email}</div>\n </font><br/><br/><font size=\"1\" align=\"right\">{$notes}</font>\n </td>\n <td width=\"40%\">\n <table cellpadding = \"-10\" cellspacing = \"22\" align=\"right\" >\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Customer: {/ts}</font></td>\n <td ><font size = \"1\" align = \"right\">{$display_name}</font></td>\n </tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Invoice Number: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\">{$invoice_id}</font></td>\n </tr>\n <tr><td colspan = \"5\"style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n {if $is_pay_later == 1}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {else}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Amount Due: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n </tr>\n {/if}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Due Date: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\">{$dueDate}</font></td>\n </tr>\n <tr>\n <td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n {if $contribution_status_id == $refundedStatusId || $contribution_status_id == $cancelledStatusId}\n <table style = \"margin-top:2px;padding-left:7px;page-break-before: always;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/civi99.png\" height = \"34px\" width = \"99px\"></td>\n </tr>\n </table>\n <center>\n\n <table style = \"padding-right:19px;font-family: Arial, Verdana, sans-serif\" width = \"500\" height = \"100\" border = \"0\" cellpadding = \"2\" cellspacing = \"1\">\n <tr>\n <td style = \"padding-left:15px;\" ><b><font size = \"4\" align = \"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Date:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\">{$domain_organization}</font></td>\n </tr>\n <tr>\n {if $organization_name}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$display_name} ({$organization_name})</font></td>\n {else}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$display_name}</font></td>\n {/if}\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_date}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_street_address }{$domain_street_address}{/if}\n {if $domain_supplemental_address_1 }{$domain_supplemental_address_1}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_supplemental_address_2 }{$domain_supplemental_address_2}{/if}\n {if $domain_state }{$domain_state}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td colspan=\"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$creditnote_id}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_city}{$domain_city}{/if}\n {if $domain_postal_code }{$domain_postal_code}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"right\">{$city} {$postal_code}</font></td>\n <td colspan=\"1\"></td>\n <td height = \"10\" style = \"padding-left:70px;\"><b><font size = \"1\"align = \"right\">{ts}Reference:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_country}{$domain_country}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td style = \"padding-left:70px;\"><font size = \"1\"align = \"right\">{$source}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_phone}{$domain_phone}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_email}{$domain_email}{/if}\n </font>\n </td>\n </tr>\n </table>\n\n <table style = \"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width = \"590\" border = \"0\"cellpadding = \"-5\" cellspacing = \"19\" id = \"desc\">\n <tr>\n <td colspan = \"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th style = \"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size = \"1\">{ts}Description{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Quantity{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Unit Price{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{$taxTerm} </font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts 1=$defaultCurrency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItem item=value key=priceset name=pricevalue}\n {if $smarty.foreach.pricevalue.index eq 0}\n <tr><td colspan = \"5\" ><hr size=\"3\" style = \"color:#000;\"></hr></td></tr>\n {else}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n {/if}\n <tr>\n <td style =\"text-align:left;\" >\n <font size = \"1\">\n {if $value.html_type eq \'Text\'}\n {$value.label}\n {else}\n {$value.field_title} - {$value.label}\n {/if}\n {if $value.description}\n <div>{$value.description|truncate:30:\"...\"}</div>\n {/if}\n </font>\n </td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.qty}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.unit_price|crmMoney:$currency}</font></td>\n {if $value.tax_amount != \'\'}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.tax_rate}%</font></td>\n {else}\n <td style = \"padding-left:28px;text-align:right\"><font size = \"1\" >{ts 1=$taxTerm}No %1{/ts}</font></td>\n {/if}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" >{$value.subTotal|crmMoney:$currency}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{ts}Sub Total{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from = $dataArray item = value key = priceset}\n <tr>\n <td colspan = \"3\"></td>\n {if $priceset}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n {elseif $priceset == 0}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{ts 1=$taxTerm}TOTAL NO %1{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{ts 1=$defaultCurrency}TOTAL %1{/ts}</font></b></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {if $is_pay_later == 0}\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" >{ts}LESS Credit to invoice(s){/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\" ><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style = \"padding-left:28px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan = \"3\"></td>\n </tr>\n <tr>\n <td></td>\n <td colspan = \"3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n <table style = \"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/contribute/cut_line.png\" height = \"15\" width = \"630\"></td>\n </tr>\n </table>\n\n <table style = \"margin-top:6px;padding-right:20px;font-family: Arial, Verdana, sans-serif\" width = \"507\" border = \"0\"cellpadding = \"-5\" cellspacing=\"19\" id = \"desc\">\n <tr>\n <td width=\"60%\"><font size = \"4\" align = \"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n <td width=\"40%\">\n <table align=\"right\" >\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts} </font></td>\n <td><font size = \"1\" align = \"right\" >{$display_name}</font></td>\n </tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts} </font></td>\n <td><font size = \"1\" align = \"right\">{$creditnote_id}</font></td>\n </tr>\n <tr><td colspan = \"5\"style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n <td width=\'50px\'><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n </center>\n </body>\n</html>\n',1,809,1,0,0,NULL),(10,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns = \"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv = \"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n <table style = \"margin-top:2px;padding-left:7px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/civi99.png\" height = \"34px\" width = \"99px\"></td>\n </tr>\n </table>\n <center>\n <table style = \"padding-right:19px;font-family: Arial, Verdana, sans-serif;\" width = \"500\" height = \"100\" border = \"0\" cellpadding = \"2\" cellspacing = \"1\">\n <tr>\n <td style = \"padding-left:15px;\" ><b><font size = \"4\" align = \"center\">{ts}INVOICE{/ts}</font></b></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"center\" >{ts}Invoice Date:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\">{$domain_organization}</font></td>\n </tr>\n <tr>\n {if $organization_name}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\" >{$display_name} ({$organization_name})</font></td>\n {else}\n <td style = \"padding-left:15px;\"><font size = \"1\" align = \"center\" >{$display_name}</font></td>\n {/if}\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_date}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_street_address }{$domain_street_address}{/if}\n {if $domain_supplemental_address_1 }{$domain_supplemental_address_1}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Invoice Number:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_supplemental_address_2 }{$domain_supplemental_address_2}{/if}\n {if $domain_state }{$domain_state}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td colspan=\"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_number}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_city}{$domain_city}{/if}\n {if $domain_postal_code }{$domain_postal_code}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"right\">{$city} {$postal_code}</font></td>\n <td colspan=\"1\"></td>\n <td height = \"10\" style = \"padding-left:70px;\"><b><font size = \"1\"align = \"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_country}{$domain_country}{/if}</font></td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td style = \"padding-left:70px;\"><font size = \"1\"align = \"right\">{$source}</font></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_phone}{$domain_phone}{/if}</font> </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td></td>\n <td><font size = \"1\" align = \"right\"> {if $domain_email}{$domain_email}{/if}</font> </td>\n </tr>\n </table>\n <table style = \"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width = \"590\" border = \"0\"cellpadding = \"-5\" cellspacing = \"19\" id = \"desc\">\n <tr>\n <td colspan = \"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th style = \"padding-right:34px;text-align:left;font-weight:bold;width:200px;\"><font size = \"1\">{ts}Description{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\" ><font size = \"1\">{ts}Quantity{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Unit Price{/ts}</font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;width:20px;\"><font size = \"1\">{$taxTerm} </font></th>\n <th style = \"padding-left:34px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts 1=$defaultCurrency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItem item=value key=priceset name=taxpricevalue}\n {if $smarty.foreach.taxpricevalue.index eq 0}\n <tr>\n <td colspan = \"5\" ><hr size=\"3\" style = \"color:#000;\"></hr></td>\n </tr>\n {else}\n <tr>\n <td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td>\n </tr>\n {/if}\n <tr>\n <td style=\"text-align:left;\" ><font size = \"1\">\n {if $value.html_type eq \'Text\'}\n {$value.label}\n {else}\n {$value.field_title} - {$value.label}\n {/if}\n {if $value.description}\n <div>{$value.description|truncate:30:\"...\"}</div>\n {/if}\n </font>\n </td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$value.qty}</font></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$value.unit_price|crmMoney:$currency}</font></td>\n {if $value.tax_amount != \'\'}\n <td style = \"padding-left:34px;text-align:right;width:20px;\"><font size = \"1\"> {$value.tax_rate}%</font></td>\n {else}\n <td style = \"padding-left:34px;text-align:right;width:20px;\"><font size = \"1\">{ts 1=$taxTerm}No %1{/ts}</font></td>\n {/if}\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$value.subTotal|crmMoney:$currency}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">{ts}Sub Total{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\"> {$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from = $dataArray item = value key = priceset}\n <tr>\n <td colspan = \"3\"></td>\n {if $priceset}\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\"> {ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n {elseif $priceset == 0}\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">{ts 1=$taxTerm}TOTAL NO %1{/ts}</font></td>\n <td style = \"padding-left:34px;text-align:right\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><b><font size = \"1\">{ts 1=$defaultCurrency}TOTAL %1{/ts}</font></b></td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n <td style = \"padding-left:34px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {if $is_pay_later == 0}\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><font size = \"1\">\n {if $contribution_status_id == $refundedStatusId}\n {ts}LESS Amount Credited{/ts}\n {else}\n {ts}LESS Amount Paid{/ts}\n {/if}\n </font>\n </td>\n <td style = \"padding-left:34px;text-align:right;\"><font size = \"1\">{$amountPaid|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\" ><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:20px;text-align:right;\"><b><font size = \"1\">{ts}AMOUNT DUE:{/ts} </font></b></td>\n <td style = \"padding-left:34px;text-align:right;\"><b><font size = \"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style = \"padding-left:34px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan = \"3\"></td>\n </tr>\n {if $contribution_status_id == $pendingStatusId && $is_pay_later == 1}\n <tr>\n <td><b><font size = \"1\" align = \"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n <td colspan = \"3\"></td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n </table>\n {if $contribution_status_id == $pendingStatusId && $is_pay_later == 1}\n <table style = \"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/contribute/cut_line.png\" height = \"15\" width = \"630\"></td>\n </tr>\n </table>\n <table style = \"margin-top:6px;padding-right:20px;font-family: Arial, Verdana, sans-serif\" width = \"480\" border = \"0\"cellpadding = \"-5\" cellspacing=\"19\" id = \"desc\">\n <tr>\n <td width=\"60%\"><b><font size = \"4\" align = \"right\">{ts}PAYMENT ADVICE{/ts}</font></b> <br/><br/> <font size = \"1\" align = \"right\"><b>{ts}To: {/ts}</b><div style=\"width:17em;word-wrap:break-word;\">\n {$domain_organization} <br />\n {$domain_street_address} {$domain_supplemental_address_1} <br />\n {$domain_supplemental_address_2} {$domain_state} <br />\n {$domain_city} {$domain_postal_code} <br />\n {$domain_country} <br />\n {$domain_phone} <br />\n {$domain_email}</div>\n </font><br/><br/><font size=\"1\" align=\"right\">{$notes}</font>\n </td>\n <td width=\"40%\">\n <table cellpadding = \"-10\" cellspacing = \"22\" align=\"right\" >\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Customer: {/ts}</font></td>\n <td ><font size = \"1\" align = \"right\">{$display_name}</font></td>\n </tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Invoice Number: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\">{$invoice_id}</font></td>\n </tr>\n <tr><td colspan = \"5\"style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n {if $is_pay_later == 1}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {else}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Amount Due: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n </tr>\n {/if}\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Due Date: {/ts}</font></td>\n <td><font size = \"1\" align = \"right\">{$dueDate}</font></td>\n </tr>\n <tr>\n <td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n {if $contribution_status_id == $refundedStatusId || $contribution_status_id == $cancelledStatusId}\n <table style = \"margin-top:2px;padding-left:7px;page-break-before: always;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/civi99.png\" height = \"34px\" width = \"99px\"></td>\n </tr>\n </table>\n <center>\n\n <table style = \"padding-right:19px;font-family: Arial, Verdana, sans-serif\" width = \"500\" height = \"100\" border = \"0\" cellpadding = \"2\" cellspacing = \"1\">\n <tr>\n <td style = \"padding-left:15px;\" ><b><font size = \"4\" align = \"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Date:{/ts}</font></b></td>\n <td><font size = \"1\" align = \"right\">{$domain_organization}</font></td>\n </tr>\n <tr>\n {if $organization_name}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$display_name} ({$organization_name})</font></td>\n {else}\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$display_name}</font></td>\n {/if}\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$invoice_date}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_street_address }{$domain_street_address}{/if}\n {if $domain_supplemental_address_1 }{$domain_supplemental_address_1}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td colspan = \"1\"></td>\n <td style = \"padding-left:70px;\"><b><font size = \"1\" align = \"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_supplemental_address_2 }{$domain_supplemental_address_2}{/if}\n {if $domain_state }{$domain_state}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td colspan=\"1\"></td>\n <td style = \"padding-left:70px;\"><font size = \"1\" align = \"right\">{$creditnote_id}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_city}{$domain_city}{/if}\n {if $domain_postal_code }{$domain_postal_code}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td style = \"padding-left:17px;\"><font size = \"1\" align = \"right\">{$city} {$postal_code}</font></td>\n <td colspan=\"1\"></td>\n <td height = \"10\" style = \"padding-left:70px;\"><b><font size = \"1\"align = \"right\">{ts}Reference:{/ts}</font></b></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_country}{$domain_country}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td style = \"padding-left:70px;\"><font size = \"1\"align = \"right\">{$source}</font></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_phone}{$domain_phone}{/if}\n </font>\n </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td></td>\n <td>\n <font size = \"1\" align = \"right\">\n {if $domain_email}{$domain_email}{/if}\n </font>\n </td>\n </tr>\n </table>\n\n <table style = \"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width = \"590\" border = \"0\"cellpadding = \"-5\" cellspacing = \"19\" id = \"desc\">\n <tr>\n <td colspan = \"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th style = \"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size = \"1\">{ts}Description{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Quantity{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts}Unit Price{/ts}</font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{$taxTerm} </font></th>\n <th style = \"padding-left:28px;text-align:right;font-weight:bold;\"><font size = \"1\">{ts 1=$defaultCurrency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItem item=value key=priceset name=pricevalue}\n {if $smarty.foreach.pricevalue.index eq 0}\n <tr><td colspan = \"5\" ><hr size=\"3\" style = \"color:#000;\"></hr></td></tr>\n {else}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n {/if}\n <tr>\n <td style =\"text-align:left;\" >\n <font size = \"1\">\n {if $value.html_type eq \'Text\'}\n {$value.label}\n {else}\n {$value.field_title} - {$value.label}\n {/if}\n {if $value.description}\n <div>{$value.description|truncate:30:\"...\"}</div>\n {/if}\n </font>\n </td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.qty}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.unit_price|crmMoney:$currency}</font></td>\n {if $value.tax_amount != \'\'}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$value.tax_rate}%</font></td>\n {else}\n <td style = \"padding-left:28px;text-align:right\"><font size = \"1\" >{ts 1=$taxTerm}No %1{/ts}</font></td>\n {/if}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" >{$value.subTotal|crmMoney:$currency}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan = \"5\" style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{ts}Sub Total{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from = $dataArray item = value key = priceset}\n <tr>\n <td colspan = \"3\"></td>\n {if $priceset}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\"> {ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n {elseif $priceset == 0}\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{ts 1=$taxTerm}TOTAL NO %1{/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" align = \"right\">{$value|crmMoney:$currency}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{ts 1=$defaultCurrency}TOTAL %1{/ts}</font></b></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {if $is_pay_later == 0}\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\" >{ts}LESS Credit to invoice(s){/ts}</font></td>\n <td style = \"padding-left:28px;text-align:right;\"><font size = \"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td colspan = \"2\" ><hr></hr></td>\n </tr>\n <tr>\n <td colspan = \"3\"></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n <td style = \"padding-left:28px;text-align:right;\"><b><font size = \"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style = \"padding-left:28px;\"><font size = \"1\" align = \"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan = \"3\"></td>\n </tr>\n <tr>\n <td></td>\n <td colspan = \"3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n <table style = \"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src = \"{$resourceBase}/i/contribute/cut_line.png\" height = \"15\" width = \"630\"></td>\n </tr>\n </table>\n\n <table style = \"margin-top:6px;padding-right:20px;font-family: Arial, Verdana, sans-serif\" width = \"507\" border = \"0\"cellpadding = \"-5\" cellspacing=\"19\" id = \"desc\">\n <tr>\n <td width=\"60%\"><font size = \"4\" align = \"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n <td width=\"40%\">\n <table align=\"right\" >\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts} </font></td>\n <td><font size = \"1\" align = \"right\" >{$display_name}</font></td>\n </tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts} </font></td>\n <td><font size = \"1\" align = \"right\">{$creditnote_id}</font></td>\n </tr>\n <tr><td colspan = \"5\"style = \"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan = \"2\"></td>\n <td><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n <td width=\'50px\'><font size = \"1\" align = \"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n </center>\n </body>\n</html>\n',1,809,0,1,0,NULL),(11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts}\n','{ts 1=$displayName}Dear %1{/ts},\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you for your support.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$displayName}Dear %1{/ts},</p>\n </td>\n </tr>\n\n <tr>\n <td> </td>\n </tr>\n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {else}\n <tr>\n <td>\n <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n </td>\n </tr>\n {else}\n <tr>\n <td>\n <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you for your support.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_start_date|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_end_date|crmDate}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n {/if}\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,810,1,0,0,NULL),(12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts}\n','{ts 1=$displayName}Dear %1{/ts},\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you for your support.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$displayName}Dear %1{/ts},</p>\n </td>\n </tr>\n\n <tr>\n <td> </td>\n </tr>\n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {else}\n <tr>\n <td>\n <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n </td>\n </tr>\n {else}\n <tr>\n <td>\n <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you for your support.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_start_date|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_end_date|crmDate}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n {/if}\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,810,0,1,0,NULL),(13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,811,1,0,0,NULL),(14,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,811,0,1,0,NULL),(15,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n <table width=\"500\" style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n<tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>',1,812,1,0,0,NULL),(16,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n <table width=\"500\" style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n<tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>',1,812,0,1,0,NULL),(17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts}Your recurring contribution has been updated as requested:{/ts}\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,813,1,0,0,NULL),(18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts}Your recurring contribution has been updated as requested:{/ts}\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,813,0,1,0,NULL),(19,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1}{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page Notification{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Action{/ts}:\n </td>\n <td {$valueStyle}>\n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Personal Campaign Page Title{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpTitle}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Current Status{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpStatus}\n </td>\n </tr>\n\n <tr>\n <td {$labelStyle}>\n <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n </td>\n <td></td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Supporter{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$supporterUrl}\">{$supporterName}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Linked to Contribution Page{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n </td>\n <td></td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,814,1,0,0,NULL),(20,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1}{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page Notification{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Action{/ts}:\n </td>\n <td {$valueStyle}>\n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Personal Campaign Page Title{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpTitle}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Current Status{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpStatus}\n </td>\n </tr>\n\n <tr>\n <td {$labelStyle}>\n <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n </td>\n <td></td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Supporter{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$supporterUrl}\">{$supporterName}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Linked to Contribution Page{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n </td>\n <td></td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,814,0,1,0,NULL),(21,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n {if $pcpStatus eq \'Approved\'}\n\n <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n {if $isTellFriendEnabled}\n <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n {if $pcpNotifyEmailAddress}\n <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {/if}\n\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,815,1,0,0,NULL),(22,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n {if $pcpStatus eq \'Approved\'}\n\n <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n {if $isTellFriendEnabled}\n <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n {if $pcpNotifyEmailAddress}\n <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {/if}\n\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,815,0,1,0,NULL),(23,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts}\n','{ts}Dear supporter{/ts},\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts}Dear supporter{/ts},</p>\n <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n </td>\n </tr>\n\n {if $pcpStatus eq \'Approved\'}\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Promoting Your Page{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if $isTellFriendEnabled}\n <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n </ol>\n {else}\n <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Managing Your Page{/ts}\n </th>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n </td>\n </tr>\n </tr>\n </table>\n </td>\n </tr>\n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n <tr>\n <td>\n <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n </ol>\n </td>\n </tr>\n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <tr>\n <td>\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n </td>\n </tr>\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,816,1,0,0,NULL),(24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts}\n','{ts}Dear supporter{/ts},\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts}Dear supporter{/ts},</p>\n <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n </td>\n </tr>\n\n {if $pcpStatus eq \'Approved\'}\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Promoting Your Page{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if $isTellFriendEnabled}\n <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n </ol>\n {else}\n <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Managing Your Page{/ts}\n </th>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n </td>\n </tr>\n </tr>\n </table>\n </td>\n </tr>\n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n <tr>\n <td>\n <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n </ol>\n </td>\n </tr>\n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <tr>\n <td>\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n </td>\n </tr>\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,816,0,1,0,NULL),(25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\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}Received{/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 <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 width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n <tr><td>{ts}Received{/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,817,1,0,0,NULL),(26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\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}Received{/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 <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 width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n <tr><td>{ts}Received{/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,817,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}','Dear {$contactDisplayName}\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}A payment has been received.{/ts}\n{/if}\n\n{ts}Please print this confirmation for your records.{/ts}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}Total Fees{/ts}: {$totalAmount|crmMoney}\n{ts}You Paid{/ts}: {$totalPaid|crmMoney}\n------------------------------------------------------------------------------------\n{ts}Refund Amount{/ts}: {$refundAmount|crmMoney}\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}Total Fees{/ts}: {$totalAmount|crmMoney}\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney}\n------------------------------------------------------------------------------------\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney} {* This will be zero after final payment. *}\n\n{if $paymentsComplete}\n\n{ts}Thank you for completing payment.{/ts}\n{/if}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode eq \'direct\' and !$isAmountzero}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero}\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if $event.participant_role}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $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<p>Dear {$contactDisplayName}</p>\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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 {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}A payment has been received.{/ts}</p>\n {/if}\n <p>{ts}Please print this confirmation for your records.{/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 {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}You Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney}\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}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney}\n </td> {* This will be zero after final payment. *}\n </tr>\n <tr> <td {$emptyBlockStyle}></td>\n <td {$emptyBlockValueStyle}></td></tr>\n {if $paymentsComplete}\n <tr>\n <td colspan=\'2\' {$valueStyle}>\n {ts}Thank you for completing payment.{/ts}\n </td>\n </tr>\n {/if}\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 $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 $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 $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 </table>\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 $contributeMode eq \'direct\' and !$isAmountzero}\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 {if $contributeMode eq\'direct\' and !$isAmountzero}\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if $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 $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $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 </center>\n\n </body>\n</html>\n',1,818,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}','Dear {$contactDisplayName}\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}A payment has been received.{/ts}\n{/if}\n\n{ts}Please print this confirmation for your records.{/ts}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}Total Fees{/ts}: {$totalAmount|crmMoney}\n{ts}You Paid{/ts}: {$totalPaid|crmMoney}\n------------------------------------------------------------------------------------\n{ts}Refund Amount{/ts}: {$refundAmount|crmMoney}\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}Total Fees{/ts}: {$totalAmount|crmMoney}\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney}\n------------------------------------------------------------------------------------\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney} {* This will be zero after final payment. *}\n\n{if $paymentsComplete}\n\n{ts}Thank you for completing payment.{/ts}\n{/if}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode eq \'direct\' and !$isAmountzero}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero}\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if $event.participant_role}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $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<p>Dear {$contactDisplayName}</p>\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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 {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}A payment has been received.{/ts}</p>\n {/if}\n <p>{ts}Please print this confirmation for your records.{/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 {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}You Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney}\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}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney}\n </td> {* This will be zero after final payment. *}\n </tr>\n <tr> <td {$emptyBlockStyle}></td>\n <td {$emptyBlockValueStyle}></td></tr>\n {if $paymentsComplete}\n <tr>\n <td colspan=\'2\' {$valueStyle}>\n {ts}Thank you for completing payment.{/ts}\n </td>\n </tr>\n {/if}\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 $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 $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 $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 </table>\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 $contributeMode eq \'direct\' and !$isAmountzero}\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 {if $contributeMode eq\'direct\' and !$isAmountzero}\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if $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 $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $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 </center>\n\n </body>\n</html>\n',1,818,0,1,0,NULL),(29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {$event.title}\n','{contact.email_greeting}\n{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n{$event.confirm_email_text}\n{/if}\n\n{if $isOnWaitlist}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{else}\n\n{ts}Please print this confirmation for your records.{/ts}\n{/if}\n\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if $event.participant_role neq \'Attendee\' and $defaultRole}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $email}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$email}\n{/if}\n{if $event.is_monetary} {* This section for Paid events only.*}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.fee_label}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{if $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}\n{/if}\n{/if}\n---------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if $pricesetFieldsCount }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {$ts_participant_total|string_format:\"%10s\"}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{foreach from=$value item=line}\n{if $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 $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\"} {$ts_participant_count|string_format:\"%10s\"}\n{/foreach}\n{/if}\n{/foreach}\n\n{if $dataArray}\n{ts}Amount before Tax{/ts}: {$totalAmount-$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{/if}\n\n{if $amount && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if $isPrimary}\n\n{if $balanceAmount}{ts}Total Paid{/ts}{else}{ts}Total Amount{/ts}{/if}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n\n{if $balanceAmount}\n{ts}Balance{/ts}: {$balanceAmount|crmMoney}\n{/if}\n\n{if $pricesetFieldsCount }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later }\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $financialTypeName}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if $customPre}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if $customPost}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if $customProfile}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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>{contact.email_greeting}</p>\n\n {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n <p>{$event.confirm_email_text|htmlize}</p>\n {/if}\n\n {if $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 $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 $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\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.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if $event.participant_role neq \'Attendee\' and $defaultRole}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\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 File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n\n {if $event.is_monetary}\n\n <tr>\n <th {$headerStyle}>\n {$event.fee_label}\n </th>\n </tr>\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $isPrimary}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n {if $dataArray}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate != \"\" || $line.tax_amount != \"\"}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {if $pricesetFieldsCount }\n <td>\n {$line.participant_count}\n </td>\n {/if}\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}No{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if $amount && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {if $balanceAmount}\n {ts}Total Paid{/ts}\n {else}\n {ts}Total Amount{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if $balanceAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Balance{/ts}\n </td>\n <td {$valueStyle}>\n {$balanceAmount|crmMoney}\n </td>\n </tr>\n {/if}\n {if $pricesetFieldsCount }\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n {if $is_pay_later}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $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 $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 $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 $paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n\n {if $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 $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=value key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=value key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customProfile}\n {foreach from=$customProfile item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n </th>\n </tr>\n {foreach from=$value item=val key=field}\n {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {if $field eq \'additionalCustomPre\'}\n {$additionalCustomPre_grouptitle}\n {else}\n {$additionalCustomPost_grouptitle}\n {/if}\n </td>\n </tr>\n {foreach from=$val item=v key=f}\n <tr>\n <td {$labelStyle}>\n {$f}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/foreach}\n {/if}\n\n {if $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</center>\n\n</body>\n</html>\n',1,819,1,0,0,NULL),(30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {$event.title}\n','{contact.email_greeting}\n{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n{$event.confirm_email_text}\n{/if}\n\n{if $isOnWaitlist}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{else}\n\n{ts}Please print this confirmation for your records.{/ts}\n{/if}\n\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if $event.participant_role neq \'Attendee\' and $defaultRole}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $email}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$email}\n{/if}\n{if $event.is_monetary} {* This section for Paid events only.*}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.fee_label}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{if $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}\n{/if}\n{/if}\n---------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if $pricesetFieldsCount }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {$ts_participant_total|string_format:\"%10s\"}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{foreach from=$value item=line}\n{if $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 $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\"} {$ts_participant_count|string_format:\"%10s\"}\n{/foreach}\n{/if}\n{/foreach}\n\n{if $dataArray}\n{ts}Amount before Tax{/ts}: {$totalAmount-$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{/if}\n\n{if $amount && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if $isPrimary}\n\n{if $balanceAmount}{ts}Total Paid{/ts}{else}{ts}Total Amount{/ts}{/if}: {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n\n{if $balanceAmount}\n{ts}Balance{/ts}: {$balanceAmount|crmMoney}\n{/if}\n\n{if $pricesetFieldsCount }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later }\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $financialTypeName}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if $customPre}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if $customPost}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if $customProfile}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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>{contact.email_greeting}</p>\n\n {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n <p>{$event.confirm_email_text|htmlize}</p>\n {/if}\n\n {if $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 $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 $is_pay_later}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\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.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if $event.participant_role neq \'Attendee\' and $defaultRole}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\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 File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$email}\n </td>\n </tr>\n {/if}\n\n\n {if $event.is_monetary}\n\n <tr>\n <th {$headerStyle}>\n {$event.fee_label}\n </th>\n </tr>\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $isPrimary}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney}\n </td>\n {if $dataArray}\n <td>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate != \"\" || $line.tax_amount != \"\"}\n <td>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {if $pricesetFieldsCount }\n <td>\n {$line.participant_count}\n </td>\n {/if}\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}No{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if $amount && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {if $balanceAmount}\n {ts}Total Paid{/ts}\n {else}\n {ts}Total Amount{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if $balanceAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Balance{/ts}\n </td>\n <td {$valueStyle}>\n {$balanceAmount|crmMoney}\n </td>\n </tr>\n {/if}\n {if $pricesetFieldsCount }\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td>\n </tr>\n {/if}\n {if $is_pay_later}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $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 $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 $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 $paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n\n {if $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 $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=value key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=value key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customProfile}\n {foreach from=$customProfile item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n </th>\n </tr>\n {foreach from=$value item=val key=field}\n {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {if $field eq \'additionalCustomPre\'}\n {$additionalCustomPre_grouptitle}\n {else}\n {$additionalCustomPost_grouptitle}\n {/if}\n </td>\n </tr>\n {foreach from=$val item=v key=f}\n <tr>\n <td {$labelStyle}>\n {$f}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/foreach}\n {/if}\n\n {if $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</center>\n\n</body>\n</html>\n',1,819,0,1,0,NULL),(31,'Events - Registration Confirmation and Receipt (on-line)','{if $isOnWaitlist}{ts}Wait List Confirmation{/ts}{elseif $isRequireApproval}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {$event.event_title}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your participation.{/ts}\n {if $participant_status}{ts 1=$participant_status}This letter is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if $isOnWaitlist}{ts}This letter is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This letter is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}.\n\n{/if}\n\n{if $isOnWaitlist}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{else}\n\n{ts}Please print this confirmation for your records.{/ts}\n{/if}\n\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|date_format:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|date_format:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if $event.participant_role neq \'Attendee\' and $defaultRole}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $payer.name}\nYou were registered by: {$payer.name}\n{/if}\n{if $event.is_monetary and not $isRequireApproval} {* This section for Paid events only.*}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.fee_label}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{if $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} {$part.$priceset.info}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if $pricesetFieldsCount }-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if $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 $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {$ts_participant_total|string_format:\"%10s\"}\n-----------------------------------------------------------{if $pricesetFieldsCount }-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if $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 $dataArray} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{$ts_participant_count|string_format:\"%10s\"}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if $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 $dataArray}\n{ts}Amount before Tax{/ts}: {$totalAmount-$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{/if}\n\n{if $amounts && !$lineItem}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if $isPrimary }\n\n{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n\n{if $pricesetFieldsCount }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $financialTypeName}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode ne \'notify\' and !$isAmountzero and (!$is_pay_later or $isBillingAddressRequiredForPayLater) and !$isOnWaitlist and !$isRequireApproval}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if $customPre}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $customPost}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if $customProfile}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $event.allow_selfcancelxfer }\n{ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n<center>\n <table width=\"700\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n <p>{$event.confirm_email_text|htmlize}</p>\n\n {else}\n <p>{ts}Thank you for your participation.{/ts}\n {if $participant_status}{ts 1=$participant_status}This letter is a confirmation that your registration has been received and your status has been updated to <strong> %1</strong>.{/ts}\n {else}{if $isOnWaitlist}{ts}This letter is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This letter is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}.</p>\n\n {/if}\n\n <p>\n {if $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 $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 $is_pay_later && !$isAmountzero && !$isAdditionalParticipant}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table width=\"700\" style=\"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.event_title}<br />\n {$event.event_start_date|date_format:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|date_format:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n\n {if $event.participant_role neq \'Attendee\' and $defaultRole}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\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 File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $event.is_share}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id=`$event.id`&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl}\n </td>\n </tr>\n {/if}\n {if $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 and not $isRequireApproval}\n\n <tr>\n <th {$headerStyle}>\n {$event.fee_label}\n </th>\n </tr>\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $isPrimary}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info}\n </td>\n </tr>\n {/if}\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td {$tdfirstStyle}>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td {$tdStyle} align=\"middle\">\n {$line.qty}\n </td>\n <td {$tdStyle}>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $dataArray}\n <td {$tdStyle}>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate != \"\" || $line.tax_amount != \"\"}\n <td {$tdStyle}>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td {$tdStyle}>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n {if $pricesetFieldsCount }<td {$tdStyle}>{$line.participant_count}</td> {/if}\n </tr>\n {/foreach}\n {if $individual}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount Before Tax: {/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}No{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if $amounts && !$lineItem}\n {foreach from=$amounts item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if $pricesetFieldsCount }\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td> </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $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 $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 $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 $paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n\n {if $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 $contributeMode ne \'notify\' and !$isAmountzero and (!$is_pay_later or $isBillingAddressRequiredForPayLater) and !$isOnWaitlist and !$isRequireApproval}\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n\n{if $customPre}\n{foreach from=$customPre item=customPr key=i}\n <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n {foreach from=$customPr item=customValue key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/if}\n {/foreach}\n{/foreach}\n{/if}\n\n{if $customPost}\n{foreach from=$customPost item=customPos key=j}\n <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n {foreach from=$customPos item=customValue key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $customProfile}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>{foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n </table>\n {if $event.allow_selfcancelxfer }\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,820,1,0,0,NULL),(32,'Events - Registration Confirmation and Receipt (on-line)','{if $isOnWaitlist}{ts}Wait List Confirmation{/ts}{elseif $isRequireApproval}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {$event.event_title}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your participation.{/ts}\n {if $participant_status}{ts 1=$participant_status}This letter is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if $isOnWaitlist}{ts}This letter is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This letter is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}.\n\n{/if}\n\n{if $isOnWaitlist}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if $isPrimary}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if $isPrimary}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{elseif $is_pay_later && !$isAmountzero && !$isAdditionalParticipant}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{else}\n\n{ts}Please print this confirmation for your records.{/ts}\n{/if}\n\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|date_format:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|date_format:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if $event.participant_role neq \'Attendee\' and $defaultRole}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if $isShowLocation}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $location.phone.1.phone || $location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $payer.name}\nYou were registered by: {$payer.name}\n{/if}\n{if $event.is_monetary and not $isRequireApproval} {* This section for Paid events only.*}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$event.fee_label}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{if $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} {$part.$priceset.info}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if $pricesetFieldsCount }-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $dataArray}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if $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 $dataArray} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {$ts_participant_total|string_format:\"%10s\"}\n-----------------------------------------------------------{if $pricesetFieldsCount }-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if $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 $dataArray} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate != \"\" || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{$ts_participant_count|string_format:\"%10s\"}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if $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 $dataArray}\n{ts}Amount before Tax{/ts}: {$totalAmount-$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{/if}\n\n{if $amounts && !$lineItem}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if $isPrimary }\n\n{ts}Total Amount{/ts}: {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n\n{if $pricesetFieldsCount }\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $financialTypeName}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if $paidBy}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if $checkNumber}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if $contributeMode ne \'notify\' and !$isAmountzero and (!$is_pay_later or $isBillingAddressRequiredForPayLater) and !$isOnWaitlist and !$isRequireApproval}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if $customPre}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $customPost}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if $customProfile}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if $pricesetFieldsCount }--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{$customName}\n=========================================================={if $pricesetFieldsCount }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $event.allow_selfcancelxfer }\n{ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n<center>\n <table width=\"700\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n {if $event.confirm_email_text AND (not $isOnWaitlist AND not $isRequireApproval)}\n <p>{$event.confirm_email_text|htmlize}</p>\n\n {else}\n <p>{ts}Thank you for your participation.{/ts}\n {if $participant_status}{ts 1=$participant_status}This letter is a confirmation that your registration has been received and your status has been updated to <strong> %1</strong>.{/ts}\n {else}{if $isOnWaitlist}{ts}This letter is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This letter is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}.</p>\n\n {/if}\n\n <p>\n {if $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 $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 $is_pay_later && !$isAmountzero && !$isAdditionalParticipant}\n <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n <tr>\n <td>\n <table width=\"700\" style=\"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.event_title}<br />\n {$event.event_start_date|date_format:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|date_format:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|date_format:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n\n {if $event.participant_role neq \'Attendee\' and $defaultRole}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $location.phone.1.phone || $location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\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 File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $event.is_share}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id=`$event.id`&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl}\n </td>\n </tr>\n {/if}\n {if $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 and not $isRequireApproval}\n\n <tr>\n <th {$headerStyle}>\n {$event.fee_label}\n </th>\n </tr>\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $isPrimary}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts} {$part.$priceset.info}\n </td>\n </tr>\n {/if}\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Qty{/ts}</th>\n <th>{ts}Each{/ts}</th>\n {if $dataArray}\n <th>{ts}SubTotal{/ts}</th>\n <th>{ts}Tax Rate{/ts}</th>\n <th>{ts}Tax Amount{/ts}</th>\n {/if}\n <th>{ts}Total{/ts}</th>\n {if $pricesetFieldsCount }<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$value item=line}\n <tr>\n <td {$tdfirstStyle}>\n {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n </td>\n <td {$tdStyle} align=\"middle\">\n {$line.qty}\n </td>\n <td {$tdStyle}>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if $dataArray}\n <td {$tdStyle}>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate != \"\" || $line.tax_amount != \"\"}\n <td {$tdStyle}>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td {$tdStyle}>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\n {/if}\n <td {$tdStyle}>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n {if $pricesetFieldsCount }<td {$tdStyle}>{$line.participant_count}</td> {/if}\n </tr>\n {/foreach}\n {if $individual}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts} Amount Before Tax: {/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset || $priceset == 0}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {else}\n <td> {ts}No{/ts} {$taxTerm}</td>\n <td> {$value|crmMoney:$currency}</td>\n {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if $amounts && !$lineItem}\n {foreach from=$amounts item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n\n {if $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $isPrimary}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency} {if $hookDiscount.message}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {if $pricesetFieldsCount }\n <tr>\n <td {$labelStyle}>\n {ts}Total Participants{/ts}</td>\n <td {$valueStyle}>\n {assign var=\"count\" value= 0}\n {foreach from=$lineItem item=pcount}\n {assign var=\"lineItemCount\" value=0}\n {if $pcount neq \'skip\'}\n {foreach from=$pcount item=p_count}\n {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n {/foreach}\n {if $lineItemCount < 1 }\n {assign var=\"lineItemCount\" value=1}\n {/if}\n {assign var=\"count\" value=$count+$lineItemCount}\n {/if}\n {/foreach}\n {$count}\n </td> </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n {if $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 $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 $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 $paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n\n {if $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 $contributeMode ne \'notify\' and !$isAmountzero and (!$is_pay_later or $isBillingAddressRequiredForPayLater) and !$isOnWaitlist and !$isRequireApproval}\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later and !$isOnWaitlist and !$isRequireApproval}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n\n{if $customPre}\n{foreach from=$customPre item=customPr key=i}\n <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n {foreach from=$customPr item=customValue key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/if}\n {/foreach}\n{/foreach}\n{/if}\n\n{if $customPost}\n{foreach from=$customPost item=customPos key=j}\n <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n {foreach from=$customPos item=customValue key=customName}\n {if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if $customProfile}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>{foreach from=$val item=v key=f}\n <td {$labelStyle}>{$field}</td>\n <td {$valueStyle}>{$v}</td>\n {/foreach}\n </tr>\n {/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n </table>\n {if $event.allow_selfcancelxfer }\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n </td>\n </tr>\n </table>\n</center>\n\n</body>\n</html>\n',1,820,0,1,0,NULL),(33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if}\n','Dear {contact.display_name},\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 $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}. Please print this confirmation for your records.{if $line_items && !$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|date_format:\"%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 $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|date_format:\"%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|date_format:\"%D %I:%M %p\"} - {$line_item.event->end_date|date_format:\"%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 <p>Dear {contact.display_name},</p>\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 $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}. Please print this confirmation for your records.{if $line_items && !$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|date_format:\"%D %I:%M %p %Z\"}:</p>\n\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 $source}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"600\">\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|date_format:\"%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|date_format:\"%D %I:%M %p\"} - {$line_item.event->end_date|date_format:\"%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,821,1,0,0,NULL),(34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if}\n','Dear {contact.display_name},\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 $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}. Please print this confirmation for your records.{if $line_items && !$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|date_format:\"%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 $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|date_format:\"%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|date_format:\"%D %I:%M %p\"} - {$line_item.event->end_date|date_format:\"%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 <p>Dear {contact.display_name},</p>\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 $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}. Please print this confirmation for your records.{if $line_items && !$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|date_format:\"%D %I:%M %p %Z\"}:</p>\n\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 $source}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"600\">\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|date_format:\"%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|date_format:\"%D %I:%M %p\"} - {$line_item.event->end_date|date_format:\"%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,821,0,1,0,NULL),(35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,822,1,0,0,NULL),(36,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\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|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,822,0,1,0,NULL),(37,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer }\n{ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|date_format:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n </td>\n </tr>\n {if !$isAdditional and $participant.id}\n <tr>\n <th {$headerStyle}>\n {ts}Confirm Your Registration{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <a href=\"{$confirmUrl}\">Go to a web page where you can confirm your registration online</a>\n </td>\n </tr>\n {/if}\n {if $event.allow_selfcancelxfer }\n This event allows for self-cancel or transfer\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participantID`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Self service cancel transfer{/ts}</a>\n {/if}\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|date_format:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {if $event.allow_selfcancelxfer }\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,823,1,0,0,NULL),(38,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer }\n{ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|date_format:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar File:{/ts} {$icalFeed}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n </td>\n </tr>\n {if !$isAdditional and $participant.id}\n <tr>\n <th {$headerStyle}>\n {ts}Confirm Your Registration{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <a href=\"{$confirmUrl}\">Go to a web page where you can confirm your registration online</a>\n </td>\n </tr>\n {/if}\n {if $event.allow_selfcancelxfer }\n This event allows for self-cancel or transfer\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participantID`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Self service cancel transfer{/ts}</a>\n {/if}\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|date_format:\"%Y/%m/%d\" != $group_by_day|date_format:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|date_format:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$icalFeed}\">{ts}Download iCalendar File{/ts}</a>\n </td>\n </tr>\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {if $event.allow_selfcancelxfer }\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {ts 1=$event.selfcancelxfer_time}You may transfer your registration to another participant or cancel your registration up to %1 hours before the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n </td>\n </tr>\n {/if}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,823,0,1,0,NULL),(39,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,824,1,0,0,NULL),(40,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,824,0,1,0,NULL),(41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,825,1,0,0,NULL),(42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $contact.email}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|date_format:\"%Y%m%d\" == $event.event_start_date|date_format:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $contact.email}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$contact.email}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,825,0,1,0,NULL),(43,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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</center>\n\n</body>\n</html>\n',1,826,1,0,0,NULL),(44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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</center>\n\n</body>\n</html>\n',1,826,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}\n','{if $formValues.receipt_text_signup}\n{$formValues.receipt_text_signup}\n{elseif $formValues.receipt_text_renewal}\n{$formValues.receipt_text_renewal}\n{else}{ts}Thank you for your support.{/ts}{/if}\n\n{if ! $cancelled}{ts}Please print this receipt for your records.{/ts}\n\n\n{/if}\n{if !$lineItem}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{/if}\n{if ! $cancelled}\n{if !$lineItem}\n{ts}Membership Start Date{/ts}: {$mem_start_date}\n{ts}Membership End Date{/ts}: {$mem_end_date}\n{/if}\n\n{if $formValues.total_amount OR $formValues.total_amount eq 0 }\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if $formValues.contributionType_name}\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{/if}\n{if $lineItem}\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 $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 End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $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 $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 $dataArray}\n{ts}Amount before Tax{/ts}: {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset}\n{$taxTerm} {$priceset|string_format:\"%.2f\"} %: {$value|crmMoney:$currency}\n{elseif $priceset == 0}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$formValues.total_amount|crmMoney}\n{if $receive_date}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $formValues.paidBy}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if $formValues.check_number}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if $isPrimary }\n{if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later }\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later}\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 $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\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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 {if $formValues.receipt_text_signup}\n <p>{$formValues.receipt_text_signup|htmlize}</p>\n {elseif $formValues.receipt_text_renewal}\n <p>{$formValues.receipt_text_renewal|htmlize}</p>\n {else}\n <p>{ts}Thank you for your support.{/ts}</p>\n {/if}\n {if ! $cancelled}\n <p>{ts}Please print this receipt for your records.{/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 !$lineItem}\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}\n {if ! $cancelled}\n {if !$lineItem}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date}\n </td>\n </tr>\n {/if}\n {if $formValues.total_amount OR $formValues.total_amount eq 0 }\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n {if $formValues.contributionType_name}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.contributionType_name}\n </td>\n </tr>\n {/if}\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $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 End 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 $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 $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {elseif $priceset == 0}\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 isset($totalTaxAmount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount|crmMoney}\n </td>\n </tr>\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Date Received{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $formValues.paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.paidBy}\n </td>\n </tr>\n {if $formValues.check_number}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n {/if}\n {/if}\n </table>\n </td>\n </tr>\n\n {if $isPrimary}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n {if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later }\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later}\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 $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</center>\n\n</body>\n</html>\n',1,827,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}\n','{if $formValues.receipt_text_signup}\n{$formValues.receipt_text_signup}\n{elseif $formValues.receipt_text_renewal}\n{$formValues.receipt_text_renewal}\n{else}{ts}Thank you for your support.{/ts}{/if}\n\n{if ! $cancelled}{ts}Please print this receipt for your records.{/ts}\n\n\n{/if}\n{if !$lineItem}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{/if}\n{if ! $cancelled}\n{if !$lineItem}\n{ts}Membership Start Date{/ts}: {$mem_start_date}\n{ts}Membership End Date{/ts}: {$mem_end_date}\n{/if}\n\n{if $formValues.total_amount OR $formValues.total_amount eq 0 }\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if $formValues.contributionType_name}\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{/if}\n{if $lineItem}\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 $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 End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $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 $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 $dataArray}\n{ts}Amount before Tax{/ts}: {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset}\n{$taxTerm} {$priceset|string_format:\"%.2f\"} %: {$value|crmMoney:$currency}\n{elseif $priceset == 0}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$formValues.total_amount|crmMoney}\n{if $receive_date}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if $formValues.paidBy}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if $formValues.check_number}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if $isPrimary }\n{if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later }\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later}\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 $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\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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 {if $formValues.receipt_text_signup}\n <p>{$formValues.receipt_text_signup|htmlize}</p>\n {elseif $formValues.receipt_text_renewal}\n <p>{$formValues.receipt_text_renewal|htmlize}</p>\n {else}\n <p>{ts}Thank you for your support.{/ts}</p>\n {/if}\n {if ! $cancelled}\n <p>{ts}Please print this receipt for your records.{/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 !$lineItem}\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}\n {if ! $cancelled}\n {if !$lineItem}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date}\n </td>\n </tr>\n {/if}\n {if $formValues.total_amount OR $formValues.total_amount eq 0 }\n <tr>\n <th {$headerStyle}>\n {ts}Membership Fee{/ts}\n </th>\n </tr>\n {if $formValues.contributionType_name}\n <tr>\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.contributionType_name}\n </td>\n </tr>\n {/if}\n\n {if $lineItem}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $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 End 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 $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 $dataArray}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {foreach from=$dataArray item=value key=priceset}\n <tr>\n {if $priceset}\n <td> {$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n <td> {$value|crmMoney:$currency}</td>\n {elseif $priceset == 0}\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 isset($totalTaxAmount)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.total_amount|crmMoney}\n </td>\n </tr>\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Date Received{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $formValues.paidBy}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.paidBy}\n </td>\n </tr>\n {if $formValues.check_number}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.check_number}\n </td>\n </tr>\n {/if}\n {/if}\n {/if}\n {/if}\n </table>\n </td>\n </tr>\n\n {if $isPrimary}\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n {if $contributeMode ne \'notify\' and !$isAmountzero and !$is_pay_later }\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 $contributeMode eq \'direct\' and !$isAmountzero and !$is_pay_later}\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 $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</center>\n\n</body>\n</html>\n',1,827,0,1,0,NULL),(47,'Memberships - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if $receipt_text}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{else}\n\n{ts}Please print this receipt for your records.{/ts}\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 End 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 && $membership_amount && $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 && $lineItem and $priceSetID & !$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 && !$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 $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 End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $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 $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 $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 $amount_level } - {$amount_level} {/if}\n{/if}\n{elseif $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 $receive_date}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $is_monetary and $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if $membership_trx_id}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if $is_recur}\n{if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\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{/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 $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 $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 !( $contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\' ) and $is_monetary}\n{if $is_pay_later}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{elseif $amount GT 0 OR $membership_amount GT 0 }\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{/if} {* End ! is_pay_later condition. *}\n{/if}\n{if $contributeMode eq \'direct\' AND !$is_pay_later AND ( $amount GT 0 OR $membership_amount GT 0 ) }\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 $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 $contact_email OR $contact_phone}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if $contact_email}\n {$contact_email}\n{/if}\n{if $contact_phone}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND $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 $customPre}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if $customPost}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $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 {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n </table>\n <table width=\"500\" style=\"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 End 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 $membership_amount and $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 !$useForMember && $lineItem and $priceSetID and !$is_quick_config}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\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 !$is_quick_config}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $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 End 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 $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 $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 $amount_level} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif $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 $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 $is_monetary and $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 $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 $is_recur}\n {if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\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 {/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 $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 $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 ! ($contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\') and $is_monetary}\n {if $is_pay_later}\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 {elseif $amount GT 0 OR $membership_amount GT 0}\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 {/if}\n {/if}\n\n {if $contributeMode eq \'direct\' AND !$is_pay_later AND ($amount GT 0 OR $membership_amount GT 0)}\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 $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 $contact_email OR $contact_phone}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if $contact_email}\n <p>{$contact_email}</p>\n {/if}\n {if $contact_phone}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND $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 $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $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</center>\n\n</body>\n</html>\n',1,828,1,0,0,NULL),(48,'Memberships - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if $receipt_text}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{else}\n\n{ts}Please print this receipt for your records.{/ts}\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 End 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 && $membership_amount && $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 && $lineItem and $priceSetID & !$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 && !$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 $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 End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $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 $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 $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 $amount_level } - {$amount_level} {/if}\n{/if}\n{elseif $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 $receive_date}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if $is_monetary and $trxn_id}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if $membership_trx_id}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if $is_recur}\n{if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n{ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\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{/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 $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 $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 !( $contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\' ) and $is_monetary}\n{if $is_pay_later}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{elseif $amount GT 0 OR $membership_amount GT 0 }\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{/if} {* End ! is_pay_later condition. *}\n{/if}\n{if $contributeMode eq \'direct\' AND !$is_pay_later AND ( $amount GT 0 OR $membership_amount GT 0 ) }\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 $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 $contact_email OR $contact_phone}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if $contact_email}\n {$contact_email}\n{/if}\n{if $contact_phone}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND $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 $customPre}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if $customPost}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( $trackingFields and ! in_array( $customName, $trackingFields ) ) or ! $trackingFields}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\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}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $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 {else}\n <p>{ts}Please print this confirmation for your records.{/ts}</p>\n {/if}\n\n </td>\n </tr>\n </table>\n <table width=\"500\" style=\"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 End 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 $membership_amount and $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 !$useForMember && $lineItem and $priceSetID and !$is_quick_config}\n\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\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 !$is_quick_config}\n {foreach from=$lineItem item=value key=priceset}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <table> {* FIXME: style this table so that it looks like the text version (justification, etc.) *}\n <tr>\n <th>{ts}Item{/ts}</th>\n <th>{ts}Fee{/ts}</th>\n {if $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 End 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 $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 $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 $amount_level} - {$amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n\n {elseif $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 $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 $is_monetary and $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 $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 $is_recur}\n {if $contributeMode eq \'notify\' or $contributeMode eq \'directIPN\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}This membership will be renewed automatically. You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\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 {/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 $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 $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 ! ($contributeMode eq \'notify\' OR $contributeMode eq \'directIPN\') and $is_monetary}\n {if $is_pay_later}\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 {elseif $amount GT 0 OR $membership_amount GT 0}\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 {/if}\n {/if}\n\n {if $contributeMode eq \'direct\' AND !$is_pay_later AND ($amount GT 0 OR $membership_amount GT 0)}\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 $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 $contact_email OR $contact_phone}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}For information about this premium, contact:{/ts}</p>\n {if $contact_email}\n <p>{$contact_email}</p>\n {/if}\n {if $contact_phone}\n <p>{$contact_phone}</p>\n {/if}\n </td>\n </tr>\n {/if}\n {if $is_deductible AND $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 $customPre}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $trackingFields}\n <tr>\n <td {$labelStyle}>\n {$customName}\n </td>\n <td {$valueStyle}>\n {$customValue}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if $customPost}\n <tr>\n <th {$headerStyle}>\n {$customPost_grouptitle}\n </th>\n </tr>\n {foreach from=$customPost item=customValue key=customName}\n {if ($trackingFields and ! in_array($customName, $trackingFields)) or ! $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</center>\n\n</body>\n</html>\n',1,828,0,1,0,NULL),(49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts}\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 End 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<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n <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 width=\"500\" style=\"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 End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,829,1,0,0,NULL),(50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts}\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 End 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<center>\n <table width=\"500\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n\n <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 width=\"500\" style=\"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 End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n</center>\n\n</body>\n</html>\n',1,829,0,1,0,NULL),(51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\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}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\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 width=\"500\" style=\"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</center>\n\n</body>\n</html>\n',1,830,1,0,0,NULL),(52,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts}','{ts 1=$contact.display_name}Dear %1{/ts},\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}','<!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<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\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 width=\"500\" style=\"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</center>\n\n</body>\n</html>\n',1,830,0,1,0,NULL),(53,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n','<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left\">\n <tr>\n <td>\n <p>{ts}Test-drive Email / Receipt{/ts}</p>\n <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n </td>\n </tr>\n </table>\n</center>\n',1,831,1,0,0,NULL),(54,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n','<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left\">\n <tr>\n <td>\n <p>{ts}Test-drive Email / Receipt{/ts}</p>\n <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n </td>\n </tr>\n </table>\n</center>\n',1,831,0,1,0,NULL),(55,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts}Thank you for your generous pledge. Please print this acknowledgment for your records.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}dear %1{/ts},</p>\n <p>{ts}thank you for your generous pledge. please print this acknowledgment for your records.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$total_pledge_amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Payment Schedule{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}</p>\n\n {if $frequency_day}\n <p>{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}</p>\n {/if}\n </td>\n </tr>\n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n <tr>\n <td {$labelStyle}>\n {ts 1=$count}Payment %1{/ts}\n </td>\n <td {$valueStyle}>\n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n </td>\n </tr>\n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n </td>\n </tr>\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,832,1,0,0,NULL),(56,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts}Thank you for your generous pledge. Please print this acknowledgment for your records.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}dear %1{/ts},</p>\n <p>{ts}thank you for your generous pledge. please print this acknowledgment for your records.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$total_pledge_amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Payment Schedule{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}</p>\n\n {if $frequency_day}\n <p>{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}</p>\n {/if}\n </td>\n </tr>\n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n <tr>\n <td {$labelStyle}>\n {ts 1=$count}Payment %1{/ts}\n </td>\n <td {$valueStyle}>\n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n </td>\n </tr>\n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n </td>\n </tr>\n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {$customName}\n </th>\n </tr>\n {foreach from=$value item=v key=n}\n <tr>\n <td {$labelStyle}>\n {$n}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,832,0,1,0,NULL),(57,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`$contact.contact_id`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{$domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank your for your generous support.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Payment Due{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Amount Due{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_due|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`$contact.contact_id`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0}{/capture}\n <p><a href=\"{$contributionUrl}\">{ts}Go to a web page where you can make your payment online{/ts}</a></p>\n {else}\n <p>{ts}Please mail your payment to{/ts}: {$domain.address}</p>\n {/if}\n </td>\n </tr>\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_paid|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n <p>{ts}Thank your for your generous support.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,833,1,0,0,NULL),(58,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts}\n','{ts 1=$contact.display_name}Dear %1{/ts},\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`$contact.contact_id`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{$domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank your for your generous support.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <p>{ts 1=$contact.display_name}Dear %1{/ts},</p>\n <p>{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Payment Due{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Amount Due{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_due|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`$contact.contact_id`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0}{/capture}\n <p><a href=\"{$contributionUrl}\">{ts}Go to a web page where you can make your payment online{/ts}</a></p>\n {else}\n <p>{ts}Please mail your payment to{/ts}: {$domain.address}</p>\n {/if}\n </td>\n </tr>\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_paid|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=$domain.phone 2=$domain.email}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n <p>{ts}Thank your for your generous support.{/ts}</p>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,833,0,1,0,NULL),(59,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Submitted For{/ts}\n </td>\n <td {$valueStyle}>\n {$displayName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$currentDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contact Summary{/ts}\n </td>\n <td {$valueStyle}>\n {$contactLink}\n </td>\n </tr>\n\n <tr>\n <th {$headerStyle}>\n {$grouptitle}\n </th>\n </tr>\n\n {foreach from=$values item=value key=valueName}\n <tr>\n <td {$labelStyle}>\n {$valueName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,834,1,0,0,NULL),(60,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<center>\n <table width=\"620\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Submitted For{/ts}\n </td>\n <td {$valueStyle}>\n {$displayName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$currentDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contact Summary{/ts}\n </td>\n <td {$valueStyle}>\n {$contactLink}\n </td>\n </tr>\n\n <tr>\n <th {$headerStyle}>\n {$grouptitle}\n </th>\n </tr>\n\n {foreach from=$values item=value key=valueName}\n <tr>\n <td {$labelStyle}>\n {$valueName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n </table>\n</center>\n\n</body>\n</html>\n',1,834,0,1,0,NULL),(61,'Petition - signature added','Thank you for signing {$petition.title}','Thank you for signing {$petition.title}.\n','<p>Thank you for signing {$petition.title}.</p>\n\n{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,835,1,0,0,NULL),(62,'Petition - signature added','Thank you for signing {$petition.title}','Thank you for signing {$petition.title}.\n','<p>Thank you for signing {$petition.title}.</p>\n\n{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,835,0,1,0,NULL),(63,'Petition - need verification','Confirmation of signature needed for {$petition.title}\n','Thank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl} \">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,836,1,0,0,NULL),(64,'Petition - need verification','Confirmation of signature needed for {$petition.title}\n','Thank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl} \">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,836,0,1,0,NULL),(65,'Sample CiviMail Newsletter Template','Sample CiviMail Newsletter','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n<table width=612 cellpadding=0 cellspacing=0 bgcolor=\"#ffffff\">\n <tr>\n <td colspan=\"2\" bgcolor=\"#ffffff\" valign=\"middle\" >\n <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" >\n <tr>\n <td>\n <a href=\"https://civicrm.org\"><img src=\"https://civicrm.org/sites/civicrm.org/files/top-logo_2.png\" border=0 alt=\"Replace this logo with the URL to your own\"></a>\n </td>\n <td> </td>\n <td>\n <a href=\"https://civicrm.org\" style=\"text-decoration: none;\"><font size=5 face=\"Arial, Verdana, sans-serif\" color=\"#8bc539\">Your Newsletter Title</font></a>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td valign=\"top\" width=\"70%\">\n <!-- left column -->\n <table cellpadding=\"10\" cellspacing=\"0\" border=\"0\">\n <tr>\n <td style=\"font-family: Arial, Verdana, sans-serif; font-size: 12px;\" >\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n Greetings {contact.display_name},\n <br /><br />\n This is a sample template designed to help you get started creating and sending your own CiviMail messages. This template uses an HTML layout that is generally compatible with the wide variety of email clients that your recipients might be using (e.g. Gmail, Outlook, Yahoo, etc.).\n <br /><br />You can select this \"Sample CiviMail Newsletter Template\" from the \"Use Template\" drop-down in Step 3 of creating a mailing, and customize it to your needs. Then check the \"Save as New Template\" box on the bottom the page to save your customized version for use in future mailings.\n <br /><br />The logo you use must be uploaded to your server. Copy and paste the URL path to the logo into the <img src= tag in the HTML at the top. Click \"Source\" or the Image button if you are using the text editor.\n <br /><br />\n Edit the color of the links and headers using the color button or by editing the HTML.\n <br /><br />\n Your newsletter message and donation appeal can go here. Click the link button to <a href=\"#\">create links</a> - remember to use a fully qualified URL starting with http:// in all your links!\n <br /><br />\n To use CiviMail:\n <ul>\n <li><a href=\"http://book.civicrm.org/user/advanced-configuration/email-system-configuration/\">Configure your Email System</a>.</li>\n <li>Make sure your web hosting provider allows outgoing bulk mail, and see if they have a restriction on quantity. If they don\'t allow bulk mail, consider <a href=\"https://civicrm.org/providers/hosting\">finding a new host</a>.</li>\n </ul>\n Sincerely,\n <br /><br />\n Your Team\n <br /><br />\n </font>\n </td>\n </tr>\n </table>\n </td>\n\n <td valign=\"top\" width=\"30%\" bgcolor=\"#ffffff\" style=\"border: 1px solid #056085;\">\n <!-- right column -->\n <table cellpadding=10 cellspacing=0 border=0>\n <tr>\n <td bgcolor=\"#056085\"><font face=\"Arial, Verdana, sans-serif\" size=\"4\" color=\"#ffffff\">News and Events</font></td>\n </tr>\n <tr>\n <td style=\"color: #000; font-family: Arial, Verdana, sans-serif; font-size: 12px;\" >\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n <font color=\"#056085\"><strong>Featured Events</strong> </font><br />\n Fundraising Dinner<br />\n Training Meeting<br />\n Board of Directors Annual Meeting<br />\n\n <br /><br />\n <font color=\"#056085\"><strong>Community Events</strong></font><br />\n Bake Sale<br />\n Charity Auction<br />\n Art Exhibit<br />\n\n <br /><br />\n <font color=\"#056085\"><strong>Important Dates</strong></font><br />\n Tuesday August 27<br />\n Wednesday September 8<br />\n Thursday September 29<br />\n Saturday October 1<br />\n Sunday October 20<br />\n </font>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td colspan=\"2\">\n <table cellpadding=\"10\" cellspacing=\"0\" border=\"0\">\n <tr>\n <td>\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n <font color=\"#7dc857\"><strong>Helpful Tips</strong></font>\n <br /><br />\n <font color=\"#3b5187\">Tokens</font><br />\n Click \"Insert Tokens\" to dynamically insert names, addresses, and other contact data of your recipients.\n <br /><br />\n <font color=\"#3b5187\">Plain Text Version</font><br />\n Some people refuse HTML emails altogether. We recommend sending a plain-text version of your important communications to accommodate them. Luckily, CiviCRM accommodates for this! Just click \"Plain Text\" and copy and paste in some text. Line breaks (carriage returns) and fully qualified URLs like http://www.example.com are all you get, no HTML here!\n <br /><br />\n <font color=\"#3b5187\">Play by the Rules</font><br />\n The address of the sender is required by the Can Spam Act law. This is an available token called domain.address. An unsubscribe or opt-out link is also required. There are several available tokens for this. <em>{action.optOutUrl}</em> creates a link for recipients to click if they want to opt out of receiving emails from your organization. <em>{action.unsubscribeUrl}</em> creates a link to unsubscribe from the specific mailing list used to send this message. Click on \"Insert Tokens\" to find these and look for tokens named \"Domain\" or \"Unsubscribe\". This sample template includes both required tokens at the bottom of the message. You can also configure a default Mailing Footer containing these tokens.\n <br /><br />\n <font color=\"#3b5187\">Composing Offline</font><br />\n If you prefer to compose an HTML email offline in your own text editor, you can upload this HTML content into CiviMail or simply click \"Source\" and then copy and paste the HTML in.\n <br /><br />\n <font color=\"#3b5187\">Images</font><br />\n Most email clients these days (Outlook, Gmail, etc) block image loading by default. This is to protect their users from annoying or harmful email. Not much we can do about this, so encourage recipients to add you to their contacts or \"whitelist\". Also use images sparingly, do not rely on images to convey vital information, and always use HTML \"alt\" tags which describe the image content.\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" style=\"color: #000; font-family: Arial, Verdana, sans-serif; font-size: 10px;\">\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n <hr />\n <a href=\"{action.unsubscribeUrl}\" title=\"click to unsubscribe\">Click here</a> to unsubscribe from this mailing list.<br /><br />\n Our mailing address is:<br />\n {domain.address}\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n',1,NULL,1,0,0,NULL),(66,'Sample Responsive Design Newsletter - Single Column Template','Sample Responsive Design Newsletter - Single Column','','<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n <title></title>\n\n <style type=\"text/css\">\n {literal}\n /* Client-specific Styles */\n #outlook a {padding:0;} /* Force Outlook to provide a \"view in browser\" menu link. */\n body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}\n\n /* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */\n .ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */\n .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing. */\n #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}\n img {outline:none; text-decoration:none;border:none; -ms-interpolation-mode: bicubic;}\n a img {border:none;}\n .image_fix {display:block;}\n p {margin: 0px 0px !important;}\n table td {border-collapse: collapse;}\n table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }\n a {text-decoration: none;text-decoration:none;}\n\n /*STYLES*/\n table[class=full] { width: 100%; clear: both; }\n\n /*IPAD STYLES*/\n @media only screen and (max-width: 640px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color:#136388;pointer-events: auto;cursor: default;}\n table[class=devicewidth] {width: 440px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 416px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 416px!important;text-align:center!important;}\n img[class=banner] {width: 440px!important;auto!important;}\n img[class=col2img] {width: 440px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 100px!important;}\n table[class=\"col3img\"] {width: 131px!important;}\n img[class=\"col3img\"] {width: 131px!important;height: auto!important;}\n table[class=\"removeMobile\"]{width:10px!important;}\n img[class=\"blog\"] {width: 440px!important;height: auto!important;}\n }\n\n /*IPHONE STYLES*/\n @media only screen and (max-width: 480px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #136388;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: auto;cursor: default;}\n\n table[class=devicewidth] {width: 280px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 260px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 260px!important;text-align:center!important;}\n img[class=banner] {width: 280px!important;height:100px!important;}\n img[class=col2img] {width: 280px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 260px!important;}\n img[class=\"col3img\"] {width: 280px!important;height: auto!important;}\n table[class=\"col3img\"] {width: 280px!important;}\n img[class=\"blog\"] {width: 280px!important;auto!important;}\n td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}\n }\n\n @media only screen and (max-device-width: 800px)\n {td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}}\n @media only screen and (max-device-width: 769px) {\n .devicewidthmob {font-size:16px;}\n }\n\n @media only screen and (max-width: 640px) {\n .desktop-spacer {display:none !important;}\n }\n {/literal}\n </style>\n\n<body>\n <!-- Start of preheader --><!-- Start of preheader -->\n <table bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"310\">\n <tbody>\n <tr>\n <td align=\"left\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; line-height:120%; color: #f8f8f8;padding-left:15px; padding-bottom:5px;\" valign=\"middle\">Organization or Program Name Here</td>\n </tr>\n </tbody>\n </table>\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"emhide\" width=\"310\">\n <tbody>\n <tr>\n <td align=\"right\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px;color: #f8f8f8;padding-right:15px; text-align:right;\" valign=\"middle\">Month and Year</td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- End of main-banner-->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"93%\">\n <tbody>\n <tr>\n <td rowspan=\"2\" style=\"padding-top:10px; padding-bottom:10px;\" width=\"38%\"><img src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/civicrm-logo-transparent.png\" alt=\"Replace with your own logo\" width=\"220\" border=\"0\" /></td>\n <td align=\"right\" width=\"62%\">\n <h6 class=\"collapse\"> </h6>\n </td>\n </tr>\n <tr>\n <td align=\"right\">\n <h5 style=\"font-family: Gill Sans, Gill Sans MT, Myriad Pro, DejaVu Sans Condensed, Helvetica, Arial, sans-serif; color:#136388;\"> </h5>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 23px; color:#f8f8f8; text-align:left; line-height: 32px; padding:5px 15px; background-color:#136388;\">Headline Here</td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- hero story -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/650x396.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /hero image --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 26px; padding:0 15px; color:#89c66b;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading Here</a></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td style=\"padding:0 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">{contact.email_greeting}, </p>\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></p>\n </td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n </tr>\n <!-- /button --><!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- end of hero image and story --><!-- story 1 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"250\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 26px; padding:0 15px;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading Here</a></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td style=\"padding:0 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n </td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n </tr>\n <!-- /button --><!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story 2--><!-- banner1 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- content --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"padding:15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n </td>\n </tr>\n <!-- /button --><!-- white button -->\n <!-- /button --><!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /banner 1--><!-- banner 2 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#136388\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- content --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"padding: 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Remember to link the facebook and twitter links below to your pages!</p>\n </td>\n </tr>\n <!-- /button --><!-- white button -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-bottom:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#ffffff;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n </tr>\n <!-- /button --><!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /banner2 --><!-- footer -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"footer\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td><!-- logo -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\n <tbody>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px;\"><a href=\"{action.unsubscribeUrl}\" style=\"color: #f0f0f0; \">Unsubscribe | </a><a href=\"{action.subscribeUrl}\" style=\"color: #f0f0f0;\">Subscribe |</a> <a href=\"{action.optOutUrl}\" style=\"color: #f0f0f0;\">Opt out</a></span></td>\n </tr>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px; color: #f0f0f0;\">{domain.address}</span></td>\n </tr>\n </tbody>\n </table>\n <!-- end of logo --><!-- start of social icons -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"40\" vaalign=\"middle\" width=\"60\">\n <tbody>\n <tr>\n <td align=\"left\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/facebook.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"10\"> </td>\n <td align=\"right\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/twitter.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"20\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of social icons --></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n\n</body>\n</html>\n',1,NULL,1,0,0,NULL),(67,'Sample Responsive Design Newsletter - Two Column Template','Sample Responsive Design Newsletter - Two Column','','<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n <title></title>\n <style type=\"text/css\">\n {literal}\n img {height: auto !important;}\n /* Client-specific Styles */\n #outlook a {padding:0;} /* Force Outlook to provide a \"view in browser\" menu link. */\n body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}\n\n /* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */\n .ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */\n .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing. */\n #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}\n img {outline:none; text-decoration:none;border:none; -ms-interpolation-mode: bicubic;}\n a img {border:none;}\n .image_fix {display:block;}\n p {margin: 0px 0px !important;}\n table td {border-collapse: collapse;}\n table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }\n a {/*color: #33b9ff;*/text-decoration: none;text-decoration:none!important;}\n\n\n /*STYLES*/\n table[class=full] { width: 100%; clear: both; }\n\n /*IPAD STYLES*/\n @media only screen and (max-width: 640px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #0a8cce;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color: #0a8cce !important;pointer-events: auto;cursor: default;}\n table[class=devicewidth] {width: 440px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 414px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 414px!important;text-align:center!important;}\n img[class=banner] {width: 440px!important;auto!important;}\n img[class=col2img] {width: 440px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 100px!important;}\n table[class=\"col3img\"] {width: 131px!important;}\n img[class=\"col3img\"] {width: 131px!important;height: auto!important;}\n table[class=\"removeMobile\"]{width:10px!important;}\n img[class=\"blog\"] {width: 440px!important;height: auto!important;}\n }\n\n /*IPHONE STYLES*/\n @media only screen and (max-width: 480px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #0a8cce;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color: #0a8cce !important; pointer-events: auto;cursor: default;}\n table[class=devicewidth] {width: 280px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 260px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 260px!important;text-align:center!important;}\n img[class=banner] {width: 280px!important;height:100px!important;}\n img[class=col2img] {width: 280px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 260px!important;}\n img[class=\"col3img\"] {width: 280px!important;height: auto!important;}\n table[class=\"col3img\"] {width: 280px!important;}\n img[class=\"blog\"] {width: 280px!important;auto!important;}\n td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}\n }\n\n @media only screen and (max-device-width: 800px)\n {td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}}\n @media only screen and (max-device-width: 769px) {.devicewidthmob {font-size:14px;}}\n\n @media only screen and (max-width: 640px) {.desktop-spacer {display:none !important;}\n }\n {/literal}\n </style>\n <body>\n <!-- Start of preheader --><!-- Start of preheader -->\n <table bgcolor=\"#0B4151\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"360\">\n <tbody>\n <tr>\n <td align=\"left\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height:120%; color: #f8f8f8;padding-left:15px;\" valign=\"middle\">Organization or Program Name Here</td>\n </tr>\n </tbody>\n </table>\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"emhide\" width=\"320\">\n <tbody>\n <tr>\n <td align=\"right\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px;color: #f8f8f8;padding-right:15px;\" valign=\"middle\">Month Year</td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- End of preheader --><!-- start of logo -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"93%\">\n <tbody>\n <tr>\n <td rowspan=\"2\" width=\"330\"><a href=\"#\"> <div class=\"imgpop\"><img src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/civicrm-logo-transparent.png\" alt=\"Replace with your own logo\" width=\"220\" border=\"0\" style=\"display:block;\"/></div></a></td>\n <td align=\"right\" >\n <h6 class=\"collapse\"> </h6>\n </td>\n </tr>\n <tr>\n <td align=\"right\">\n\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- end of logo --> <!-- hero story 1 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"101%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#f8f8f8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#f8f8f8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 24px; color:#f8f8f8; text-align:left; line-height: 26px; padding:5px 15px; background-color: #80C457\">Hero Story Heading</td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"700\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"396\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/700x396.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"700\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- hero story -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 26px; padding:0 15px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Subheading Here</a></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr><!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 26px; padding:0 15px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></td>\n </tr>\n\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr><!-- /Spacing -->\n\n <!-- /Spacing --><!-- /hero story -->\n\n <!-- Spacing --> <!-- Spacing -->\n\n\n\n <!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Section Heading -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 24px; color:#f8f8f8; text-align:left; line-height: 26px; padding:5px 15px; background-color: #80C457\">Section Heading Here</td>\n </tr>\n <!-- /Section Heading -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /hero story 1 --><!-- story one -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"CiviCRM helps keep the “City Beautiful†Movementâ€going strong\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"CiviCRM helps keep the “City Beautiful†Movementâ€going strong\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story one -->\n <!-- story two -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- Spacing -->\n <tr>\n <td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"How CiviCRM will take Tribodar Eco Learning Center to another level\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"How CiviCRM will take Tribodar Eco Learning Center to another level\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story two --><!-- story three -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- Spacing -->\n <tr>\n <td height=\"20\" class=\"desktop-spacer\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"CiviCRM provides a soup-to-nuts open-source solution for Friends of the San Pedro River\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"CiviCRM provides a soup-to-nuts open-source solution for Friends of the San Pedro River\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story three -->\n\n\n\n\n\n <!-- story four -->\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <!-- Spacing -->\n <tr>\n <td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <!-- Spacing -->\n <tr>\n <td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"Google Summer of Code\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"Google Summer of Code\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"padding: 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color:#076187; text-align:left; line-height: 26px; padding-bottom:10px;\">Remember to link the facebook and twitter links below to your pages!</p>\n </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story four -->\n\n <!-- footer -->\n\n <!-- End of footer --><!-- Start of postfooter -->\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"footer\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td><!-- logo -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\n <tbody>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px;\"><a href=\"{action.unsubscribeUrl}\" style=\"color: #f0f0f0;\">Unsubscribe | </a><a href=\"{action.subscribeUrl}\" style=\"color: #f0f0f0;\">Subscribe |</a> <a href=\"{action.optOutUrl}\" style=\"color: #f0f0f0;\">Opt out</a></span></td>\n </tr>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px; color: #f0f0f0;\">{domain.address}</span></td>\n </tr>\n </tbody>\n </table>\n <!-- end of logo --><!-- start of social icons -->\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"40\" vaalign=\"middle\" width=\"60\">\n <tbody>\n <tr>\n <td align=\"left\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/facebook.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div> </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"10\"> </td>\n <td align=\"right\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/twitter.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"20\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of social icons --></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td bgcolor=\"#80C457\" height=\"10\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- End of footer -->\n </body>\n</html>\n',1,NULL,1,0,0,NULL); /*!40000 ALTER TABLE `civicrm_msg_template` ENABLE KEYS */; UNLOCK TABLES; @@ -976,7 +976,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_navigation` WRITE; /*!40000 ALTER TABLE `civicrm_navigation` DISABLE KEYS */; -INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `icon`, `permission`, `permission_operator`, `parent_id`, `is_active`, `has_separator`, `weight`) VALUES (1,1,'Home','Home','civicrm/dashboard?reset=1',NULL,NULL,'',NULL,1,NULL,0),(2,1,'Search','Search...',NULL,NULL,NULL,'',NULL,1,NULL,10),(3,1,'Find Contacts','Find Contacts','civicrm/contact/search?reset=1',NULL,NULL,'',2,1,NULL,1),(4,1,'Advanced Search','Advanced Search','civicrm/contact/search/advanced?reset=1',NULL,NULL,'',2,1,NULL,2),(5,1,'Full-text Search','Full-text Search','civicrm/contact/search/custom?csid=15&reset=1',NULL,NULL,'',2,1,NULL,3),(6,1,'Search Builder','Search Builder','civicrm/contact/search/builder?reset=1',NULL,NULL,'',2,1,1,4),(7,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',2,1,NULL,5),(8,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',2,1,NULL,6),(9,1,'Find Mailings','Find Mailings','civicrm/mailing?reset=1',NULL,'access CiviMail','',2,1,NULL,7),(10,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',2,1,NULL,8),(11,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',2,1,NULL,9),(12,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',2,1,NULL,10),(13,1,'Find Activities','Find Activities','civicrm/activity/search?reset=1',NULL,NULL,'',2,1,1,11),(14,1,'Custom Searches','Custom Searches','civicrm/contact/search/custom/list?reset=1',NULL,NULL,'',2,1,NULL,12),(15,1,'Contacts','Contacts',NULL,NULL,NULL,'',NULL,1,NULL,20),(16,1,'New Individual','New Individual','civicrm/contact/add?reset=1&ct=Individual',NULL,'add contacts','',15,1,NULL,1),(17,1,'New Household','New Household','civicrm/contact/add?reset=1&ct=Household',NULL,'add contacts','',15,1,NULL,2),(18,1,'New Organization','New Organization','civicrm/contact/add?reset=1&ct=Organization',NULL,'add contacts','',15,1,1,3),(19,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'access CiviReport','',15,1,1,4),(20,1,'New Activity','New Activity','civicrm/activity?reset=1&action=add&context=standalone',NULL,NULL,'',15,1,NULL,5),(21,1,'New Email','New Email','civicrm/activity/email/add?atype=3&action=add&reset=1&context=standalone',NULL,NULL,'',15,1,1,6),(22,1,'Import Contacts','Import Contacts','civicrm/import/contact?reset=1',NULL,'import contacts','',15,1,NULL,7),(23,1,'Import Activities','Import Activities','civicrm/import/activity?reset=1',NULL,'import contacts','',15,1,1,8),(24,1,'New Group','New Group','civicrm/group/add?reset=1',NULL,'edit groups','',15,1,NULL,9),(25,1,'Manage Groups','Manage Groups','civicrm/group?reset=1',NULL,'access CiviCRM','',15,1,1,10),(26,1,'New Tag','New Tag','civicrm/tag?reset=1&action=add',NULL,'manage tags','',15,1,NULL,11),(27,1,'Manage Tags (Categories)','Manage Tags (Categories)','civicrm/tag?reset=1',NULL,'manage tags','',15,1,1,12),(28,1,'Find and Merge Duplicate Contacts','Find and Merge Duplicate Contacts','civicrm/contact/deduperules?reset=1',NULL,'administer dedupe rules,merge duplicate contacts','OR',15,1,NULL,13),(29,1,'Contributions','Contributions',NULL,NULL,'access CiviContribute','',NULL,1,NULL,30),(30,1,'Dashboard','Dashboard','civicrm/contribute?reset=1',NULL,'access CiviContribute','',29,1,NULL,1),(31,1,'New Contribution','New Contribution','civicrm/contribute/add?reset=1&action=add&context=standalone',NULL,'access CiviContribute,edit contributions','AND',29,1,NULL,2),(32,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',29,1,NULL,3),(33,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',29,1,1,4),(34,1,'Import Contributions','Import Contributions','civicrm/contribute/import?reset=1',NULL,'access CiviContribute,edit contributions','AND',29,1,1,5),(35,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',29,1,NULL,7),(36,1,'Pledges','Pledges',NULL,NULL,'access CiviPledge','',29,1,1,6),(37,1,'Accounting Batches','Accounting Batches',NULL,NULL,'view own manual batches,view all manual batches','OR',29,1,1,8),(38,1,'Dashboard','Dashboard','civicrm/pledge?reset=1',NULL,'access CiviPledge','',36,1,NULL,1),(39,1,'New Pledge','New Pledge','civicrm/pledge/add?reset=1&action=add&context=standalone',NULL,'access CiviPledge,edit pledges','AND',36,1,NULL,2),(40,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',36,1,NULL,3),(41,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',36,1,0,4),(42,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute/add?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,9),(43,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,10),(44,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,11),(45,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,12),(46,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,13),(47,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,14),(48,1,'New Batch','New Batch','civicrm/financial/batch?reset=1&action=add',NULL,'create manual batch','AND',37,1,NULL,1),(49,1,'Open Batches','Open Batches','civicrm/financial/financialbatches?reset=1&batchStatus=1',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,2),(50,1,'Closed Batches','Closed Batches','civicrm/financial/financialbatches?reset=1&batchStatus=2',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,3),(51,1,'Exported Batches','Exported Batches','civicrm/financial/financialbatches?reset=1&batchStatus=5',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,4),(52,1,'Events','Events',NULL,NULL,'access CiviEvent','',NULL,1,NULL,40),(53,1,'Dashboard','CiviEvent Dashboard','civicrm/event?reset=1',NULL,'access CiviEvent','',52,1,NULL,1),(54,1,'Register Event Participant','Register Event Participant','civicrm/participant/add?reset=1&action=add&context=standalone',NULL,'access CiviEvent,edit event participants','AND',52,1,NULL,2),(55,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',52,1,NULL,3),(56,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',52,1,1,4),(57,1,'Import Participants','Import Participants','civicrm/event/import?reset=1',NULL,'access CiviEvent,edit event participants','AND',52,1,1,5),(58,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,6),(59,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,1,7),(60,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',52,1,1,8),(61,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,1,9),(62,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,10),(63,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,11),(64,1,'Mailings','Mailings',NULL,NULL,'access CiviMail,create mailings,approve mailings,schedule mailings,send SMS','OR',NULL,1,NULL,50),(65,1,'New Mailing','New Mailing','civicrm/mailing/send?reset=1',NULL,'access CiviMail,create mailings','OR',64,1,NULL,1),(66,1,'Draft and Unscheduled Mailings','Draft and Unscheduled Mailings','civicrm/mailing/browse/unscheduled?reset=1&scheduled=false',NULL,'access CiviMail,create mailings,schedule mailings','OR',64,1,NULL,2),(67,1,'Scheduled and Sent Mailings','Scheduled and Sent Mailings','civicrm/mailing/browse/scheduled?reset=1&scheduled=true',NULL,'access CiviMail,approve mailings,create mailings,schedule mailings','OR',64,1,NULL,3),(68,1,'Archived Mailings','Archived Mailings','civicrm/mailing/browse/archived?reset=1',NULL,'access CiviMail,create mailings','OR',64,1,NULL,4),(69,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',64,1,1,5),(70,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',64,1,NULL,6),(71,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'edit message templates','',64,1,NULL,7),(72,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',64,1,1,8),(73,1,'New SMS','New SMS','civicrm/sms/send?reset=1',NULL,'send SMS',NULL,64,1,NULL,9),(74,1,'Find Mass SMS','Find Mass SMS','civicrm/mailing/browse?reset=1&sms=1',NULL,'send SMS',NULL,64,1,1,10),(75,1,'New A/B Test','New A/B Test','civicrm/a/#/abtest/new',NULL,'access CiviMail','',64,1,NULL,15),(76,1,'Manage A/B Tests','Manage A/B Tests','civicrm/a/#/abtest',NULL,'access CiviMail','',64,1,1,16),(77,1,'Memberships','Memberships',NULL,NULL,'access CiviMember','',NULL,1,NULL,60),(78,1,'Dashboard','Dashboard','civicrm/member?reset=1',NULL,'access CiviMember','',77,1,NULL,1),(79,1,'New Membership','New Membership','civicrm/member/add?reset=1&action=add&context=standalone',NULL,'access CiviMember,edit memberships','AND',77,1,NULL,2),(80,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',77,1,NULL,3),(81,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',77,1,1,4),(82,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',77,1,NULL,5),(83,1,'Import Memberships','Import Members','civicrm/member/import?reset=1',NULL,'access CiviMember,edit memberships','AND',77,1,1,6),(84,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',77,1,NULL,7),(85,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',77,1,NULL,8),(86,1,'Campaigns','Campaigns',NULL,NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',NULL,1,NULL,70),(87,1,'Dashboard','Dashboard','civicrm/campaign?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,1),(88,1,'Surveys','Survey Dashboard','civicrm/campaign?reset=1&subPage=survey',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,1),(89,1,'Petitions','Petition Dashboard','civicrm/campaign?reset=1&subPage=petition',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,2),(90,1,'Campaigns','Campaign Dashboard','civicrm/campaign?reset=1&subPage=campaign',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,3),(91,1,'New Campaign','New Campaign','civicrm/campaign/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,2),(92,1,'New Survey','New Survey','civicrm/survey/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,3),(93,1,'New Petition','New Petition','civicrm/petition/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,4),(94,1,'Reserve Respondents','Reserve Respondents','civicrm/survey/search?reset=1&op=reserve',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts','OR',86,1,NULL,5),(95,1,'Interview Respondents','Interview Respondents','civicrm/survey/search?reset=1&op=interview',NULL,'administer CiviCampaign,manage campaign,interview campaign contacts','OR',86,1,NULL,6),(96,1,'Release Respondents','Release Respondents','civicrm/survey/search?reset=1&op=release',NULL,'administer CiviCampaign,manage campaign,release campaign contacts','OR',86,1,NULL,7),(97,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',86,1,1,8),(98,1,'Conduct Survey','Conduct Survey','civicrm/campaign/vote?reset=1',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts,interview campaign contacts','OR',86,1,NULL,9),(99,1,'GOTV (Voter Tracking)','Voter Listing','civicrm/campaign/gotv?reset=1',NULL,'administer CiviCampaign,manage campaign,release campaign contacts,gotv campaign contacts','OR',86,1,NULL,10),(100,1,'Cases','Cases',NULL,NULL,'access my cases and activities,access all cases and activities','OR',NULL,1,NULL,80),(101,1,'Dashboard','Dashboard','civicrm/case?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',100,1,NULL,1),(102,1,'New Case','New Case','civicrm/case/add?reset=1&action=add&atype=13&context=standalone',NULL,'add cases,access all cases and activities','OR',100,1,NULL,2),(103,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',100,1,1,3),(104,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',100,1,0,4),(105,1,'Grants','Grants',NULL,NULL,'access CiviGrant','',NULL,1,NULL,90),(106,1,'Dashboard','Dashboard','civicrm/grant?reset=1',NULL,'access CiviGrant','',105,1,NULL,1),(107,1,'New Grant','New Grant','civicrm/grant/add?reset=1&action=add&context=standalone',NULL,'access CiviGrant,edit grants','AND',105,1,NULL,2),(108,1,'Find Grants','Find Grants','civicrm/grant/search?reset=1',NULL,'access CiviGrant','',105,1,1,3),(109,1,'Grant Reports','Grant Reports','civicrm/report/list?compid=5&reset=1',NULL,'access CiviGrant','',105,1,0,4),(110,1,'Administer','Administer',NULL,NULL,'administer CiviCRM','',NULL,1,NULL,100),(111,1,'Administration Console','Administration Console','civicrm/admin?reset=1',NULL,'administer CiviCRM','',110,1,NULL,1),(112,1,'System Status','System Status','civicrm/a/#/status',NULL,'administer CiviCRM','',111,1,NULL,0),(113,1,'Configuration Checklist','Configuration Checklist','civicrm/admin/configtask?reset=1',NULL,'administer CiviCRM','',111,1,NULL,1),(114,1,'Customize Data and Screens','Customize Data and Screens',NULL,NULL,'administer CiviCRM','',110,1,NULL,3),(115,1,'Custom Fields','Custom Fields','civicrm/admin/custom/group?reset=1',NULL,'administer CiviCRM','',114,1,NULL,1),(116,1,'Profiles','Profiles','civicrm/admin/uf/group?reset=1',NULL,'administer CiviCRM','',114,1,NULL,2),(117,1,'Tags (Categories)','Tags (Categories)','civicrm/tag?reset=1',NULL,'administer CiviCRM','',114,1,NULL,3),(118,1,'Activity Types','Activity Types','civicrm/admin/options/activity_type?reset=1',NULL,'administer CiviCRM','',114,1,NULL,4),(119,1,'Relationship Types','Relationship Types','civicrm/admin/reltype?reset=1',NULL,'administer CiviCRM','',114,1,NULL,5),(120,1,'Contact Types','Contact Types','civicrm/admin/options/subtype?reset=1',NULL,'administer CiviCRM','',114,1,NULL,6),(121,1,'Display Preferences','Display Preferences','civicrm/admin/setting/preferences/display?reset=1',NULL,'administer CiviCRM','',114,1,NULL,9),(122,1,'Search Preferences','Search Preferences','civicrm/admin/setting/search?reset=1',NULL,'administer CiviCRM','',114,1,NULL,10),(123,1,'Date Preferences','Date Preferences','civicrm/admin/setting/preferences/date?reset=1',NULL,'administer CiviCRM','',114,1,NULL,11),(124,1,'Navigation Menu','Navigation Menu','civicrm/admin/menu?reset=1',NULL,'administer CiviCRM','',114,1,NULL,12),(125,1,'Word Replacements','Word Replacements','civicrm/admin/options/wordreplacements?reset=1',NULL,'administer CiviCRM','',114,1,NULL,13),(126,1,'Manage Custom Searches','Manage Custom Searches','civicrm/admin/options/custom_search?reset=1',NULL,'administer CiviCRM','',114,1,NULL,14),(127,1,'Dropdown Options','Dropdown Options',NULL,NULL,'administer CiviCRM','',114,1,NULL,8),(128,1,'Gender Options','Gender Options','civicrm/admin/options/gender?reset=1',NULL,'administer CiviCRM','',127,1,NULL,1),(129,1,'Individual Prefixes (Ms, Mr...)','Individual Prefixes (Ms, Mr...)','civicrm/admin/options/individual_prefix?reset=1',NULL,'administer CiviCRM','',127,1,NULL,2),(130,1,'Individual Suffixes (Jr, Sr...)','Individual Suffixes (Jr, Sr...)','civicrm/admin/options/individual_suffix?reset=1',NULL,'administer CiviCRM','',127,1,NULL,3),(131,1,'Instant Messenger Services','Instant Messenger Services','civicrm/admin/options/instant_messenger_service?reset=1',NULL,'administer CiviCRM','',127,1,NULL,4),(132,1,'Location Types (Home, Work...)','Location Types (Home, Work...)','civicrm/admin/locationType?reset=1',NULL,'administer CiviCRM','',127,1,NULL,5),(133,1,'Mobile Phone Providers','Mobile Phone Providers','civicrm/admin/options/mobile_provider?reset=1',NULL,'administer CiviCRM','',127,1,NULL,6),(134,1,'Phone Types','Phone Types','civicrm/admin/options/phone_type?reset=1',NULL,'administer CiviCRM','',127,1,NULL,7),(135,1,'Website Types','Website Types','civicrm/admin/options/website_type?reset=1',NULL,'administer CiviCRM','',127,1,NULL,8),(136,1,'Communications','Communications',NULL,NULL,'administer CiviCRM','',110,1,NULL,4),(137,1,'Organization Address and Contact Info','Organization Address and Contact Info','civicrm/admin/domain?action=update&reset=1',NULL,'administer CiviCRM','',136,1,NULL,1),(138,1,'FROM Email Addresses','FROM Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',136,1,NULL,2),(139,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',136,1,NULL,3),(140,1,'Schedule Reminders','Schedule Reminders','civicrm/admin/scheduleReminders?reset=1',NULL,'administer CiviCRM','',136,1,NULL,4),(141,1,'Preferred Communication Methods','Preferred Communication Methods','civicrm/admin/options/preferred_communication_method?reset=1',NULL,'administer CiviCRM','',136,1,NULL,5),(142,1,'Label Formats','Label Formats','civicrm/admin/labelFormats?reset=1',NULL,'administer CiviCRM','',136,1,NULL,6),(143,1,'Print Page (PDF) Formats','Print Page (PDF) Formats','civicrm/admin/pdfFormats?reset=1',NULL,'administer CiviCRM','',136,1,NULL,7),(144,1,'Communication Style Options','Communication Style Options','civicrm/admin/options/communication_style?reset=1',NULL,'administer CiviCRM','',136,1,NULL,8),(145,1,'Email Greeting Formats','Email Greeting Formats','civicrm/admin/options/email_greeting?reset=1',NULL,'administer CiviCRM','',136,1,NULL,9),(146,1,'Postal Greeting Formats','Postal Greeting Formats','civicrm/admin/options/postal_greeting?reset=1',NULL,'administer CiviCRM','',136,1,NULL,10),(147,1,'Addressee Formats','Addressee Formats','civicrm/admin/options/addressee?reset=1',NULL,'administer CiviCRM','',136,1,NULL,11),(148,1,'Localization','Localization',NULL,NULL,'administer CiviCRM','',110,1,NULL,6),(149,1,'Languages, Currency, Locations','Languages, Currency, Locations','civicrm/admin/setting/localization?reset=1',NULL,'administer CiviCRM','',148,1,NULL,1),(150,1,'Address Settings','Address Settings','civicrm/admin/setting/preferences/address?reset=1',NULL,'administer CiviCRM','',148,1,NULL,2),(151,1,'Date Formats','Date Formats','civicrm/admin/setting/date?reset=1',NULL,'administer CiviCRM','',148,1,NULL,3),(152,1,'Preferred Language Options','Preferred Language Options','civicrm/admin/options/languages?reset=1',NULL,'administer CiviCRM','',148,1,NULL,4),(153,1,'Users and Permissions','Users and Permissions',NULL,NULL,'administer CiviCRM','',110,1,NULL,7),(154,1,'Permissions (Access Control)','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',153,1,NULL,1),(155,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',153,1,NULL,2),(156,1,'System Settings','System Settings',NULL,NULL,'administer CiviCRM','',110,1,NULL,8),(157,1,'Components','Enable Components','civicrm/admin/setting/component?reset=1',NULL,'administer CiviCRM','',156,1,NULL,1),(158,1,'Connections','Connections','civicrm/a/#/cxn',NULL,'administer CiviCRM','',156,1,NULL,2),(159,1,'Extensions','Manage Extensions','civicrm/admin/extensions?reset=1',NULL,'administer CiviCRM','',156,1,1,3),(160,1,'Cleanup Caches and Update Paths','Cleanup Caches and Update Paths','civicrm/admin/setting/updateConfigBackend?reset=1',NULL,'administer CiviCRM','',156,1,NULL,4),(161,1,'CMS Database Integration','CMS Integration','civicrm/admin/setting/uf?reset=1',NULL,'administer CiviCRM','',156,1,NULL,5),(162,1,'Debugging and Error Handling','Debugging and Error Handling','civicrm/admin/setting/debug?reset=1',NULL,'administer CiviCRM','',156,1,NULL,6),(163,1,'Directories','Directories','civicrm/admin/setting/path?reset=1',NULL,'administer CiviCRM','',156,1,NULL,7),(164,1,'Import/Export Mappings','Import/Export Mappings','civicrm/admin/mapping?reset=1',NULL,'administer CiviCRM','',156,1,NULL,8),(165,1,'Mapping and Geocoding','Mapping and Geocoding','civicrm/admin/setting/mapping?reset=1',NULL,'administer CiviCRM','',156,1,NULL,9),(166,1,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','civicrm/admin/setting/misc?reset=1',NULL,'administer CiviCRM','',156,1,NULL,10),(167,1,'Multi Site Settings','Multi Site Settings','civicrm/admin/setting/preferences/multisite?reset=1',NULL,'administer CiviCRM','',156,1,NULL,11),(168,1,'Option Groups','Option Groups','civicrm/admin/options?reset=1',NULL,'administer CiviCRM','',156,1,NULL,12),(169,1,'Outbound Email (SMTP/Sendmail)','Outbound Email','civicrm/admin/setting/smtp?reset=1',NULL,'administer CiviCRM','',156,1,NULL,13),(170,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',156,1,NULL,14),(171,1,'Resource URLs','Resource URLs','civicrm/admin/setting/url?reset=1',NULL,'administer CiviCRM','',156,1,NULL,15),(172,1,'Safe File Extensions','Safe File Extensions','civicrm/admin/options/safe_file_extension?reset=1',NULL,'administer CiviCRM','',156,1,NULL,16),(173,1,'Scheduled Jobs','Scheduled Jobs','civicrm/admin/job?reset=1',NULL,'administer CiviCRM','',156,1,NULL,17),(174,1,'SMS Providers','SMS Providers','civicrm/admin/sms/provider?reset=1',NULL,'administer CiviCRM','',156,1,NULL,18),(175,1,'CiviCampaign','CiviCampaign',NULL,NULL,'administer CiviCampaign,administer CiviCRM','AND',110,1,NULL,9),(176,1,'Survey Types','Survey Types','civicrm/admin/campaign/surveyType?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,1),(177,1,'Campaign Types','Campaign Types','civicrm/admin/options/campaign_type?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,2),(178,1,'Campaign Status','Campaign Status','civicrm/admin/options/campaign_status?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,3),(179,1,'Engagement Index','Engagement Index','civicrm/admin/options/engagement_index?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,4),(180,1,'CiviCampaign Component Settings','CiviCampaign Component Settings','civicrm/admin/setting/preferences/campaign?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,5),(181,1,'CiviCase','CiviCase',NULL,NULL,'administer CiviCase',NULL,110,1,NULL,10),(182,1,'CiviCase Settings','CiviCase Settings','civicrm/admin/setting/case?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,1),(183,1,'Case Types','Case Types','civicrm/a/#/caseType',NULL,'administer CiviCase',NULL,181,1,NULL,2),(184,1,'Redaction Rules','Redaction Rules','civicrm/admin/options/redaction_rule?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,3),(185,1,'Case Statuses','Case Statuses','civicrm/admin/options/case_status?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,4),(186,1,'Encounter Medium','Encounter Medium','civicrm/admin/options/encounter_medium?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,5),(187,1,'CiviContribute','CiviContribute',NULL,NULL,'access CiviContribute,administer CiviCRM','AND',110,1,NULL,11),(188,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,6),(189,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,7),(190,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,8),(191,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,9),(192,1,'Financial Types','Financial Types','civicrm/admin/financial/financialType?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,10),(193,1,'Financial Accounts','Financial Accounts','civicrm/admin/financial/financialAccount?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,11),(194,1,'Payment Methods','Payment Instruments','civicrm/admin/options/payment_instrument?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,12),(195,1,'Accepted Credit Cards','Accepted Credit Cards','civicrm/admin/options/accept_creditcard?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,13),(196,1,'Soft Credit Types','Soft Credit Types','civicrm/admin/options/soft_credit_type?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,14),(197,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,15),(198,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,16),(199,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',187,1,NULL,17),(200,1,'CiviContribute Component Settings','CiviContribute Component Settings','civicrm/admin/setting/preferences/contribute?reset=1',NULL,'administer CiviCRM','',187,1,NULL,18),(201,1,'CiviEvent','CiviEvent',NULL,NULL,'access CiviEvent,administer CiviCRM','AND',110,1,NULL,12),(202,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,1),(203,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,2),(204,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,3),(205,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,4),(206,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,5),(207,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,6),(208,1,'Event Types','Event Types','civicrm/admin/options/event_type?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,7),(209,1,'Participant Statuses','Participant Statuses','civicrm/admin/participant_status?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,8),(210,1,'Participant Roles','Participant Roles','civicrm/admin/options/participant_role?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,9),(211,1,'Participant Listing Options','Participant Listing Options','civicrm/admin/options/participant_listing?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,10),(212,1,'Event Name Badge Layouts','Event Name Badge Layouts','civicrm/admin/badgelayout?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,11),(213,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',201,1,NULL,12),(214,1,'CiviEvent Component Settings','CiviEvent Component Settings','civicrm/admin/setting/preferences/event?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,13),(215,1,'CiviGrant','CiviGrant',NULL,NULL,'access CiviGrant,administer CiviCRM','AND',110,1,NULL,13),(216,1,'Grant Types','Grant Types','civicrm/admin/options/grant_type?reset=1',NULL,'access CiviGrant,administer CiviCRM','AND',215,1,NULL,1),(217,1,'Grant Status','Grant Status','civicrm/admin/options/grant_status?reset=1',NULL,'access CiviGrant,administer CiviCRM','AND',215,1,NULL,2),(218,1,'CiviMail','CiviMail',NULL,NULL,'access CiviMail,administer CiviCRM','AND',110,1,NULL,14),(219,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,1),(220,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',218,1,NULL,2),(221,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',218,1,NULL,3),(222,1,'Mail Accounts','Mail Accounts','civicrm/admin/mailSettings?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,4),(223,1,'Mailer Settings','Mailer Settings','civicrm/admin/mail?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,5),(224,1,'CiviMail Component Settings','CiviMail Component Settings','civicrm/admin/setting/preferences/mailing?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,6),(225,1,'CiviMember','CiviMember',NULL,NULL,'access CiviMember,administer CiviCRM','AND',110,1,NULL,15),(226,1,'Membership Types','Membership Types','civicrm/admin/member/membershipType?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,1),(227,1,'Membership Status Rules','Membership Status Rules','civicrm/admin/member/membershipStatus?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,1,2),(228,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,3),(229,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,4),(230,1,'CiviMember Component Settings','CiviMember Component Settings','civicrm/admin/setting/preferences/member?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,5),(231,1,'CiviReport','CiviReport',NULL,NULL,'access CiviReport,administer CiviCRM','AND',110,1,NULL,16),(232,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',231,1,NULL,1),(233,1,'Create New Report from Template','Create New Report from Template','civicrm/admin/report/template/list?reset=1',NULL,'administer Reports','',231,1,NULL,2),(234,1,'Manage Templates','Manage Templates','civicrm/admin/report/options/report_template?reset=1',NULL,'administer Reports','',231,1,NULL,3),(235,1,'Register Report','Register Report','civicrm/admin/report/register?reset=1',NULL,'administer Reports','',231,1,NULL,4),(236,1,'Support','Support',NULL,NULL,NULL,'',NULL,1,NULL,110),(237,1,'Get started','Get started','https://civicrm.org/get-started?src=iam',NULL,NULL,'AND',236,1,NULL,1),(238,1,'Documentation','Documentation','https://civicrm.org/documentation?src=iam',NULL,NULL,'AND',236,1,NULL,2),(239,1,'Ask a question','Ask a question','https://civicrm.org/ask-a-question?src=iam',NULL,NULL,'AND',236,1,NULL,3),(240,1,'Get expert help','Get expert help','https://civicrm.org/experts?src=iam',NULL,NULL,'AND',236,1,NULL,4),(241,1,'About CiviCRM','About CiviCRM','https://civicrm.org/about?src=iam',NULL,NULL,'AND',236,1,1,5),(242,1,'Register your site','Register your site','https://civicrm.org/register-your-site?src=iam&sid={sid}',NULL,NULL,'AND',236,1,NULL,6),(243,1,'Join CiviCRM','Join CiviCRM','https://civicrm.org/become-a-member?src=iam&sid={sid}',NULL,NULL,'AND',236,1,NULL,7),(244,1,'Developer','Developer',NULL,NULL,'administer CiviCRM','',236,1,1,8),(245,1,'API Explorer','API Explorer','civicrm/api',NULL,'administer CiviCRM','',244,1,NULL,1),(246,1,'Developer Docs','Developer Docs','https://civicrm.org/developer-documentation?src=iam',NULL,'administer CiviCRM','',244,1,NULL,3),(247,1,'Reports','Reports',NULL,NULL,'access CiviReport','',NULL,1,NULL,95),(248,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'administer CiviCRM','',247,1,0,1),(249,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',247,1,0,2),(250,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',247,1,0,3),(251,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',247,1,0,4),(252,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',247,1,0,5),(253,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',247,1,0,6),(254,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',247,1,0,7),(255,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',247,1,0,8),(256,1,'Grant Reports','Grant Reports','civicrm/report/list?compid=5&reset=1',NULL,'access CiviGrant','',247,1,0,9),(257,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',247,1,1,10),(258,1,'My Reports','My Reports','civicrm/report/list?myreports=1&reset=1',NULL,'access CiviReport','',247,1,1,11),(259,1,'New Student','New Student','civicrm/contact/add?ct=Individual&cst=Student&reset=1',NULL,'add contacts','',16,1,NULL,1),(260,1,'New Parent','New Parent','civicrm/contact/add?ct=Individual&cst=Parent&reset=1',NULL,'add contacts','',16,1,NULL,2),(261,1,'New Staff','New Staff','civicrm/contact/add?ct=Individual&cst=Staff&reset=1',NULL,'add contacts','',16,1,NULL,3),(262,1,'New Team','New Team','civicrm/contact/add?ct=Organization&cst=Team&reset=1',NULL,'add contacts','',18,1,NULL,1),(263,1,'New Sponsor','New Sponsor','civicrm/contact/add?ct=Organization&cst=Sponsor&reset=1',NULL,'add contacts','',18,1,NULL,2); +INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `icon`, `permission`, `permission_operator`, `parent_id`, `is_active`, `has_separator`, `weight`) VALUES (1,1,'Home','Home','civicrm/dashboard?reset=1',NULL,NULL,'',NULL,1,NULL,0),(2,1,'Search','Search...',NULL,NULL,NULL,'',NULL,1,NULL,10),(3,1,'Find Contacts','Find Contacts','civicrm/contact/search?reset=1',NULL,NULL,'',2,1,NULL,1),(4,1,'Advanced Search','Advanced Search','civicrm/contact/search/advanced?reset=1',NULL,NULL,'',2,1,NULL,2),(5,1,'Full-text Search','Full-text Search','civicrm/contact/search/custom?csid=15&reset=1',NULL,NULL,'',2,1,NULL,3),(6,1,'Search Builder','Search Builder','civicrm/contact/search/builder?reset=1',NULL,NULL,'',2,1,1,4),(7,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',2,1,NULL,5),(8,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',2,1,NULL,6),(9,1,'Find Mailings','Find Mailings','civicrm/mailing?reset=1',NULL,'access CiviMail','',2,1,NULL,7),(10,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',2,1,NULL,8),(11,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',2,1,NULL,9),(12,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',2,1,NULL,10),(13,1,'Find Activities','Find Activities','civicrm/activity/search?reset=1',NULL,NULL,'',2,1,1,11),(14,1,'Custom Searches','Custom Searches','civicrm/contact/search/custom/list?reset=1',NULL,NULL,'',2,1,NULL,12),(15,1,'Contacts','Contacts',NULL,NULL,NULL,'',NULL,1,NULL,20),(16,1,'New Individual','New Individual','civicrm/contact/add?reset=1&ct=Individual',NULL,'add contacts','',15,1,NULL,1),(17,1,'New Household','New Household','civicrm/contact/add?reset=1&ct=Household',NULL,'add contacts','',15,1,NULL,2),(18,1,'New Organization','New Organization','civicrm/contact/add?reset=1&ct=Organization',NULL,'add contacts','',15,1,1,3),(19,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'access CiviReport','',15,1,1,4),(20,1,'New Activity','New Activity','civicrm/activity?reset=1&action=add&context=standalone',NULL,NULL,'',15,1,NULL,5),(21,1,'New Email','New Email','civicrm/activity/email/add?atype=3&action=add&reset=1&context=standalone',NULL,NULL,'',15,1,1,6),(22,1,'Import Contacts','Import Contacts','civicrm/import/contact?reset=1',NULL,'import contacts','',15,1,NULL,7),(23,1,'Import Activities','Import Activities','civicrm/import/activity?reset=1',NULL,'import contacts','',15,1,1,8),(24,1,'New Group','New Group','civicrm/group/add?reset=1',NULL,'edit groups','',15,1,NULL,9),(25,1,'Manage Groups','Manage Groups','civicrm/group?reset=1',NULL,'access CiviCRM','',15,1,1,10),(26,1,'New Tag','New Tag','civicrm/tag?reset=1&action=add',NULL,'manage tags','',15,1,NULL,11),(27,1,'Manage Tags (Categories)','Manage Tags (Categories)','civicrm/tag?reset=1',NULL,'manage tags','',15,1,1,12),(28,1,'Find and Merge Duplicate Contacts','Find and Merge Duplicate Contacts','civicrm/contact/deduperules?reset=1',NULL,'administer dedupe rules,merge duplicate contacts','OR',15,1,NULL,13),(29,1,'Contributions','Contributions',NULL,NULL,'access CiviContribute','',NULL,1,NULL,30),(30,1,'Dashboard','Dashboard','civicrm/contribute?reset=1',NULL,'access CiviContribute','',29,1,NULL,1),(31,1,'New Contribution','New Contribution','civicrm/contribute/add?reset=1&action=add&context=standalone',NULL,'access CiviContribute,edit contributions','AND',29,1,NULL,2),(32,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',29,1,NULL,3),(33,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',29,1,1,4),(34,1,'Import Contributions','Import Contributions','civicrm/contribute/import?reset=1',NULL,'access CiviContribute,edit contributions','AND',29,1,1,5),(35,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',29,1,NULL,7),(36,1,'Pledges','Pledges',NULL,NULL,'access CiviPledge','',29,1,1,6),(37,1,'Accounting Batches','Accounting Batches',NULL,NULL,'view own manual batches,view all manual batches','OR',29,1,1,8),(38,1,'Dashboard','Dashboard','civicrm/pledge?reset=1',NULL,'access CiviPledge','',36,1,NULL,1),(39,1,'New Pledge','New Pledge','civicrm/pledge/add?reset=1&action=add&context=standalone',NULL,'access CiviPledge,edit pledges','AND',36,1,NULL,2),(40,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',36,1,NULL,3),(41,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',36,1,0,4),(42,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute/add?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,9),(43,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,10),(44,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,11),(45,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,12),(46,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,13),(47,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,14),(48,1,'New Batch','New Batch','civicrm/financial/batch?reset=1&action=add',NULL,'create manual batch','AND',37,1,NULL,1),(49,1,'Open Batches','Open Batches','civicrm/financial/financialbatches?reset=1&batchStatus=1',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,2),(50,1,'Closed Batches','Closed Batches','civicrm/financial/financialbatches?reset=1&batchStatus=2',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,3),(51,1,'Exported Batches','Exported Batches','civicrm/financial/financialbatches?reset=1&batchStatus=5',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,4),(52,1,'Events','Events',NULL,NULL,'access CiviEvent','',NULL,1,NULL,40),(53,1,'Dashboard','CiviEvent Dashboard','civicrm/event?reset=1',NULL,'access CiviEvent','',52,1,NULL,1),(54,1,'Register Event Participant','Register Event Participant','civicrm/participant/add?reset=1&action=add&context=standalone',NULL,'access CiviEvent,edit event participants','AND',52,1,NULL,2),(55,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',52,1,NULL,3),(56,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',52,1,1,4),(57,1,'Import Participants','Import Participants','civicrm/event/import?reset=1',NULL,'access CiviEvent,edit event participants','AND',52,1,1,5),(58,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,6),(59,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,1,7),(60,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',52,1,1,8),(61,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,1,9),(62,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,10),(63,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,11),(64,1,'Mailings','Mailings',NULL,NULL,'access CiviMail,create mailings,approve mailings,schedule mailings,send SMS','OR',NULL,1,NULL,50),(65,1,'New Mailing','New Mailing','civicrm/mailing/send?reset=1',NULL,'access CiviMail,create mailings','OR',64,1,NULL,1),(66,1,'Draft and Unscheduled Mailings','Draft and Unscheduled Mailings','civicrm/mailing/browse/unscheduled?reset=1&scheduled=false',NULL,'access CiviMail,create mailings,schedule mailings','OR',64,1,NULL,2),(67,1,'Scheduled and Sent Mailings','Scheduled and Sent Mailings','civicrm/mailing/browse/scheduled?reset=1&scheduled=true',NULL,'access CiviMail,approve mailings,create mailings,schedule mailings','OR',64,1,NULL,3),(68,1,'Archived Mailings','Archived Mailings','civicrm/mailing/browse/archived?reset=1',NULL,'access CiviMail,create mailings','OR',64,1,NULL,4),(69,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',64,1,1,5),(70,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',64,1,NULL,6),(71,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'edit message templates','',64,1,NULL,7),(72,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',64,1,1,8),(73,1,'New SMS','New SMS','civicrm/sms/send?reset=1',NULL,'send SMS',NULL,64,1,NULL,9),(74,1,'Find Mass SMS','Find Mass SMS','civicrm/mailing/browse?reset=1&sms=1',NULL,'send SMS',NULL,64,1,1,10),(75,1,'New A/B Test','New A/B Test','civicrm/a/#/abtest/new',NULL,'access CiviMail','',64,1,NULL,15),(76,1,'Manage A/B Tests','Manage A/B Tests','civicrm/a/#/abtest',NULL,'access CiviMail','',64,1,1,16),(77,1,'Memberships','Memberships',NULL,NULL,'access CiviMember','',NULL,1,NULL,60),(78,1,'Dashboard','Dashboard','civicrm/member?reset=1',NULL,'access CiviMember','',77,1,NULL,1),(79,1,'New Membership','New Membership','civicrm/member/add?reset=1&action=add&context=standalone',NULL,'access CiviMember,edit memberships','AND',77,1,NULL,2),(80,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',77,1,NULL,3),(81,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',77,1,1,4),(82,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',77,1,NULL,5),(83,1,'Import Memberships','Import Members','civicrm/member/import?reset=1',NULL,'access CiviMember,edit memberships','AND',77,1,1,6),(84,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',77,1,NULL,7),(85,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',77,1,NULL,8),(86,1,'Campaigns','Campaigns',NULL,NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',NULL,1,NULL,70),(87,1,'Dashboard','Dashboard','civicrm/campaign?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,1),(88,1,'Surveys','Survey Dashboard','civicrm/campaign?reset=1&subPage=survey',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,1),(89,1,'Petitions','Petition Dashboard','civicrm/campaign?reset=1&subPage=petition',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,2),(90,1,'Campaigns','Campaign Dashboard','civicrm/campaign?reset=1&subPage=campaign',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,3),(91,1,'New Campaign','New Campaign','civicrm/campaign/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,2),(92,1,'New Survey','New Survey','civicrm/survey/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,3),(93,1,'New Petition','New Petition','civicrm/petition/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,4),(94,1,'Reserve Respondents','Reserve Respondents','civicrm/survey/search?reset=1&op=reserve',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts','OR',86,1,NULL,5),(95,1,'Interview Respondents','Interview Respondents','civicrm/survey/search?reset=1&op=interview',NULL,'administer CiviCampaign,manage campaign,interview campaign contacts','OR',86,1,NULL,6),(96,1,'Release Respondents','Release Respondents','civicrm/survey/search?reset=1&op=release',NULL,'administer CiviCampaign,manage campaign,release campaign contacts','OR',86,1,NULL,7),(97,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',86,1,1,8),(98,1,'Conduct Survey','Conduct Survey','civicrm/campaign/vote?reset=1',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts,interview campaign contacts','OR',86,1,NULL,9),(99,1,'GOTV (Voter Tracking)','Voter Listing','civicrm/campaign/gotv?reset=1',NULL,'administer CiviCampaign,manage campaign,release campaign contacts,gotv campaign contacts','OR',86,1,NULL,10),(100,1,'Cases','Cases',NULL,NULL,'access my cases and activities,access all cases and activities','OR',NULL,1,NULL,80),(101,1,'Dashboard','Dashboard','civicrm/case?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',100,1,NULL,1),(102,1,'New Case','New Case','civicrm/case/add?reset=1&action=add&atype=13&context=standalone',NULL,'add cases,access all cases and activities','OR',100,1,NULL,2),(103,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',100,1,1,3),(104,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',100,1,0,4),(105,1,'Grants','Grants',NULL,NULL,'access CiviGrant','',NULL,1,NULL,90),(106,1,'Dashboard','Dashboard','civicrm/grant?reset=1',NULL,'access CiviGrant','',105,1,NULL,1),(107,1,'New Grant','New Grant','civicrm/grant/add?reset=1&action=add&context=standalone',NULL,'access CiviGrant,edit grants','AND',105,1,NULL,2),(108,1,'Find Grants','Find Grants','civicrm/grant/search?reset=1',NULL,'access CiviGrant','',105,1,1,3),(109,1,'Grant Reports','Grant Reports','civicrm/report/list?compid=5&reset=1',NULL,'access CiviGrant','',105,1,0,4),(110,1,'Administer','Administer',NULL,NULL,'administer CiviCRM','',NULL,1,NULL,100),(111,1,'Administration Console','Administration Console','civicrm/admin?reset=1',NULL,'administer CiviCRM','',110,1,NULL,1),(112,1,'System Status','System Status','civicrm/a/#/status',NULL,'administer CiviCRM','',111,1,NULL,0),(113,1,'Configuration Checklist','Configuration Checklist','civicrm/admin/configtask?reset=1',NULL,'administer CiviCRM','',111,1,NULL,1),(114,1,'Customize Data and Screens','Customize Data and Screens',NULL,NULL,'administer CiviCRM','',110,1,NULL,3),(115,1,'Custom Fields','Custom Fields','civicrm/admin/custom/group?reset=1',NULL,'administer CiviCRM','',114,1,NULL,1),(116,1,'Profiles','Profiles','civicrm/admin/uf/group?reset=1',NULL,'administer CiviCRM','',114,1,NULL,2),(117,1,'Tags (Categories)','Tags (Categories)','civicrm/tag?reset=1',NULL,'administer CiviCRM','',114,1,NULL,3),(118,1,'Activity Types','Activity Types','civicrm/admin/options/activity_type?reset=1',NULL,'administer CiviCRM','',114,1,NULL,4),(119,1,'Relationship Types','Relationship Types','civicrm/admin/reltype?reset=1',NULL,'administer CiviCRM','',114,1,NULL,5),(120,1,'Contact Types','Contact Types','civicrm/admin/options/subtype?reset=1',NULL,'administer CiviCRM','',114,1,NULL,6),(121,1,'Display Preferences','Display Preferences','civicrm/admin/setting/preferences/display?reset=1',NULL,'administer CiviCRM','',114,1,NULL,9),(122,1,'Search Preferences','Search Preferences','civicrm/admin/setting/search?reset=1',NULL,'administer CiviCRM','',114,1,NULL,10),(123,1,'Date Preferences','Date Preferences','civicrm/admin/setting/preferences/date?reset=1',NULL,'administer CiviCRM','',114,1,NULL,11),(124,1,'Navigation Menu','Navigation Menu','civicrm/admin/menu?reset=1',NULL,'administer CiviCRM','',114,1,NULL,12),(125,1,'Word Replacements','Word Replacements','civicrm/admin/options/wordreplacements?reset=1',NULL,'administer CiviCRM','',114,1,NULL,13),(126,1,'Manage Custom Searches','Manage Custom Searches','civicrm/admin/options/custom_search?reset=1',NULL,'administer CiviCRM','',114,1,NULL,14),(127,1,'Dropdown Options','Dropdown Options','civicrm/admin/options?action=browse&reset=1',NULL,'administer CiviCRM','',114,1,NULL,8),(128,1,'Gender Options','Gender Options','civicrm/admin/options/gender?reset=1',NULL,'administer CiviCRM','',127,1,NULL,1),(129,1,'Individual Prefixes (Ms, Mr...)','Individual Prefixes (Ms, Mr...)','civicrm/admin/options/individual_prefix?reset=1',NULL,'administer CiviCRM','',127,1,NULL,2),(130,1,'Individual Suffixes (Jr, Sr...)','Individual Suffixes (Jr, Sr...)','civicrm/admin/options/individual_suffix?reset=1',NULL,'administer CiviCRM','',127,1,NULL,3),(131,1,'Instant Messenger Services','Instant Messenger Services','civicrm/admin/options/instant_messenger_service?reset=1',NULL,'administer CiviCRM','',127,1,NULL,4),(132,1,'Location Types (Home, Work...)','Location Types (Home, Work...)','civicrm/admin/locationType?reset=1',NULL,'administer CiviCRM','',127,1,NULL,5),(133,1,'Mobile Phone Providers','Mobile Phone Providers','civicrm/admin/options/mobile_provider?reset=1',NULL,'administer CiviCRM','',127,1,NULL,6),(134,1,'Phone Types','Phone Types','civicrm/admin/options/phone_type?reset=1',NULL,'administer CiviCRM','',127,1,NULL,7),(135,1,'Website Types','Website Types','civicrm/admin/options/website_type?reset=1',NULL,'administer CiviCRM','',127,1,NULL,8),(136,1,'Communications','Communications',NULL,NULL,'administer CiviCRM','',110,1,NULL,4),(137,1,'Organization Address and Contact Info','Organization Address and Contact Info','civicrm/admin/domain?action=update&reset=1',NULL,'administer CiviCRM','',136,1,NULL,1),(138,1,'FROM Email Addresses','FROM Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',136,1,NULL,2),(139,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',136,1,NULL,3),(140,1,'Schedule Reminders','Schedule Reminders','civicrm/admin/scheduleReminders?reset=1',NULL,'administer CiviCRM','',136,1,NULL,4),(141,1,'Preferred Communication Methods','Preferred Communication Methods','civicrm/admin/options/preferred_communication_method?reset=1',NULL,'administer CiviCRM','',136,1,NULL,5),(142,1,'Label Formats','Label Formats','civicrm/admin/labelFormats?reset=1',NULL,'administer CiviCRM','',136,1,NULL,6),(143,1,'Print Page (PDF) Formats','Print Page (PDF) Formats','civicrm/admin/pdfFormats?reset=1',NULL,'administer CiviCRM','',136,1,NULL,7),(144,1,'Communication Style Options','Communication Style Options','civicrm/admin/options/communication_style?reset=1',NULL,'administer CiviCRM','',136,1,NULL,8),(145,1,'Email Greeting Formats','Email Greeting Formats','civicrm/admin/options/email_greeting?reset=1',NULL,'administer CiviCRM','',136,1,NULL,9),(146,1,'Postal Greeting Formats','Postal Greeting Formats','civicrm/admin/options/postal_greeting?reset=1',NULL,'administer CiviCRM','',136,1,NULL,10),(147,1,'Addressee Formats','Addressee Formats','civicrm/admin/options/addressee?reset=1',NULL,'administer CiviCRM','',136,1,NULL,11),(148,1,'Localization','Localization',NULL,NULL,'administer CiviCRM','',110,1,NULL,6),(149,1,'Languages, Currency, Locations','Languages, Currency, Locations','civicrm/admin/setting/localization?reset=1',NULL,'administer CiviCRM','',148,1,NULL,1),(150,1,'Address Settings','Address Settings','civicrm/admin/setting/preferences/address?reset=1',NULL,'administer CiviCRM','',148,1,NULL,2),(151,1,'Date Formats','Date Formats','civicrm/admin/setting/date?reset=1',NULL,'administer CiviCRM','',148,1,NULL,3),(152,1,'Preferred Language Options','Preferred Language Options','civicrm/admin/options/languages?reset=1',NULL,'administer CiviCRM','',148,1,NULL,4),(153,1,'Users and Permissions','Users and Permissions',NULL,NULL,'administer CiviCRM','',110,1,NULL,7),(154,1,'Permissions (Access Control)','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',153,1,NULL,1),(155,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',153,1,NULL,2),(156,1,'System Settings','System Settings',NULL,NULL,'administer CiviCRM','',110,1,NULL,8),(157,1,'Components','Enable Components','civicrm/admin/setting/component?reset=1',NULL,'administer CiviCRM','',156,1,NULL,1),(158,1,'Connections','Connections','civicrm/a/#/cxn',NULL,'administer CiviCRM','',156,1,NULL,2),(159,1,'Extensions','Manage Extensions','civicrm/admin/extensions?reset=1',NULL,'administer CiviCRM','',156,1,1,3),(160,1,'Cleanup Caches and Update Paths','Cleanup Caches and Update Paths','civicrm/admin/setting/updateConfigBackend?reset=1',NULL,'administer CiviCRM','',156,1,NULL,4),(161,1,'CMS Database Integration','CMS Integration','civicrm/admin/setting/uf?reset=1',NULL,'administer CiviCRM','',156,1,NULL,5),(162,1,'Debugging and Error Handling','Debugging and Error Handling','civicrm/admin/setting/debug?reset=1',NULL,'administer CiviCRM','',156,1,NULL,6),(163,1,'Directories','Directories','civicrm/admin/setting/path?reset=1',NULL,'administer CiviCRM','',156,1,NULL,7),(164,1,'Import/Export Mappings','Import/Export Mappings','civicrm/admin/mapping?reset=1',NULL,'administer CiviCRM','',156,1,NULL,8),(165,1,'Mapping and Geocoding','Mapping and Geocoding','civicrm/admin/setting/mapping?reset=1',NULL,'administer CiviCRM','',156,1,NULL,9),(166,1,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','civicrm/admin/setting/misc?reset=1',NULL,'administer CiviCRM','',156,1,NULL,10),(167,1,'Multi Site Settings','Multi Site Settings','civicrm/admin/setting/preferences/multisite?reset=1',NULL,'administer CiviCRM','',156,1,NULL,11),(168,1,'Option Groups','Option Groups','civicrm/admin/options?reset=1',NULL,'administer CiviCRM','',156,1,NULL,12),(169,1,'Outbound Email (SMTP/Sendmail)','Outbound Email','civicrm/admin/setting/smtp?reset=1',NULL,'administer CiviCRM','',156,1,NULL,13),(170,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',156,1,NULL,14),(171,1,'Resource URLs','Resource URLs','civicrm/admin/setting/url?reset=1',NULL,'administer CiviCRM','',156,1,NULL,15),(172,1,'Safe File Extensions','Safe File Extensions','civicrm/admin/options/safe_file_extension?reset=1',NULL,'administer CiviCRM','',156,1,NULL,16),(173,1,'Scheduled Jobs','Scheduled Jobs','civicrm/admin/job?reset=1',NULL,'administer CiviCRM','',156,1,NULL,17),(174,1,'SMS Providers','SMS Providers','civicrm/admin/sms/provider?reset=1',NULL,'administer CiviCRM','',156,1,NULL,18),(175,1,'CiviCampaign','CiviCampaign',NULL,NULL,'administer CiviCampaign,administer CiviCRM','AND',110,1,NULL,9),(176,1,'Survey Types','Survey Types','civicrm/admin/campaign/surveyType?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,1),(177,1,'Campaign Types','Campaign Types','civicrm/admin/options/campaign_type?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,2),(178,1,'Campaign Status','Campaign Status','civicrm/admin/options/campaign_status?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,3),(179,1,'Engagement Index','Engagement Index','civicrm/admin/options/engagement_index?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,4),(180,1,'CiviCampaign Component Settings','CiviCampaign Component Settings','civicrm/admin/setting/preferences/campaign?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,5),(181,1,'CiviCase','CiviCase',NULL,NULL,'administer CiviCase',NULL,110,1,NULL,10),(182,1,'CiviCase Settings','CiviCase Settings','civicrm/admin/setting/case?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,1),(183,1,'Case Types','Case Types','civicrm/a/#/caseType',NULL,'administer CiviCase',NULL,181,1,NULL,2),(184,1,'Redaction Rules','Redaction Rules','civicrm/admin/options/redaction_rule?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,3),(185,1,'Case Statuses','Case Statuses','civicrm/admin/options/case_status?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,4),(186,1,'Encounter Medium','Encounter Medium','civicrm/admin/options/encounter_medium?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,5),(187,1,'CiviContribute','CiviContribute',NULL,NULL,'access CiviContribute,administer CiviCRM','AND',110,1,NULL,11),(188,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,6),(189,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,7),(190,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,8),(191,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,9),(192,1,'Financial Types','Financial Types','civicrm/admin/financial/financialType?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,10),(193,1,'Financial Accounts','Financial Accounts','civicrm/admin/financial/financialAccount?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,11),(194,1,'Payment Methods','Payment Instruments','civicrm/admin/options/payment_instrument?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,12),(195,1,'Accepted Credit Cards','Accepted Credit Cards','civicrm/admin/options/accept_creditcard?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,13),(196,1,'Soft Credit Types','Soft Credit Types','civicrm/admin/options/soft_credit_type?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,14),(197,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,15),(198,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,16),(199,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',187,1,NULL,17),(200,1,'CiviContribute Component Settings','CiviContribute Component Settings','civicrm/admin/setting/preferences/contribute?reset=1',NULL,'administer CiviCRM','',187,1,NULL,18),(201,1,'CiviEvent','CiviEvent',NULL,NULL,'access CiviEvent,administer CiviCRM','AND',110,1,NULL,12),(202,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,1),(203,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,2),(204,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,3),(205,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,4),(206,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,5),(207,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,6),(208,1,'Event Types','Event Types','civicrm/admin/options/event_type?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,7),(209,1,'Participant Statuses','Participant Statuses','civicrm/admin/participant_status?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,8),(210,1,'Participant Roles','Participant Roles','civicrm/admin/options/participant_role?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,9),(211,1,'Participant Listing Options','Participant Listing Options','civicrm/admin/options/participant_listing?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,10),(212,1,'Event Name Badge Layouts','Event Name Badge Layouts','civicrm/admin/badgelayout?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,11),(213,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',201,1,NULL,12),(214,1,'CiviEvent Component Settings','CiviEvent Component Settings','civicrm/admin/setting/preferences/event?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,13),(215,1,'CiviGrant','CiviGrant',NULL,NULL,'access CiviGrant,administer CiviCRM','AND',110,1,NULL,13),(216,1,'Grant Types','Grant Types','civicrm/admin/options/grant_type?reset=1',NULL,'access CiviGrant,administer CiviCRM','AND',215,1,NULL,1),(217,1,'Grant Status','Grant Status','civicrm/admin/options/grant_status?reset=1',NULL,'access CiviGrant,administer CiviCRM','AND',215,1,NULL,2),(218,1,'CiviMail','CiviMail',NULL,NULL,'access CiviMail,administer CiviCRM','AND',110,1,NULL,14),(219,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,1),(220,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',218,1,NULL,2),(221,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',218,1,NULL,3),(222,1,'Mail Accounts','Mail Accounts','civicrm/admin/mailSettings?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,4),(223,1,'Mailer Settings','Mailer Settings','civicrm/admin/mail?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,5),(224,1,'CiviMail Component Settings','CiviMail Component Settings','civicrm/admin/setting/preferences/mailing?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,6),(225,1,'CiviMember','CiviMember',NULL,NULL,'access CiviMember,administer CiviCRM','AND',110,1,NULL,15),(226,1,'Membership Types','Membership Types','civicrm/admin/member/membershipType?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,1),(227,1,'Membership Status Rules','Membership Status Rules','civicrm/admin/member/membershipStatus?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,1,2),(228,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,3),(229,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,4),(230,1,'CiviMember Component Settings','CiviMember Component Settings','civicrm/admin/setting/preferences/member?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,5),(231,1,'CiviReport','CiviReport',NULL,NULL,'access CiviReport,administer CiviCRM','AND',110,1,NULL,16),(232,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',231,1,NULL,1),(233,1,'Create New Report from Template','Create New Report from Template','civicrm/admin/report/template/list?reset=1',NULL,'administer Reports','',231,1,NULL,2),(234,1,'Manage Templates','Manage Templates','civicrm/admin/report/options/report_template?reset=1',NULL,'administer Reports','',231,1,NULL,3),(235,1,'Register Report','Register Report','civicrm/admin/report/register?reset=1',NULL,'administer Reports','',231,1,NULL,4),(236,1,'Support','Support',NULL,NULL,NULL,'',NULL,1,NULL,110),(237,1,'Get started','Get started','https://civicrm.org/get-started?src=iam',NULL,NULL,'AND',236,1,NULL,1),(238,1,'Documentation','Documentation','https://civicrm.org/documentation?src=iam',NULL,NULL,'AND',236,1,NULL,2),(239,1,'Ask a question','Ask a question','https://civicrm.org/ask-a-question?src=iam',NULL,NULL,'AND',236,1,NULL,3),(240,1,'Get expert help','Get expert help','https://civicrm.org/experts?src=iam',NULL,NULL,'AND',236,1,NULL,4),(241,1,'About CiviCRM','About CiviCRM','https://civicrm.org/about?src=iam',NULL,NULL,'AND',236,1,1,5),(242,1,'Register your site','Register your site','https://civicrm.org/register-your-site?src=iam&sid={sid}',NULL,NULL,'AND',236,1,NULL,6),(243,1,'Join CiviCRM','Join CiviCRM','https://civicrm.org/become-a-member?src=iam&sid={sid}',NULL,NULL,'AND',236,1,NULL,7),(244,1,'Developer','Developer',NULL,NULL,'administer CiviCRM','',236,1,1,8),(245,1,'API Explorer','API Explorer','civicrm/api',NULL,'administer CiviCRM','',244,1,NULL,1),(246,1,'Developer Docs','Developer Docs','https://civicrm.org/developer-documentation?src=iam',NULL,'administer CiviCRM','',244,1,NULL,3),(247,1,'Reports','Reports',NULL,NULL,'access CiviReport','',NULL,1,NULL,95),(248,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'administer CiviCRM','',247,1,0,1),(249,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',247,1,0,2),(250,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',247,1,0,3),(251,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',247,1,0,4),(252,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',247,1,0,5),(253,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',247,1,0,6),(254,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',247,1,0,7),(255,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',247,1,0,8),(256,1,'Grant Reports','Grant Reports','civicrm/report/list?compid=5&reset=1',NULL,'access CiviGrant','',247,1,0,9),(257,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',247,1,1,10),(258,1,'My Reports','My Reports','civicrm/report/list?myreports=1&reset=1',NULL,'access CiviReport','',247,1,1,11),(259,1,'New Student','New Student','civicrm/contact/add?ct=Individual&cst=Student&reset=1',NULL,'add contacts','',16,1,NULL,1),(260,1,'New Parent','New Parent','civicrm/contact/add?ct=Individual&cst=Parent&reset=1',NULL,'add contacts','',16,1,NULL,2),(261,1,'New Staff','New Staff','civicrm/contact/add?ct=Individual&cst=Staff&reset=1',NULL,'add contacts','',16,1,NULL,3),(262,1,'New Team','New Team','civicrm/contact/add?ct=Organization&cst=Team&reset=1',NULL,'add contacts','',18,1,NULL,1),(263,1,'New Sponsor','New Sponsor','civicrm/contact/add?ct=Organization&cst=Sponsor&reset=1',NULL,'add contacts','',18,1,NULL,2); /*!40000 ALTER TABLE `civicrm_navigation` ENABLE KEYS */; UNLOCK TABLES; @@ -986,7 +986,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_note` WRITE; /*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */; -INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',88,'Reminder screening of \"Black\" on next Friday',1,'2017-10-17',NULL,'0'),(2,'civicrm_contact',72,'Arrange collection of funds from members',1,'2017-07-04',NULL,'0'),(3,'civicrm_contact',87,'Invite members for the Steve Prefontaine 10k dream run',1,'2017-07-06',NULL,'0'),(4,'civicrm_contact',36,'Get the registration done for NGO status',1,'2018-02-12',NULL,'0'),(5,'civicrm_contact',182,'Contact the Commissioner of Charities',1,'2017-08-29',NULL,'0'),(6,'civicrm_contact',53,'Organize the Terry Fox run',1,'2018-02-15',NULL,'0'),(7,'civicrm_contact',190,'Arrange collection of funds from members',1,'2017-07-17',NULL,'0'),(8,'civicrm_contact',18,'Reminder screening of \"Black\" on next Friday',1,'2017-07-11',NULL,'0'),(9,'civicrm_contact',87,'Arrange for cricket match with Sunil Gavaskar',1,'2018-04-10',NULL,'0'),(10,'civicrm_contact',11,'Invite members for the Steve Prefontaine 10k dream run',1,'2018-01-23',NULL,'0'),(11,'civicrm_contact',10,'Contact the Commissioner of Charities',1,'2017-12-25',NULL,'0'),(12,'civicrm_contact',16,'Connect for presentation',1,'2017-11-18',NULL,'0'),(13,'civicrm_contact',24,'Get the registration done for NGO status',1,'2017-11-05',NULL,'0'),(14,'civicrm_contact',98,'Organize the Terry Fox run',1,'2018-01-30',NULL,'0'),(15,'civicrm_contact',73,'Arrange for cricket match with Sunil Gavaskar',1,'2017-06-09',NULL,'0'),(16,'civicrm_contact',66,'Reminder screening of \"Black\" on next Friday',1,'2017-05-30',NULL,'0'),(17,'civicrm_contact',21,'Connect for presentation',1,'2017-10-06',NULL,'0'),(18,'civicrm_contact',170,'Organize the Terry Fox run',1,'2017-11-07',NULL,'0'),(19,'civicrm_contact',119,'Contact the Commissioner of Charities',1,'2018-04-07',NULL,'0'),(20,'civicrm_contact',80,'Arrange collection of funds from members',1,'2018-05-19',NULL,'0'); +INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',193,'Arrange collection of funds from members',1,'2018-04-04',NULL,'0'),(2,'civicrm_contact',134,'Arrange for cricket match with Sunil Gavaskar',1,'2018-03-26',NULL,'0'),(3,'civicrm_contact',63,'Send reminder for annual dinner',1,'2018-05-15',NULL,'0'),(4,'civicrm_contact',111,'Get the registration done for NGO status',1,'2018-05-12',NULL,'0'),(5,'civicrm_contact',42,'Get the registration done for NGO status',1,'2018-05-20',NULL,'0'),(6,'civicrm_contact',87,'Connect for presentation',1,'2018-08-10',NULL,'0'),(7,'civicrm_contact',96,'Send reminder for annual dinner',1,'2017-12-12',NULL,'0'),(8,'civicrm_contact',39,'Chart out route map for next 10k run',1,'2018-01-11',NULL,'0'),(9,'civicrm_contact',182,'Send newsletter for April 2005',1,'2017-11-18',NULL,'0'),(10,'civicrm_contact',172,'Send newsletter for April 2005',1,'2017-10-29',NULL,'0'),(11,'civicrm_contact',143,'Invite members for the Steve Prefontaine 10k dream run',1,'2017-09-17',NULL,'0'),(12,'civicrm_contact',187,'Arrange for cricket match with Sunil Gavaskar',1,'2018-07-13',NULL,'0'),(13,'civicrm_contact',201,'Connect for presentation',1,'2018-01-30',NULL,'0'),(14,'civicrm_contact',190,'Invite members for the Steve Prefontaine 10k dream run',1,'2018-03-20',NULL,'0'),(15,'civicrm_contact',63,'Arrange collection of funds from members',1,'2017-10-26',NULL,'0'),(16,'civicrm_contact',131,'Arrange collection of funds from members',1,'2018-07-19',NULL,'0'),(17,'civicrm_contact',147,'Send reminder for annual dinner',1,'2017-08-28',NULL,'0'),(18,'civicrm_contact',61,'Send reminder for annual dinner',1,'2018-02-26',NULL,'0'),(19,'civicrm_contact',112,'Contact the Commissioner of Charities',1,'2018-02-17',NULL,'0'),(20,'civicrm_contact',2,'Arrange for cricket match with Sunil Gavaskar',1,'2017-10-14',NULL,'0'); /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */; UNLOCK TABLES; @@ -1005,7 +1005,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_option_group` WRITE; /*!40000 ALTER TABLE `civicrm_option_group` DISABLE KEYS */; -INSERT INTO `civicrm_option_group` (`id`, `name`, `title`, `description`, `data_type`, `is_reserved`, `is_active`, `is_locked`) VALUES (1,'preferred_communication_method','Preferred Communication Method',NULL,NULL,1,1,0),(2,'activity_type','Activity Type',NULL,'Integer',1,1,0),(3,'gender','Gender',NULL,'Integer',1,1,0),(4,'instant_messenger_service','Instant Messenger (IM) screen-names',NULL,NULL,1,1,0),(5,'mobile_provider','Mobile Phone Providers',NULL,NULL,1,1,0),(6,'individual_prefix','Individual contact prefixes',NULL,NULL,1,1,0),(7,'individual_suffix','Individual contact suffixes',NULL,NULL,1,1,0),(8,'acl_role','ACL Role',NULL,NULL,1,1,0),(9,'accept_creditcard','Accepted Credit Cards',NULL,NULL,1,1,0),(10,'payment_instrument','Payment Methods',NULL,'Integer',1,1,0),(11,'contribution_status','Contribution Status',NULL,NULL,1,1,1),(12,'pcp_status','PCP Status',NULL,NULL,1,1,1),(13,'pcp_owner_notify','PCP owner notifications',NULL,NULL,1,1,1),(14,'participant_role','Participant Role',NULL,'Integer',1,1,0),(15,'event_type','Event Type',NULL,'Integer',1,1,0),(16,'contact_view_options','Contact View Options',NULL,NULL,1,1,1),(17,'contact_smart_group_display','Contact Smart Group View Options',NULL,NULL,1,1,1),(18,'contact_edit_options','Contact Edit Options',NULL,NULL,1,1,1),(19,'advanced_search_options','Advanced Search Options',NULL,NULL,1,1,1),(20,'user_dashboard_options','User Dashboard Options',NULL,NULL,1,1,1),(21,'address_options','Addressing Options',NULL,NULL,1,1,0),(22,'group_type','Group Type',NULL,NULL,1,1,0),(23,'grant_status','Grant status',NULL,NULL,1,1,0),(24,'grant_type','Grant Type',NULL,NULL,1,1,0),(25,'custom_search','Custom Search',NULL,NULL,1,1,0),(26,'activity_status','Activity Status',NULL,'Integer',1,1,0),(27,'case_type','Case Type',NULL,NULL,1,1,0),(28,'case_status','Case Status',NULL,NULL,1,1,0),(29,'participant_listing','Participant Listing',NULL,NULL,1,1,0),(30,'safe_file_extension','Safe File Extension',NULL,NULL,1,1,0),(31,'from_email_address','From Email Address',NULL,NULL,1,1,0),(32,'mapping_type','Mapping Type',NULL,NULL,1,1,1),(33,'wysiwyg_editor','WYSIWYG Editor',NULL,NULL,1,1,0),(34,'recur_frequency_units','Recurring Frequency Units',NULL,NULL,1,1,0),(35,'phone_type','Phone Type',NULL,NULL,1,1,0),(36,'custom_data_type','Custom Data Type',NULL,NULL,1,1,0),(37,'visibility','Visibility',NULL,NULL,1,1,0),(38,'mail_protocol','Mail Protocol',NULL,NULL,1,1,0),(39,'priority','Priority',NULL,NULL,1,1,0),(40,'redaction_rule','Redaction Rule',NULL,NULL,1,1,0),(41,'report_template','Report Template',NULL,NULL,1,1,0),(42,'email_greeting','Email Greeting Type',NULL,NULL,1,1,0),(43,'postal_greeting','Postal Greeting Type',NULL,NULL,1,1,0),(44,'addressee','Addressee Type',NULL,NULL,1,1,0),(45,'contact_autocomplete_options','Autocomplete Contact Search',NULL,NULL,1,1,1),(46,'contact_reference_options','Contact Reference Autocomplete Options',NULL,NULL,1,1,1),(47,'website_type','Website Type',NULL,NULL,1,1,0),(48,'tag_used_for','Tag Used For',NULL,NULL,1,1,1),(49,'currencies_enabled','Currencies Enabled',NULL,NULL,1,1,0),(50,'event_badge','Event Name Badge',NULL,NULL,1,1,0),(51,'note_privacy','Privacy levels for notes',NULL,NULL,1,1,0),(52,'campaign_type','Campaign Type',NULL,NULL,1,1,0),(53,'campaign_status','Campaign Status',NULL,NULL,1,1,0),(54,'system_extensions','CiviCRM Extensions',NULL,NULL,1,1,0),(55,'mail_approval_status','CiviMail Approval Status',NULL,NULL,1,1,0),(56,'engagement_index','Engagement Index',NULL,NULL,1,1,0),(57,'cg_extend_objects','Objects a custom group extends to',NULL,NULL,1,1,0),(58,'paper_size','Paper Size',NULL,NULL,1,1,0),(59,'pdf_format','PDF Page Format',NULL,NULL,1,1,0),(60,'label_format','Mailing Label Format',NULL,NULL,1,1,0),(61,'activity_contacts','Activity Contacts',NULL,NULL,1,1,1),(62,'account_relationship','Account Relationship',NULL,NULL,1,1,0),(63,'event_contacts','Event Recipients',NULL,NULL,1,1,0),(64,'conference_slot','Conference Slot',NULL,NULL,1,1,0),(65,'batch_type','Batch Type',NULL,NULL,1,1,1),(66,'batch_mode','Batch Mode',NULL,NULL,1,1,1),(67,'batch_status','Batch Status',NULL,NULL,1,1,1),(68,'sms_api_type','Api Type',NULL,NULL,1,1,0),(69,'sms_provider_name','Sms Provider Internal Name',NULL,NULL,1,1,0),(70,'auto_renew_options','Auto Renew Options',NULL,NULL,1,1,1),(71,'financial_account_type','Financial Account Type',NULL,NULL,1,1,0),(72,'financial_item_status','Financial Item Status',NULL,NULL,1,1,1),(73,'label_type','Label Type',NULL,NULL,1,1,0),(74,'name_badge','Name Badge Format',NULL,NULL,1,1,0),(75,'communication_style','Communication Style',NULL,NULL,1,1,0),(76,'msg_mode','Message Mode',NULL,NULL,1,1,0),(77,'contact_date_reminder_options','Contact Date Reminder Options',NULL,NULL,1,1,1),(78,'wysiwyg_presets','WYSIWYG Editor Presets',NULL,NULL,1,1,0),(79,'relative_date_filters','Relative Date Filters',NULL,NULL,1,1,0),(80,'pledge_status','Pledge Status',NULL,NULL,1,1,1),(81,'environment','Environment',NULL,NULL,0,1,0),(82,'languages','Languages','List of Languages',NULL,1,1,NULL),(83,'encounter_medium','Encounter Medium','Encounter medium for case activities (e.g. In Person, By Phone, etc.)',NULL,1,1,NULL),(84,'msg_tpl_workflow_case','Message Template Workflow for Cases','Message Template Workflow for Cases',NULL,1,1,NULL),(85,'msg_tpl_workflow_contribution','Message Template Workflow for Contributions','Message Template Workflow for Contributions',NULL,1,1,NULL),(86,'msg_tpl_workflow_event','Message Template Workflow for Events','Message Template Workflow for Events',NULL,1,1,NULL),(87,'msg_tpl_workflow_friend','Message Template Workflow for Tell-a-Friend','Message Template Workflow for Tell-a-Friend',NULL,1,1,NULL),(88,'msg_tpl_workflow_membership','Message Template Workflow for Memberships','Message Template Workflow for Memberships',NULL,1,1,NULL),(89,'msg_tpl_workflow_meta','Message Template Workflow for Meta Templates','Message Template Workflow for Meta Templates',NULL,1,1,NULL),(90,'msg_tpl_workflow_pledge','Message Template Workflow for Pledges','Message Template Workflow for Pledges',NULL,1,1,NULL),(91,'msg_tpl_workflow_uf','Message Template Workflow for Profiles','Message Template Workflow for Profiles',NULL,1,1,NULL),(92,'msg_tpl_workflow_petition','Message Template Workflow for Petition','Message Template Workflow for Petition',NULL,1,1,NULL),(93,'soft_credit_type','Soft Credit Types',NULL,NULL,1,1,NULL); +INSERT INTO `civicrm_option_group` (`id`, `name`, `title`, `description`, `data_type`, `is_reserved`, `is_active`, `is_locked`) VALUES (1,'preferred_communication_method','Preferred Communication Method',NULL,NULL,1,1,0),(2,'activity_type','Activity Type',NULL,'Integer',1,1,0),(3,'gender','Gender',NULL,'Integer',1,1,0),(4,'instant_messenger_service','Instant Messenger (IM) screen-names',NULL,NULL,1,1,0),(5,'mobile_provider','Mobile Phone Providers',NULL,NULL,1,1,0),(6,'individual_prefix','Individual contact prefixes',NULL,NULL,1,1,0),(7,'individual_suffix','Individual contact suffixes',NULL,NULL,1,1,0),(8,'acl_role','ACL Role',NULL,NULL,1,1,0),(9,'accept_creditcard','Accepted Credit Cards',NULL,NULL,1,1,0),(10,'payment_instrument','Payment Methods',NULL,'Integer',1,1,0),(11,'contribution_status','Contribution Status',NULL,NULL,1,1,1),(12,'pcp_status','PCP Status',NULL,NULL,1,1,1),(13,'pcp_owner_notify','PCP owner notifications',NULL,NULL,1,1,1),(14,'participant_role','Participant Role',NULL,'Integer',1,1,0),(15,'event_type','Event Type',NULL,'Integer',1,1,0),(16,'contact_view_options','Contact View Options',NULL,NULL,1,1,1),(17,'contact_smart_group_display','Contact Smart Group View Options',NULL,NULL,1,1,1),(18,'contact_edit_options','Contact Edit Options',NULL,NULL,1,1,1),(19,'advanced_search_options','Advanced Search Options',NULL,NULL,1,1,1),(20,'user_dashboard_options','User Dashboard Options',NULL,NULL,1,1,1),(21,'address_options','Addressing Options',NULL,NULL,1,1,0),(22,'group_type','Group Type',NULL,NULL,1,1,0),(23,'grant_status','Grant status',NULL,NULL,1,1,0),(24,'grant_type','Grant Type',NULL,NULL,1,1,0),(25,'custom_search','Custom Search',NULL,NULL,1,1,0),(26,'activity_status','Activity Status',NULL,'Integer',1,1,0),(27,'case_type','Case Type',NULL,NULL,1,1,0),(28,'case_status','Case Status',NULL,NULL,1,1,0),(29,'participant_listing','Participant Listing',NULL,NULL,1,1,0),(30,'safe_file_extension','Safe File Extension',NULL,NULL,1,1,0),(31,'from_email_address','From Email Address',NULL,NULL,1,1,0),(32,'mapping_type','Mapping Type',NULL,NULL,1,1,1),(33,'wysiwyg_editor','WYSIWYG Editor',NULL,NULL,1,1,0),(34,'recur_frequency_units','Recurring Frequency Units',NULL,NULL,1,1,0),(35,'phone_type','Phone Type',NULL,NULL,1,1,0),(36,'custom_data_type','Custom Data Type',NULL,NULL,1,1,0),(37,'visibility','Visibility',NULL,NULL,1,1,0),(38,'mail_protocol','Mail Protocol',NULL,NULL,1,1,0),(39,'priority','Priority',NULL,NULL,1,1,0),(40,'redaction_rule','Redaction Rule',NULL,NULL,1,1,0),(41,'report_template','Report Template',NULL,NULL,1,1,0),(42,'email_greeting','Email Greeting Type',NULL,NULL,1,1,0),(43,'postal_greeting','Postal Greeting Type',NULL,NULL,1,1,0),(44,'addressee','Addressee Type',NULL,NULL,1,1,0),(45,'contact_autocomplete_options','Autocomplete Contact Search',NULL,NULL,1,1,1),(46,'contact_reference_options','Contact Reference Autocomplete Options',NULL,NULL,1,1,1),(47,'website_type','Website Type',NULL,NULL,1,1,0),(48,'tag_used_for','Tag Used For',NULL,NULL,1,1,1),(49,'currencies_enabled','Currencies Enabled',NULL,NULL,1,1,0),(50,'event_badge','Event Name Badge',NULL,NULL,1,1,0),(51,'note_privacy','Privacy levels for notes',NULL,NULL,1,1,0),(52,'campaign_type','Campaign Type',NULL,NULL,1,1,0),(53,'campaign_status','Campaign Status',NULL,NULL,1,1,0),(54,'system_extensions','CiviCRM Extensions',NULL,NULL,1,1,0),(55,'mail_approval_status','CiviMail Approval Status',NULL,NULL,1,1,0),(56,'engagement_index','Engagement Index',NULL,NULL,1,1,0),(57,'cg_extend_objects','Objects a custom group extends to',NULL,NULL,1,1,0),(58,'paper_size','Paper Size',NULL,NULL,1,1,0),(59,'pdf_format','PDF Page Format',NULL,NULL,1,1,0),(60,'label_format','Mailing Label Format',NULL,NULL,1,1,0),(61,'activity_contacts','Activity Contacts',NULL,NULL,1,1,1),(62,'account_relationship','Account Relationship',NULL,NULL,1,1,0),(63,'event_contacts','Event Recipients',NULL,NULL,1,1,0),(64,'conference_slot','Conference Slot',NULL,NULL,1,1,0),(65,'batch_type','Batch Type',NULL,NULL,1,1,1),(66,'batch_mode','Batch Mode',NULL,NULL,1,1,1),(67,'batch_status','Batch Status',NULL,NULL,1,1,1),(68,'sms_api_type','Api Type',NULL,NULL,1,1,0),(69,'sms_provider_name','Sms Provider Internal Name',NULL,NULL,1,1,0),(70,'auto_renew_options','Auto Renew Options',NULL,NULL,1,1,1),(71,'financial_account_type','Financial Account Type',NULL,NULL,1,1,0),(72,'financial_item_status','Financial Item Status',NULL,NULL,1,1,1),(73,'label_type','Label Type',NULL,NULL,1,1,0),(74,'name_badge','Name Badge Format',NULL,NULL,1,1,0),(75,'communication_style','Communication Style',NULL,NULL,1,1,0),(76,'msg_mode','Message Mode',NULL,NULL,1,1,0),(77,'contact_date_reminder_options','Contact Date Reminder Options',NULL,NULL,1,1,1),(78,'wysiwyg_presets','WYSIWYG Editor Presets',NULL,NULL,1,1,0),(79,'relative_date_filters','Relative Date Filters',NULL,NULL,1,1,0),(80,'pledge_status','Pledge Status',NULL,NULL,1,1,1),(81,'environment','Environment',NULL,NULL,1,1,0),(82,'languages','Languages','List of Languages',NULL,1,1,0),(83,'encounter_medium','Encounter Medium','Encounter medium for case activities (e.g. In Person, By Phone, etc.)',NULL,1,1,0),(84,'msg_tpl_workflow_case','Message Template Workflow for Cases','Message Template Workflow for Cases',NULL,1,1,0),(85,'msg_tpl_workflow_contribution','Message Template Workflow for Contributions','Message Template Workflow for Contributions',NULL,1,1,0),(86,'msg_tpl_workflow_event','Message Template Workflow for Events','Message Template Workflow for Events',NULL,1,1,0),(87,'msg_tpl_workflow_friend','Message Template Workflow for Tell-a-Friend','Message Template Workflow for Tell-a-Friend',NULL,1,1,0),(88,'msg_tpl_workflow_membership','Message Template Workflow for Memberships','Message Template Workflow for Memberships',NULL,1,1,0),(89,'msg_tpl_workflow_meta','Message Template Workflow for Meta Templates','Message Template Workflow for Meta Templates',NULL,1,1,0),(90,'msg_tpl_workflow_pledge','Message Template Workflow for Pledges','Message Template Workflow for Pledges',NULL,1,1,0),(91,'msg_tpl_workflow_uf','Message Template Workflow for Profiles','Message Template Workflow for Profiles',NULL,1,1,0),(92,'msg_tpl_workflow_petition','Message Template Workflow for Petition','Message Template Workflow for Petition',NULL,1,1,0),(93,'soft_credit_type','Soft Credit Types',NULL,NULL,1,1,0); /*!40000 ALTER TABLE `civicrm_option_group` ENABLE KEYS */; UNLOCK TABLES; @@ -1025,7 +1025,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant` WRITE; /*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */; -INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`) VALUES (1,112,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(2,51,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(3,114,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(4,109,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,96,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,124,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(7,153,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,31,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,177,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(10,106,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,61,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,151,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(13,19,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,41,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,199,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(16,115,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(17,63,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,89,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(19,137,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,35,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,110,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(22,103,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,9,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,166,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(25,2,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(26,7,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,155,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,113,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(29,188,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(30,101,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,186,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(32,129,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(33,133,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,108,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(35,4,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,85,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(37,20,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(38,25,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,121,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(40,48,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(41,131,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,86,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(43,44,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(44,73,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,128,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,164,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(47,182,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,66,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,162,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(50,190,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL); +INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`) VALUES (1,136,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(2,174,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(3,161,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(4,110,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,102,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,6,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(7,140,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,137,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,2,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(10,127,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,146,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,142,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(13,69,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,111,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,60,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(16,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),(17,154,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,129,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(19,180,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,119,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,105,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(22,86,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,74,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,41,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(25,144,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(26,37,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,191,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,145,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(29,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),(30,91,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,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),(32,108,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(33,90,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,114,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(35,75,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,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),(37,36,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(38,141,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,49,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(40,170,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(41,109,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,35,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(43,167,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(44,183,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,147,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,182,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(47,10,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,190,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,45,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(50,33,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */; UNLOCK TABLES; @@ -1035,7 +1035,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant_payment` WRITE; /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */; -INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES (1,25,45),(2,35,46),(3,26,47),(4,23,48),(5,13,49),(6,37,50),(7,38,51),(8,8,52),(9,20,53),(10,14,54),(11,43,55),(12,40,56),(13,2,57),(14,11,58),(15,17,59),(16,48,60),(17,44,61),(18,36,62),(19,42,63),(20,18,64),(21,5,65),(22,30,66),(23,22,67),(24,10,68),(25,34,69),(26,4,70),(27,21,71),(28,1,72),(29,28,73),(30,3,74),(31,16,75),(32,39,76),(33,6,77),(34,45,78),(35,32,79),(36,41,80),(37,33,81),(38,19,82),(39,12,83),(40,7,84),(41,27,85),(42,49,86),(43,46,87),(44,24,88),(45,9,89),(46,47,90),(47,31,91),(48,29,92),(49,50,93),(50,15,94); +INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES (1,9,45),(2,6,46),(3,47,47),(4,36,48),(5,50,49),(6,42,50),(7,37,51),(8,26,52),(9,24,53),(10,49,54),(11,39,55),(12,31,56),(13,15,57),(14,13,58),(15,23,59),(16,35,60),(17,22,61),(18,33,62),(19,30,63),(20,5,64),(21,21,65),(22,32,66),(23,41,67),(24,4,68),(25,14,69),(26,34,70),(27,20,71),(28,10,72),(29,18,73),(30,1,74),(31,8,75),(32,7,76),(33,38,77),(34,12,78),(35,25,79),(36,28,80),(37,11,81),(38,45,82),(39,17,83),(40,3,84),(41,29,85),(42,43,86),(43,40,87),(44,2,88),(45,19,89),(46,46,90),(47,44,91),(48,48,92),(49,27,93),(50,16,94); /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -1083,7 +1083,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,57,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1); +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,13,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; @@ -1112,7 +1112,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_phone` WRITE; /*!40000 ALTER TABLE `civicrm_phone` DISABLE KEYS */; -INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES (1,96,1,1,0,NULL,'(507) 672-5246',NULL,'5076725246',2),(2,148,1,1,0,NULL,'(707) 300-4569',NULL,'7073004569',2),(3,108,1,1,0,NULL,'(344) 829-5895',NULL,'3448295895',1),(4,38,1,1,0,NULL,'642-9501',NULL,'6429501',2),(5,161,1,1,0,NULL,'434-9768',NULL,'4349768',2),(6,161,1,0,0,NULL,'641-1515',NULL,'6411515',1),(7,155,1,1,0,NULL,'884-5677',NULL,'8845677',2),(8,155,1,0,0,NULL,'487-9868',NULL,'4879868',2),(9,154,1,1,0,NULL,'(401) 216-8909',NULL,'4012168909',2),(10,92,1,1,0,NULL,'237-7771',NULL,'2377771',2),(11,52,1,1,0,NULL,'818-3980',NULL,'8183980',1),(12,107,1,1,0,NULL,'(203) 604-6477',NULL,'2036046477',2),(13,107,1,0,0,NULL,'589-4843',NULL,'5894843',1),(14,94,1,1,0,NULL,'(547) 851-7208',NULL,'5478517208',1),(15,94,1,0,0,NULL,'(227) 765-3049',NULL,'2277653049',1),(16,125,1,1,0,NULL,'411-3708',NULL,'4113708',2),(17,125,1,0,0,NULL,'880-6979',NULL,'8806979',1),(18,115,1,1,0,NULL,'597-3858',NULL,'5973858',1),(19,115,1,0,0,NULL,'611-7919',NULL,'6117919',1),(20,80,1,1,0,NULL,'678-4010',NULL,'6784010',1),(21,80,1,0,0,NULL,'(777) 224-6611',NULL,'7772246611',2),(22,109,1,1,0,NULL,'(230) 572-7897',NULL,'2305727897',1),(23,109,1,0,0,NULL,'485-7404',NULL,'4857404',1),(24,194,1,1,0,NULL,'822-1587',NULL,'8221587',2),(25,194,1,0,0,NULL,'613-9396',NULL,'6139396',1),(26,60,1,1,0,NULL,'895-9533',NULL,'8959533',1),(27,133,1,1,0,NULL,'228-2024',NULL,'2282024',1),(28,127,1,1,0,NULL,'520-1748',NULL,'5201748',2),(29,127,1,0,0,NULL,'742-9351',NULL,'7429351',1),(30,190,1,1,0,NULL,'863-3584',NULL,'8633584',2),(31,190,1,0,0,NULL,'(372) 554-4746',NULL,'3725544746',1),(32,191,1,1,0,NULL,'318-2948',NULL,'3182948',1),(33,191,1,0,0,NULL,'356-6958',NULL,'3566958',2),(34,121,1,1,0,NULL,'(360) 738-3781',NULL,'3607383781',1),(35,121,1,0,0,NULL,'(879) 810-2149',NULL,'8798102149',1),(36,62,1,1,0,NULL,'807-5196',NULL,'8075196',1),(37,62,1,0,0,NULL,'294-1753',NULL,'2941753',2),(38,113,1,1,0,NULL,'641-8091',NULL,'6418091',1),(39,13,1,1,0,NULL,'(543) 598-8943',NULL,'5435988943',1),(40,71,1,1,0,NULL,'(443) 769-4062',NULL,'4437694062',2),(41,71,1,0,0,NULL,'353-4841',NULL,'3534841',2),(42,110,1,1,0,NULL,'(789) 382-5664',NULL,'7893825664',1),(43,110,1,0,0,NULL,'849-9134',NULL,'8499134',1),(44,152,1,1,0,NULL,'434-4238',NULL,'4344238',2),(45,152,1,0,0,NULL,'(697) 332-3990',NULL,'6973323990',1),(46,149,1,1,0,NULL,'(553) 752-5871',NULL,'5537525871',2),(47,36,1,1,0,NULL,'(620) 663-1793',NULL,'6206631793',2),(48,36,1,0,0,NULL,'(551) 686-2557',NULL,'5516862557',2),(49,136,1,1,0,NULL,'(520) 249-4118',NULL,'5202494118',2),(50,150,1,1,0,NULL,'(611) 644-8688',NULL,'6116448688',2),(51,63,1,1,0,NULL,'639-5202',NULL,'6395202',2),(52,63,1,0,0,NULL,'342-4758',NULL,'3424758',1),(53,131,1,1,0,NULL,'704-2888',NULL,'7042888',2),(54,193,1,1,0,NULL,'785-8033',NULL,'7858033',2),(55,193,1,0,0,NULL,'388-6558',NULL,'3886558',1),(56,5,1,1,0,NULL,'841-3631',NULL,'8413631',1),(57,5,1,0,0,NULL,'(728) 755-2318',NULL,'7287552318',1),(58,31,1,1,0,NULL,'(225) 678-3064',NULL,'2256783064',2),(59,31,1,0,0,NULL,'578-5667',NULL,'5785667',1),(60,2,1,1,0,NULL,'254-8403',NULL,'2548403',1),(61,66,1,1,0,NULL,'812-4258',NULL,'8124258',2),(62,66,1,0,0,NULL,'(815) 430-9621',NULL,'8154309621',2),(63,59,1,1,0,NULL,'(715) 496-5734',NULL,'7154965734',2),(64,28,1,1,0,NULL,'336-1989',NULL,'3361989',1),(65,129,1,1,0,NULL,'656-8538',NULL,'6568538',1),(66,129,1,0,0,NULL,'(372) 593-5300',NULL,'3725935300',1),(67,171,1,1,0,NULL,'(750) 374-1574',NULL,'7503741574',1),(68,171,1,0,0,NULL,'344-4957',NULL,'3444957',1),(69,186,1,1,0,NULL,'(812) 754-4411',NULL,'8127544411',1),(70,186,1,0,0,NULL,'(773) 350-1110',NULL,'7733501110',1),(71,126,1,1,0,NULL,'(236) 698-8705',NULL,'2366988705',2),(72,126,1,0,0,NULL,'(231) 762-4171',NULL,'2317624171',2),(73,143,1,1,0,NULL,'(300) 882-6626',NULL,'3008826626',1),(74,143,1,0,0,NULL,'(866) 478-2901',NULL,'8664782901',2),(75,98,1,1,0,NULL,'893-8279',NULL,'8938279',1),(76,98,1,0,0,NULL,'(445) 815-1589',NULL,'4458151589',1),(77,53,1,1,0,NULL,'499-3207',NULL,'4993207',2),(78,53,1,0,0,NULL,'(216) 202-5031',NULL,'2162025031',2),(79,170,1,1,0,NULL,'(781) 205-2601',NULL,'7812052601',2),(80,200,1,1,0,NULL,'(812) 658-3556',NULL,'8126583556',1),(81,93,1,1,0,NULL,'(434) 535-7576',NULL,'4345357576',2),(82,93,1,0,0,NULL,'768-8805',NULL,'7688805',2),(83,49,1,1,0,NULL,'(215) 755-6008',NULL,'2157556008',1),(84,49,1,0,0,NULL,'498-4973',NULL,'4984973',2),(85,58,1,1,0,NULL,'402-2334',NULL,'4022334',2),(86,58,1,0,0,NULL,'(841) 402-8922',NULL,'8414028922',2),(87,168,1,1,0,NULL,'(298) 687-9849',NULL,'2986879849',2),(88,24,1,1,0,NULL,'226-3059',NULL,'2263059',1),(89,24,1,0,0,NULL,'868-1460',NULL,'8681460',1),(90,30,1,1,0,NULL,'537-3653',NULL,'5373653',1),(91,30,1,0,0,NULL,'829-9079',NULL,'8299079',2),(92,50,1,1,0,NULL,'(417) 249-7284',NULL,'4172497284',2),(93,50,1,0,0,NULL,'752-6101',NULL,'7526101',2),(94,45,1,1,0,NULL,'(612) 856-7346',NULL,'6128567346',2),(95,87,1,1,0,NULL,'(817) 664-5162',NULL,'8176645162',2),(96,118,1,1,0,NULL,'(873) 819-8022',NULL,'8738198022',2),(97,118,1,0,0,NULL,'799-2894',NULL,'7992894',2),(98,20,1,1,0,NULL,'(500) 784-2976',NULL,'5007842976',2),(99,20,1,0,0,NULL,'(639) 386-3466',NULL,'6393863466',2),(100,21,1,1,0,NULL,'(571) 489-9039',NULL,'5714899039',1),(101,48,1,1,0,NULL,'843-2463',NULL,'8432463',1),(102,48,1,0,0,NULL,'(495) 362-1693',NULL,'4953621693',1),(103,198,1,1,0,NULL,'775-7636',NULL,'7757636',2),(104,198,1,0,0,NULL,'(356) 662-7771',NULL,'3566627771',1),(105,82,1,1,0,NULL,'778-3054',NULL,'7783054',2),(106,177,1,1,0,NULL,'(279) 552-6850',NULL,'2795526850',2),(107,132,1,1,0,NULL,'395-9522',NULL,'3959522',1),(108,132,1,0,0,NULL,'(224) 875-5792',NULL,'2248755792',2),(109,156,1,1,0,NULL,'(553) 632-4485',NULL,'5536324485',1),(110,32,1,1,0,NULL,'(347) 371-2195',NULL,'3473712195',1),(111,124,1,1,0,NULL,'481-3255',NULL,'4813255',1),(112,124,1,0,0,NULL,'202-5494',NULL,'2025494',1),(113,172,1,1,0,NULL,'(207) 604-4873',NULL,'2076044873',1),(114,172,1,0,0,NULL,'(805) 591-3208',NULL,'8055913208',2),(115,15,1,1,0,NULL,'(349) 583-7177',NULL,'3495837177',2),(116,22,1,1,0,NULL,'404-6854',NULL,'4046854',2),(117,40,1,1,0,NULL,'609-9782',NULL,'6099782',1),(118,40,1,0,0,NULL,'524-8414',NULL,'5248414',1),(119,123,1,1,0,NULL,'836-1136',NULL,'8361136',2),(120,180,1,1,0,NULL,'305-9007',NULL,'3059007',2),(121,180,1,0,0,NULL,'525-3511',NULL,'5253511',1),(122,184,1,1,0,NULL,'(653) 481-5234',NULL,'6534815234',2),(123,8,1,1,0,NULL,'(888) 412-4460',NULL,'8884124460',1),(124,112,1,1,0,NULL,'(685) 612-2023',NULL,'6856122023',2),(125,138,1,1,0,NULL,'839-8027',NULL,'8398027',2),(126,153,1,1,0,NULL,'(726) 862-9912',NULL,'7268629912',1),(127,44,1,1,0,NULL,'457-9935',NULL,'4579935',1),(128,44,1,0,0,NULL,'(412) 208-3303',NULL,'4122083303',2),(129,119,1,1,0,NULL,'820-2823',NULL,'8202823',2),(130,78,1,1,0,NULL,'600-3659',NULL,'6003659',1),(131,144,1,1,0,NULL,'446-2331',NULL,'4462331',2),(132,164,1,1,0,NULL,'565-9544',NULL,'5659544',2),(133,106,1,1,0,NULL,'(622) 331-1600',NULL,'6223311600',2),(134,73,1,1,0,NULL,'714-8146',NULL,'7148146',1),(135,163,1,1,0,NULL,'(805) 802-7921',NULL,'8058027921',2),(136,197,1,1,0,NULL,'392-4508',NULL,'3924508',1),(137,197,1,0,0,NULL,'698-1961',NULL,'6981961',2),(138,196,1,1,0,NULL,'(445) 784-8543',NULL,'4457848543',1),(139,196,1,0,0,NULL,'(693) 539-8688',NULL,'6935398688',2),(140,11,1,1,0,NULL,'387-5538',NULL,'3875538',1),(141,11,1,0,0,NULL,'(623) 559-5058',NULL,'6235595058',1),(142,140,1,1,0,NULL,'(561) 877-3390',NULL,'5618773390',1),(143,27,1,1,0,NULL,'(509) 482-7487',NULL,'5094827487',2),(144,97,1,1,0,NULL,'488-8935',NULL,'4888935',1),(145,97,1,0,0,NULL,'(645) 209-1705',NULL,'6452091705',1),(146,35,1,1,0,NULL,'521-7754',NULL,'5217754',1),(147,79,1,1,0,NULL,'806-4274',NULL,'8064274',1),(148,47,1,1,0,NULL,'(550) 735-7307',NULL,'5507357307',1),(149,47,1,0,0,NULL,'(823) 687-7371',NULL,'8236877371',2),(150,61,1,1,0,NULL,'(339) 564-8485',NULL,'3395648485',1),(151,61,1,0,0,NULL,'646-5490',NULL,'6465490',2),(152,134,1,1,0,NULL,'647-2533',NULL,'6472533',1),(153,134,1,0,0,NULL,'249-3397',NULL,'2493397',2),(154,158,1,1,0,NULL,'471-1451',NULL,'4711451',2),(155,37,1,1,0,NULL,'(726) 738-4278',NULL,'7267384278',2),(156,102,1,1,0,NULL,'(571) 637-9125',NULL,'5716379125',2),(157,102,1,0,0,NULL,'232-3048',NULL,'2323048',2),(158,26,1,1,0,NULL,'(217) 807-1455',NULL,'2178071455',2),(159,179,1,1,0,NULL,'(516) 656-9628',NULL,'5166569628',1),(160,75,1,1,0,NULL,'(614) 366-4776',NULL,'6143664776',1),(161,75,1,0,0,NULL,'(871) 319-5763',NULL,'8713195763',2),(162,130,1,1,0,NULL,'831-7159',NULL,'8317159',2),(163,130,1,0,0,NULL,'(223) 351-8863',NULL,'2233518863',2),(164,141,1,1,0,NULL,'(788) 446-5625',NULL,'7884465625',2),(165,141,1,0,0,NULL,'(517) 853-5084',NULL,'5178535084',2),(166,70,1,1,0,NULL,'370-2426',NULL,'3702426',2),(167,70,1,0,0,NULL,'(696) 220-7755',NULL,'6962207755',1),(168,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(169,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(170,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); +INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES (1,124,1,1,0,NULL,'215-2039',NULL,'2152039',2),(2,124,1,0,0,NULL,'(451) 521-5506',NULL,'4515215506',2),(3,158,1,1,0,NULL,'844-8644',NULL,'8448644',1),(4,158,1,0,0,NULL,'(848) 225-7018',NULL,'8482257018',1),(5,22,1,1,0,NULL,'396-8912',NULL,'3968912',2),(6,22,1,0,0,NULL,'(257) 414-6900',NULL,'2574146900',2),(7,13,1,1,0,NULL,'(308) 624-9464',NULL,'3086249464',2),(8,13,1,0,0,NULL,'395-2801',NULL,'3952801',2),(9,169,1,1,0,NULL,'(623) 370-1164',NULL,'6233701164',1),(10,169,1,0,0,NULL,'(333) 712-2748',NULL,'3337122748',1),(11,77,1,1,0,NULL,'(862) 504-8362',NULL,'8625048362',1),(12,77,1,0,0,NULL,'742-9908',NULL,'7429908',2),(13,160,1,1,0,NULL,'832-2686',NULL,'8322686',2),(14,160,1,0,0,NULL,'274-6022',NULL,'2746022',1),(15,186,1,1,0,NULL,'(885) 221-9915',NULL,'8852219915',1),(16,102,1,1,0,NULL,'525-2835',NULL,'5252835',1),(17,102,1,0,0,NULL,'(215) 374-8193',NULL,'2153748193',1),(18,66,1,1,0,NULL,'(779) 601-1537',NULL,'7796011537',1),(19,92,1,1,0,NULL,'891-9420',NULL,'8919420',2),(20,151,1,1,0,NULL,'(893) 588-5540',NULL,'8935885540',2),(21,103,1,1,0,NULL,'292-7172',NULL,'2927172',2),(22,103,1,0,0,NULL,'(457) 715-7715',NULL,'4577157715',1),(23,139,1,1,0,NULL,'592-5493',NULL,'5925493',2),(24,97,1,1,0,NULL,'(375) 677-3354',NULL,'3756773354',2),(25,97,1,0,0,NULL,'(546) 303-2579',NULL,'5463032579',1),(26,164,1,1,0,NULL,'(513) 428-5620',NULL,'5134285620',2),(27,51,1,1,0,NULL,'274-9956',NULL,'2749956',1),(28,51,1,0,0,NULL,'(604) 431-3504',NULL,'6044313504',2),(29,128,1,1,0,NULL,'(599) 477-4333',NULL,'5994774333',2),(30,128,1,0,0,NULL,'533-1490',NULL,'5331490',1),(31,69,1,1,0,NULL,'(802) 426-9973',NULL,'8024269973',2),(32,69,1,0,0,NULL,'(815) 268-3956',NULL,'8152683956',2),(33,15,1,1,0,NULL,'681-7678',NULL,'6817678',2),(34,98,1,1,0,NULL,'(640) 762-2897',NULL,'6407622897',2),(35,182,1,1,0,NULL,'(811) 275-4037',NULL,'8112754037',2),(36,110,1,1,0,NULL,'(243) 202-3658',NULL,'2432023658',2),(37,38,1,1,0,NULL,'(567) 218-2059',NULL,'5672182059',1),(38,121,1,1,0,NULL,'(463) 407-6363',NULL,'4634076363',2),(39,121,1,0,0,NULL,'812-2971',NULL,'8122971',2),(40,131,1,1,0,NULL,'422-5518',NULL,'4225518',2),(41,131,1,0,0,NULL,'(468) 491-2505',NULL,'4684912505',2),(42,87,1,1,0,NULL,'291-3244',NULL,'2913244',2),(43,42,1,1,0,NULL,'(359) 538-9170',NULL,'3595389170',2),(44,75,1,1,0,NULL,'(641) 870-6706',NULL,'6418706706',1),(45,75,1,0,0,NULL,'580-7300',NULL,'5807300',2),(46,55,1,1,0,NULL,'(344) 846-1900',NULL,'3448461900',2),(47,190,1,1,0,NULL,'560-1601',NULL,'5601601',2),(48,190,1,0,0,NULL,'236-6609',NULL,'2366609',1),(49,165,1,1,0,NULL,'231-5210',NULL,'2315210',2),(50,165,1,0,0,NULL,'(335) 356-1186',NULL,'3353561186',2),(51,31,1,1,0,NULL,'833-4804',NULL,'8334804',2),(52,104,1,1,0,NULL,'627-4610',NULL,'6274610',2),(53,196,1,1,0,NULL,'649-9394',NULL,'6499394',1),(54,196,1,0,0,NULL,'550-4263',NULL,'5504263',1),(55,63,1,1,0,NULL,'(671) 820-3836',NULL,'6718203836',1),(56,63,1,0,0,NULL,'256-8905',NULL,'2568905',2),(57,148,1,1,0,NULL,'(731) 249-5282',NULL,'7312495282',1),(58,6,1,1,0,NULL,'462-3162',NULL,'4623162',1),(59,149,1,1,0,NULL,'876-1702',NULL,'8761702',1),(60,149,1,0,0,NULL,'594-5277',NULL,'5945277',2),(61,181,1,1,0,NULL,'399-4480',NULL,'3994480',1),(62,181,1,0,0,NULL,'597-6888',NULL,'5976888',1),(63,183,1,1,0,NULL,'263-2844',NULL,'2632844',2),(64,183,1,0,0,NULL,'542-9869',NULL,'5429869',1),(65,113,1,1,0,NULL,'(894) 359-1885',NULL,'8943591885',1),(66,180,1,1,0,NULL,'406-9352',NULL,'4069352',2),(67,180,1,0,0,NULL,'699-2964',NULL,'6992964',2),(68,4,1,1,0,NULL,'(232) 817-8794',NULL,'2328178794',2),(69,4,1,0,0,NULL,'366-3198',NULL,'3663198',2),(70,41,1,1,0,NULL,'610-3791',NULL,'6103791',2),(71,41,1,0,0,NULL,'774-7599',NULL,'7747599',2),(72,152,1,1,0,NULL,'524-9257',NULL,'5249257',1),(73,111,1,1,0,NULL,'631-7699',NULL,'6317699',2),(74,198,1,1,0,NULL,'284-6172',NULL,'2846172',1),(75,117,1,1,0,NULL,'(774) 627-9348',NULL,'7746279348',2),(76,117,1,0,0,NULL,'(410) 673-9647',NULL,'4106739647',2),(77,72,1,1,0,NULL,'870-1075',NULL,'8701075',2),(78,72,1,0,0,NULL,'(774) 358-9454',NULL,'7743589454',1),(79,112,1,1,0,NULL,'202-5464',NULL,'2025464',2),(80,112,1,0,0,NULL,'(220) 738-4753',NULL,'2207384753',1),(81,59,1,1,0,NULL,'(558) 766-6556',NULL,'5587666556',2),(82,101,1,1,0,NULL,'(615) 796-1598',NULL,'6157961598',2),(83,171,1,1,0,NULL,'666-6978',NULL,'6666978',2),(84,171,1,0,0,NULL,'(456) 492-2131',NULL,'4564922131',1),(85,16,1,1,0,NULL,'(327) 711-2687',NULL,'3277112687',1),(86,16,1,0,0,NULL,'294-7892',NULL,'2947892',2),(87,37,1,1,0,NULL,'(508) 794-2889',NULL,'5087942889',2),(88,96,1,1,0,NULL,'590-9379',NULL,'5909379',1),(89,26,1,1,0,NULL,'454-4692',NULL,'4544692',1),(90,19,1,1,0,NULL,'(861) 884-6497',NULL,'8618846497',2),(91,19,1,0,0,NULL,'489-5792',NULL,'4895792',2),(92,132,1,1,0,NULL,'535-7903',NULL,'5357903',2),(93,177,1,1,0,NULL,'(419) 688-7497',NULL,'4196887497',1),(94,185,1,1,0,NULL,'(500) 419-4914',NULL,'5004194914',1),(95,159,1,1,0,NULL,'(877) 305-4016',NULL,'8773054016',1),(96,133,1,1,0,NULL,'(537) 847-1810',NULL,'5378471810',2),(97,116,1,1,0,NULL,'(292) 608-7961',NULL,'2926087961',2),(98,116,1,0,0,NULL,'(552) 792-6380',NULL,'5527926380',2),(99,10,1,1,0,NULL,'(586) 818-4414',NULL,'5868184414',2),(100,45,1,1,0,NULL,'(597) 885-3429',NULL,'5978853429',1),(101,29,1,1,0,NULL,'(215) 701-7600',NULL,'2157017600',1),(102,29,1,0,0,NULL,'(594) 312-8872',NULL,'5943128872',2),(103,17,1,1,0,NULL,'(473) 740-2069',NULL,'4737402069',2),(104,52,1,1,0,NULL,'(759) 798-4111',NULL,'7597984111',2),(105,5,1,1,0,NULL,'372-5679',NULL,'3725679',1),(106,61,1,1,0,NULL,'(204) 237-8721',NULL,'2042378721',1),(107,61,1,0,0,NULL,'798-7527',NULL,'7987527',2),(108,36,1,1,0,NULL,'714-6990',NULL,'7146990',1),(109,2,1,1,0,NULL,'(453) 202-6229',NULL,'4532026229',2),(110,27,1,1,0,NULL,'596-2901',NULL,'5962901',2),(111,3,1,1,0,NULL,'(330) 878-9903',NULL,'3308789903',2),(112,3,1,0,0,NULL,'(473) 299-6158',NULL,'4732996158',2),(113,82,1,1,0,NULL,'(666) 208-1513',NULL,'6662081513',2),(114,82,1,0,0,NULL,'(279) 449-7954',NULL,'2794497954',1),(115,175,1,1,0,NULL,'(432) 598-6716',NULL,'4325986716',2),(116,137,1,1,0,NULL,'(693) 805-3604',NULL,'6938053604',2),(117,137,1,0,0,NULL,'715-6890',NULL,'7156890',2),(118,144,1,1,0,NULL,'673-8001',NULL,'6738001',2),(119,150,1,1,0,NULL,'(455) 360-3507',NULL,'4553603507',2),(120,30,1,1,0,NULL,'(895) 849-2844',NULL,'8958492844',2),(121,30,1,0,0,NULL,'(344) 233-1695',NULL,'3442331695',2),(122,64,1,1,0,NULL,'720-1539',NULL,'7201539',1),(123,95,1,1,0,NULL,'(519) 755-2130',NULL,'5197552130',2),(124,109,1,1,0,NULL,'(605) 500-1123',NULL,'6055001123',2),(125,109,1,0,0,NULL,'466-3733',NULL,'4663733',1),(126,105,1,1,0,NULL,'455-3854',NULL,'4553854',1),(127,135,1,1,0,NULL,'621-4156',NULL,'6214156',2),(128,135,1,0,0,NULL,'(882) 278-9898',NULL,'8822789898',2),(129,173,1,1,0,NULL,'801-4849',NULL,'8014849',2),(130,173,1,0,0,NULL,'291-5077',NULL,'2915077',2),(131,140,1,1,0,NULL,'353-3312',NULL,'3533312',1),(132,140,1,0,0,NULL,'859-4455',NULL,'8594455',1),(133,138,1,1,0,NULL,'215-4810',NULL,'2154810',2),(134,56,1,1,0,NULL,'545-1799',NULL,'5451799',2),(135,56,1,0,0,NULL,'(885) 541-1133',NULL,'8855411133',1),(136,187,1,1,0,NULL,'(381) 516-8944',NULL,'3815168944',1),(137,187,1,0,0,NULL,'(691) 220-6360',NULL,'6912206360',1),(138,201,1,1,0,NULL,'575-1114',NULL,'5751114',2),(139,89,1,1,0,NULL,'(588) 405-6848',NULL,'5884056848',2),(140,176,1,1,0,NULL,'430-2257',NULL,'4302257',2),(141,176,1,0,0,NULL,'(387) 525-6195',NULL,'3875256195',2),(142,191,1,1,0,NULL,'(519) 628-1670',NULL,'5196281670',1),(143,191,1,0,0,NULL,'(343) 728-5753',NULL,'3437285753',2),(144,118,1,1,0,NULL,'279-5117',NULL,'2795117',1),(145,118,1,0,0,NULL,'634-4384',NULL,'6344384',2),(146,9,1,1,0,NULL,'(575) 575-3260',NULL,'5755753260',1),(147,9,1,0,0,NULL,'(734) 783-1080',NULL,'7347831080',1),(148,23,1,1,0,NULL,'474-3335',NULL,'4743335',1),(149,23,1,0,0,NULL,'607-3608',NULL,'6073608',1),(150,62,1,1,0,NULL,'(745) 374-3892',NULL,'7453743892',2),(151,40,1,1,0,NULL,'(798) 583-6913',NULL,'7985836913',2),(152,85,1,1,0,NULL,'(819) 866-3063',NULL,'8198663063',1),(153,85,1,0,0,NULL,'580-3567',NULL,'5803567',1),(154,39,1,1,0,NULL,'(855) 804-6889',NULL,'8558046889',2),(155,39,1,0,0,NULL,'652-4839',NULL,'6524839',1),(156,123,1,1,0,NULL,'(324) 219-3958',NULL,'3242193958',1),(157,130,1,1,0,NULL,'(753) 811-4427',NULL,'7538114427',2),(158,130,1,0,0,NULL,'343-6641',NULL,'3436641',1),(159,153,1,1,0,NULL,'(527) 747-4576',NULL,'5277474576',1),(160,153,1,0,0,NULL,'(239) 237-2652',NULL,'2392372652',1),(161,188,1,1,0,NULL,'(253) 451-9866',NULL,'2534519866',2),(162,188,1,0,0,NULL,'(274) 822-2825',NULL,'2748222825',1),(163,157,1,1,0,NULL,'(545) 736-4486',NULL,'5457364486',2),(164,49,1,1,0,NULL,'(477) 741-7030',NULL,'4777417030',2),(165,195,1,1,0,NULL,'276-1346',NULL,'2761346',1),(166,48,1,1,0,NULL,'(235) 422-2943',NULL,'2354222943',1),(167,48,1,0,0,NULL,'(280) 638-4479',NULL,'2806384479',2),(168,134,1,1,0,NULL,'(414) 537-7512',NULL,'4145377512',2),(169,134,1,0,0,NULL,'(567) 269-5303',NULL,'5672695303',2),(170,155,1,1,0,NULL,'(423) 867-6379',NULL,'4238676379',1),(171,155,1,0,0,NULL,'473-2516',NULL,'4732516',2),(172,58,1,1,0,NULL,'378-3788',NULL,'3783788',1),(173,58,1,0,0,NULL,'(880) 786-7670',NULL,'8807867670',2),(174,129,1,1,0,NULL,'475-6843',NULL,'4756843',2),(175,193,1,1,0,NULL,'395-3822',NULL,'3953822',1),(176,145,1,1,0,NULL,'833-1984',NULL,'8331984',2),(177,145,1,0,0,NULL,'(581) 359-3713',NULL,'5813593713',1),(178,174,1,1,0,NULL,'884-4345',NULL,'8844345',2),(179,174,1,0,0,NULL,'(475) 305-7432',NULL,'4753057432',2),(180,25,1,1,0,NULL,'676-4446',NULL,'6764446',2),(181,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(182,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(183,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */; UNLOCK TABLES; @@ -1269,7 +1269,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_relationship` WRITE; /*!40000 ALTER TABLE `civicrm_relationship` DISABLE KEYS */; -INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`) VALUES (1,4,24,1,NULL,NULL,1,NULL,0,0,NULL),(2,142,24,1,NULL,NULL,1,NULL,0,0,NULL),(3,4,25,1,NULL,NULL,1,NULL,0,0,NULL),(4,142,25,1,NULL,NULL,1,NULL,0,0,NULL),(5,142,4,4,NULL,NULL,1,NULL,0,0,NULL),(6,25,104,8,NULL,NULL,1,NULL,0,0,NULL),(7,4,104,8,NULL,NULL,1,NULL,0,0,NULL),(8,142,104,8,NULL,NULL,1,NULL,0,0,NULL),(9,24,104,7,NULL,NULL,0,NULL,0,0,NULL),(10,25,24,2,NULL,NULL,0,NULL,0,0,NULL),(11,45,30,1,NULL,NULL,1,NULL,0,0,NULL),(12,182,30,1,NULL,NULL,1,NULL,0,0,NULL),(13,45,50,1,NULL,NULL,1,NULL,0,0,NULL),(14,182,50,1,NULL,NULL,1,NULL,0,0,NULL),(15,182,45,4,NULL,NULL,1,NULL,0,0,NULL),(16,50,174,8,NULL,NULL,1,NULL,0,0,NULL),(17,45,174,8,NULL,NULL,1,NULL,0,0,NULL),(18,182,174,8,NULL,NULL,1,NULL,0,0,NULL),(19,30,174,7,NULL,NULL,1,NULL,0,0,NULL),(20,50,30,2,NULL,NULL,1,NULL,0,0,NULL),(21,19,87,1,NULL,NULL,1,NULL,0,0,NULL),(22,20,87,1,NULL,NULL,1,NULL,0,0,NULL),(23,19,118,1,NULL,NULL,1,NULL,0,0,NULL),(24,20,118,1,NULL,NULL,1,NULL,0,0,NULL),(25,20,19,4,NULL,NULL,1,NULL,0,0,NULL),(26,118,83,8,NULL,NULL,1,NULL,0,0,NULL),(27,19,83,8,NULL,NULL,1,NULL,0,0,NULL),(28,20,83,8,NULL,NULL,1,NULL,0,0,NULL),(29,87,83,7,NULL,NULL,0,NULL,0,0,NULL),(30,118,87,2,NULL,NULL,0,NULL,0,0,NULL),(31,198,21,1,NULL,NULL,1,NULL,0,0,NULL),(32,82,21,1,NULL,NULL,1,NULL,0,0,NULL),(33,198,48,1,NULL,NULL,1,NULL,0,0,NULL),(34,82,48,1,NULL,NULL,1,NULL,0,0,NULL),(35,82,198,4,NULL,NULL,1,NULL,0,0,NULL),(36,48,185,8,NULL,NULL,1,NULL,0,0,NULL),(37,198,185,8,NULL,NULL,1,NULL,0,0,NULL),(38,82,185,8,NULL,NULL,1,NULL,0,0,NULL),(39,21,185,7,NULL,NULL,1,NULL,0,0,NULL),(40,48,21,2,NULL,NULL,1,NULL,0,0,NULL),(41,81,177,1,NULL,NULL,1,NULL,0,0,NULL),(42,156,177,1,NULL,NULL,1,NULL,0,0,NULL),(43,81,132,1,NULL,NULL,1,NULL,0,0,NULL),(44,156,132,1,NULL,NULL,1,NULL,0,0,NULL),(45,156,81,4,NULL,NULL,1,NULL,0,0,NULL),(46,132,85,8,NULL,NULL,1,NULL,0,0,NULL),(47,81,85,8,NULL,NULL,1,NULL,0,0,NULL),(48,156,85,8,NULL,NULL,1,NULL,0,0,NULL),(49,177,85,7,NULL,NULL,0,NULL,0,0,NULL),(50,132,177,2,NULL,NULL,0,NULL,0,0,NULL),(51,120,114,1,NULL,NULL,1,NULL,0,0,NULL),(52,137,114,1,NULL,NULL,1,NULL,0,0,NULL),(53,120,32,1,NULL,NULL,1,NULL,0,0,NULL),(54,137,32,1,NULL,NULL,1,NULL,0,0,NULL),(55,137,120,4,NULL,NULL,1,NULL,0,0,NULL),(56,32,29,8,NULL,NULL,1,NULL,0,0,NULL),(57,120,29,8,NULL,NULL,1,NULL,0,0,NULL),(58,137,29,8,NULL,NULL,1,NULL,0,0,NULL),(59,114,29,7,NULL,NULL,1,NULL,0,0,NULL),(60,32,114,2,NULL,NULL,1,NULL,0,0,NULL),(61,124,139,1,NULL,NULL,1,NULL,0,0,NULL),(62,172,139,1,NULL,NULL,1,NULL,0,0,NULL),(63,124,76,1,NULL,NULL,1,NULL,0,0,NULL),(64,172,76,1,NULL,NULL,1,NULL,0,0,NULL),(65,172,124,4,NULL,NULL,1,NULL,0,0,NULL),(66,76,12,8,NULL,NULL,1,NULL,0,0,NULL),(67,124,12,8,NULL,NULL,1,NULL,0,0,NULL),(68,172,12,8,NULL,NULL,1,NULL,0,0,NULL),(69,139,12,7,NULL,NULL,0,NULL,0,0,NULL),(70,76,139,2,NULL,NULL,0,NULL,0,0,NULL),(71,22,15,1,NULL,NULL,1,NULL,0,0,NULL),(72,40,15,1,NULL,NULL,1,NULL,0,0,NULL),(73,22,7,1,NULL,NULL,1,NULL,0,0,NULL),(74,40,7,1,NULL,NULL,1,NULL,0,0,NULL),(75,40,22,4,NULL,NULL,1,NULL,0,0,NULL),(76,7,89,8,NULL,NULL,1,NULL,0,0,NULL),(77,22,89,8,NULL,NULL,1,NULL,0,0,NULL),(78,40,89,8,NULL,NULL,1,NULL,0,0,NULL),(79,15,89,7,NULL,NULL,1,NULL,0,0,NULL),(80,7,15,2,NULL,NULL,1,NULL,0,0,NULL),(81,180,6,1,NULL,NULL,1,NULL,0,0,NULL),(82,147,6,1,NULL,NULL,1,NULL,0,0,NULL),(83,180,123,1,NULL,NULL,1,NULL,0,0,NULL),(84,147,123,1,NULL,NULL,1,NULL,0,0,NULL),(85,147,180,4,NULL,NULL,1,NULL,0,0,NULL),(86,123,51,8,NULL,NULL,1,NULL,0,0,NULL),(87,180,51,8,NULL,NULL,1,NULL,0,0,NULL),(88,147,51,8,NULL,NULL,1,NULL,0,0,NULL),(89,6,51,7,NULL,NULL,1,NULL,0,0,NULL),(90,123,6,2,NULL,NULL,1,NULL,0,0,NULL),(91,184,176,1,NULL,NULL,1,NULL,0,0,NULL),(92,64,176,1,NULL,NULL,1,NULL,0,0,NULL),(93,184,166,1,NULL,NULL,1,NULL,0,0,NULL),(94,64,166,1,NULL,NULL,1,NULL,0,0,NULL),(95,64,184,4,NULL,NULL,1,NULL,0,0,NULL),(96,166,41,8,NULL,NULL,1,NULL,0,0,NULL),(97,184,41,8,NULL,NULL,1,NULL,0,0,NULL),(98,64,41,8,NULL,NULL,1,NULL,0,0,NULL),(99,176,41,7,NULL,NULL,0,NULL,0,0,NULL),(100,166,176,2,NULL,NULL,0,NULL,0,0,NULL),(101,138,8,1,NULL,NULL,1,NULL,0,0,NULL),(102,153,8,1,NULL,NULL,1,NULL,0,0,NULL),(103,138,112,1,NULL,NULL,1,NULL,0,0,NULL),(104,153,112,1,NULL,NULL,1,NULL,0,0,NULL),(105,153,138,4,NULL,NULL,1,NULL,0,0,NULL),(106,112,90,8,NULL,NULL,1,NULL,0,0,NULL),(107,138,90,8,NULL,NULL,1,NULL,0,0,NULL),(108,153,90,8,NULL,NULL,1,NULL,0,0,NULL),(109,8,90,7,NULL,NULL,0,NULL,0,0,NULL),(110,112,8,2,NULL,NULL,0,NULL,0,0,NULL),(111,78,44,1,NULL,NULL,1,NULL,0,0,NULL),(112,144,44,1,NULL,NULL,1,NULL,0,0,NULL),(113,78,119,1,NULL,NULL,1,NULL,0,0,NULL),(114,144,119,1,NULL,NULL,1,NULL,0,0,NULL),(115,144,78,4,NULL,NULL,1,NULL,0,0,NULL),(116,119,72,8,NULL,NULL,1,NULL,0,0,NULL),(117,78,72,8,NULL,NULL,1,NULL,0,0,NULL),(118,144,72,8,NULL,NULL,1,NULL,0,0,NULL),(119,44,72,7,NULL,NULL,0,NULL,0,0,NULL),(120,119,44,2,NULL,NULL,0,NULL,0,0,NULL),(121,73,164,1,NULL,NULL,1,NULL,0,0,NULL),(122,105,164,1,NULL,NULL,1,NULL,0,0,NULL),(123,73,106,1,NULL,NULL,1,NULL,0,0,NULL),(124,105,106,1,NULL,NULL,1,NULL,0,0,NULL),(125,105,73,4,NULL,NULL,1,NULL,0,0,NULL),(126,106,116,8,NULL,NULL,1,NULL,0,0,NULL),(127,73,116,8,NULL,NULL,1,NULL,0,0,NULL),(128,105,116,8,NULL,NULL,1,NULL,0,0,NULL),(129,164,116,7,NULL,NULL,1,NULL,0,0,NULL),(130,106,164,2,NULL,NULL,1,NULL,0,0,NULL),(131,196,163,1,NULL,NULL,1,NULL,0,0,NULL),(132,11,163,1,NULL,NULL,1,NULL,0,0,NULL),(133,196,197,1,NULL,NULL,1,NULL,0,0,NULL),(134,11,197,1,NULL,NULL,1,NULL,0,0,NULL),(135,11,196,4,NULL,NULL,1,NULL,0,0,NULL),(136,197,42,8,NULL,NULL,1,NULL,0,0,NULL),(137,196,42,8,NULL,NULL,1,NULL,0,0,NULL),(138,11,42,8,NULL,NULL,1,NULL,0,0,NULL),(139,163,42,7,NULL,NULL,1,NULL,0,0,NULL),(140,197,163,2,NULL,NULL,1,NULL,0,0,NULL),(141,27,201,1,NULL,NULL,1,NULL,0,0,NULL),(142,97,201,1,NULL,NULL,1,NULL,0,0,NULL),(143,27,140,1,NULL,NULL,1,NULL,0,0,NULL),(144,97,140,1,NULL,NULL,1,NULL,0,0,NULL),(145,97,27,4,NULL,NULL,1,NULL,0,0,NULL),(146,140,175,8,NULL,NULL,1,NULL,0,0,NULL),(147,27,175,8,NULL,NULL,1,NULL,0,0,NULL),(148,97,175,8,NULL,NULL,1,NULL,0,0,NULL),(149,201,175,7,NULL,NULL,1,NULL,0,0,NULL),(150,140,201,2,NULL,NULL,1,NULL,0,0,NULL),(151,47,35,1,NULL,NULL,1,NULL,0,0,NULL),(152,61,35,1,NULL,NULL,1,NULL,0,0,NULL),(153,47,79,1,NULL,NULL,1,NULL,0,0,NULL),(154,61,79,1,NULL,NULL,1,NULL,0,0,NULL),(155,61,47,4,NULL,NULL,1,NULL,0,0,NULL),(156,79,183,8,NULL,NULL,1,NULL,0,0,NULL),(157,47,183,8,NULL,NULL,1,NULL,0,0,NULL),(158,61,183,8,NULL,NULL,1,NULL,0,0,NULL),(159,35,183,7,NULL,NULL,0,NULL,0,0,NULL),(160,79,35,2,NULL,NULL,0,NULL,0,0,NULL),(161,122,134,1,NULL,NULL,1,NULL,0,0,NULL),(162,37,134,1,NULL,NULL,1,NULL,0,0,NULL),(163,122,158,1,NULL,NULL,1,NULL,0,0,NULL),(164,37,158,1,NULL,NULL,1,NULL,0,0,NULL),(165,37,122,4,NULL,NULL,1,NULL,0,0,NULL),(166,158,192,8,NULL,NULL,1,NULL,0,0,NULL),(167,122,192,8,NULL,NULL,1,NULL,0,0,NULL),(168,37,192,8,NULL,NULL,1,NULL,0,0,NULL),(169,134,192,7,NULL,NULL,1,NULL,0,0,NULL),(170,158,134,2,NULL,NULL,1,NULL,0,0,NULL),(171,179,102,1,NULL,NULL,1,NULL,0,0,NULL),(172,75,102,1,NULL,NULL,1,NULL,0,0,NULL),(173,179,26,1,NULL,NULL,1,NULL,0,0,NULL),(174,75,26,1,NULL,NULL,1,NULL,0,0,NULL),(175,75,179,4,NULL,NULL,1,NULL,0,0,NULL),(176,26,157,8,NULL,NULL,1,NULL,0,0,NULL),(177,179,157,8,NULL,NULL,1,NULL,0,0,NULL),(178,75,157,8,NULL,NULL,1,NULL,0,0,NULL),(179,102,157,7,NULL,NULL,0,NULL,0,0,NULL),(180,26,102,2,NULL,NULL,0,NULL,0,0,NULL),(181,86,130,1,NULL,NULL,1,NULL,0,0,NULL),(182,70,130,1,NULL,NULL,1,NULL,0,0,NULL),(183,86,141,1,NULL,NULL,1,NULL,0,0,NULL),(184,70,141,1,NULL,NULL,1,NULL,0,0,NULL),(185,70,86,4,NULL,NULL,1,NULL,0,0,NULL),(186,141,68,8,NULL,NULL,1,NULL,0,0,NULL),(187,86,68,8,NULL,NULL,1,NULL,0,0,NULL),(188,70,68,8,NULL,NULL,1,NULL,0,0,NULL),(189,130,68,7,NULL,NULL,1,NULL,0,0,NULL),(190,141,130,2,NULL,NULL,1,NULL,0,0,NULL),(191,65,165,1,NULL,NULL,1,NULL,0,0,NULL),(192,74,165,1,NULL,NULL,1,NULL,0,0,NULL),(193,65,55,1,NULL,NULL,1,NULL,0,0,NULL),(194,74,55,1,NULL,NULL,1,NULL,0,0,NULL),(195,74,65,4,NULL,NULL,1,NULL,0,0,NULL),(196,55,77,8,NULL,NULL,1,NULL,0,0,NULL),(197,65,77,8,NULL,NULL,1,NULL,0,0,NULL),(198,74,77,8,NULL,NULL,1,NULL,0,0,NULL),(199,165,77,7,NULL,NULL,0,NULL,0,0,NULL),(200,55,165,2,NULL,NULL,0,NULL,0,0,NULL),(201,45,10,5,NULL,NULL,1,NULL,0,0,NULL),(202,14,16,5,NULL,NULL,1,NULL,0,0,NULL),(203,96,33,5,NULL,NULL,1,NULL,0,0,NULL),(204,21,34,5,NULL,NULL,1,NULL,0,0,NULL),(205,62,39,5,NULL,NULL,1,NULL,0,0,NULL),(206,97,84,5,NULL,NULL,1,NULL,0,0,NULL),(207,108,88,5,NULL,NULL,1,NULL,0,0,NULL),(208,172,99,5,NULL,NULL,1,NULL,0,0,NULL),(209,43,101,5,NULL,NULL,1,NULL,0,0,NULL),(210,196,103,5,NULL,NULL,1,NULL,0,0,NULL),(211,149,135,5,NULL,NULL,1,NULL,0,0,NULL),(212,44,151,5,NULL,NULL,1,NULL,0,0,NULL),(213,40,159,5,NULL,NULL,1,NULL,0,0,NULL),(214,64,162,5,NULL,NULL,1,NULL,0,0,NULL),(215,118,169,5,NULL,NULL,1,NULL,0,0,NULL),(216,123,178,5,NULL,NULL,1,NULL,0,0,NULL),(217,167,189,5,NULL,NULL,1,NULL,0,0,NULL),(218,92,195,5,NULL,NULL,1,NULL,0,0,NULL),(219,79,199,5,NULL,NULL,1,NULL,0,0,NULL); +INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`) VALUES (1,159,136,1,NULL,NULL,1,NULL,0,0,NULL),(2,133,136,1,NULL,NULL,1,NULL,0,0,NULL),(3,159,185,1,NULL,NULL,1,NULL,0,0,NULL),(4,133,185,1,NULL,NULL,1,NULL,0,0,NULL),(5,133,159,4,NULL,NULL,1,NULL,0,0,NULL),(6,185,200,8,NULL,NULL,1,NULL,0,0,NULL),(7,159,200,8,NULL,NULL,1,NULL,0,0,NULL),(8,133,200,8,NULL,NULL,1,NULL,0,0,NULL),(9,136,200,7,NULL,NULL,1,NULL,0,0,NULL),(10,185,136,2,NULL,NULL,1,NULL,0,0,NULL),(11,146,116,1,NULL,NULL,1,NULL,0,0,NULL),(12,10,116,1,NULL,NULL,1,NULL,0,0,NULL),(13,146,18,1,NULL,NULL,1,NULL,0,0,NULL),(14,10,18,1,NULL,NULL,1,NULL,0,0,NULL),(15,10,146,4,NULL,NULL,1,NULL,0,0,NULL),(16,18,168,8,NULL,NULL,1,NULL,0,0,NULL),(17,146,168,8,NULL,NULL,1,NULL,0,0,NULL),(18,10,168,8,NULL,NULL,1,NULL,0,0,NULL),(19,116,168,7,NULL,NULL,0,NULL,0,0,NULL),(20,18,116,2,NULL,NULL,0,NULL,0,0,NULL),(21,28,45,1,NULL,NULL,1,NULL,0,0,NULL),(22,17,45,1,NULL,NULL,1,NULL,0,0,NULL),(23,28,29,1,NULL,NULL,1,NULL,0,0,NULL),(24,17,29,1,NULL,NULL,1,NULL,0,0,NULL),(25,17,28,4,NULL,NULL,1,NULL,0,0,NULL),(26,29,53,8,NULL,NULL,1,NULL,0,0,NULL),(27,28,53,8,NULL,NULL,1,NULL,0,0,NULL),(28,17,53,8,NULL,NULL,1,NULL,0,0,NULL),(29,45,53,7,NULL,NULL,1,NULL,0,0,NULL),(30,29,45,2,NULL,NULL,1,NULL,0,0,NULL),(31,61,52,1,NULL,NULL,1,NULL,0,0,NULL),(32,93,52,1,NULL,NULL,1,NULL,0,0,NULL),(33,61,5,1,NULL,NULL,1,NULL,0,0,NULL),(34,93,5,1,NULL,NULL,1,NULL,0,0,NULL),(35,93,61,4,NULL,NULL,1,NULL,0,0,NULL),(36,5,194,8,NULL,NULL,1,NULL,0,0,NULL),(37,61,194,8,NULL,NULL,1,NULL,0,0,NULL),(38,93,194,8,NULL,NULL,1,NULL,0,0,NULL),(39,52,194,7,NULL,NULL,1,NULL,0,0,NULL),(40,5,52,2,NULL,NULL,1,NULL,0,0,NULL),(41,27,36,1,NULL,NULL,1,NULL,0,0,NULL),(42,11,36,1,NULL,NULL,1,NULL,0,0,NULL),(43,27,2,1,NULL,NULL,1,NULL,0,0,NULL),(44,11,2,1,NULL,NULL,1,NULL,0,0,NULL),(45,11,27,4,NULL,NULL,1,NULL,0,0,NULL),(46,2,125,8,NULL,NULL,1,NULL,0,0,NULL),(47,27,125,8,NULL,NULL,1,NULL,0,0,NULL),(48,11,125,8,NULL,NULL,1,NULL,0,0,NULL),(49,36,125,7,NULL,NULL,0,NULL,0,0,NULL),(50,2,36,2,NULL,NULL,0,NULL,0,0,NULL),(51,82,88,1,NULL,NULL,1,NULL,0,0,NULL),(52,175,88,1,NULL,NULL,1,NULL,0,0,NULL),(53,82,3,1,NULL,NULL,1,NULL,0,0,NULL),(54,175,3,1,NULL,NULL,1,NULL,0,0,NULL),(55,175,82,4,NULL,NULL,1,NULL,0,0,NULL),(56,3,33,8,NULL,NULL,1,NULL,0,0,NULL),(57,82,33,8,NULL,NULL,1,NULL,0,0,NULL),(58,175,33,8,NULL,NULL,1,NULL,0,0,NULL),(59,88,33,7,NULL,NULL,0,NULL,0,0,NULL),(60,3,88,2,NULL,NULL,0,NULL,0,0,NULL),(61,143,73,1,NULL,NULL,1,NULL,0,0,NULL),(62,35,73,1,NULL,NULL,1,NULL,0,0,NULL),(63,143,60,1,NULL,NULL,1,NULL,0,0,NULL),(64,35,60,1,NULL,NULL,1,NULL,0,0,NULL),(65,35,143,4,NULL,NULL,1,NULL,0,0,NULL),(66,60,57,8,NULL,NULL,1,NULL,0,0,NULL),(67,143,57,8,NULL,NULL,1,NULL,0,0,NULL),(68,35,57,8,NULL,NULL,1,NULL,0,0,NULL),(69,73,57,7,NULL,NULL,1,NULL,0,0,NULL),(70,60,73,2,NULL,NULL,1,NULL,0,0,NULL),(71,150,137,1,NULL,NULL,1,NULL,0,0,NULL),(72,30,137,1,NULL,NULL,1,NULL,0,0,NULL),(73,150,144,1,NULL,NULL,1,NULL,0,0,NULL),(74,30,144,1,NULL,NULL,1,NULL,0,0,NULL),(75,30,150,4,NULL,NULL,1,NULL,0,0,NULL),(76,144,120,8,NULL,NULL,1,NULL,0,0,NULL),(77,150,120,8,NULL,NULL,1,NULL,0,0,NULL),(78,30,120,8,NULL,NULL,1,NULL,0,0,NULL),(79,137,120,7,NULL,NULL,0,NULL,0,0,NULL),(80,144,137,2,NULL,NULL,0,NULL,0,0,NULL),(81,109,64,1,NULL,NULL,1,NULL,0,0,NULL),(82,100,64,1,NULL,NULL,1,NULL,0,0,NULL),(83,109,95,1,NULL,NULL,1,NULL,0,0,NULL),(84,100,95,1,NULL,NULL,1,NULL,0,0,NULL),(85,100,109,4,NULL,NULL,1,NULL,0,0,NULL),(86,95,107,8,NULL,NULL,1,NULL,0,0,NULL),(87,109,107,8,NULL,NULL,1,NULL,0,0,NULL),(88,100,107,8,NULL,NULL,1,NULL,0,0,NULL),(89,64,107,7,NULL,NULL,0,NULL,0,0,NULL),(90,95,64,2,NULL,NULL,0,NULL,0,0,NULL),(91,173,105,1,NULL,NULL,1,NULL,0,0,NULL),(92,163,105,1,NULL,NULL,1,NULL,0,0,NULL),(93,173,135,1,NULL,NULL,1,NULL,0,0,NULL),(94,163,135,1,NULL,NULL,1,NULL,0,0,NULL),(95,163,173,4,NULL,NULL,1,NULL,0,0,NULL),(96,135,68,8,NULL,NULL,1,NULL,0,0,NULL),(97,173,68,8,NULL,NULL,1,NULL,0,0,NULL),(98,163,68,8,NULL,NULL,1,NULL,0,0,NULL),(99,105,68,7,NULL,NULL,1,NULL,0,0,NULL),(100,135,105,2,NULL,NULL,1,NULL,0,0,NULL),(101,56,140,1,NULL,NULL,1,NULL,0,0,NULL),(102,79,140,1,NULL,NULL,1,NULL,0,0,NULL),(103,56,138,1,NULL,NULL,1,NULL,0,0,NULL),(104,79,138,1,NULL,NULL,1,NULL,0,0,NULL),(105,79,56,4,NULL,NULL,1,NULL,0,0,NULL),(106,138,192,8,NULL,NULL,1,NULL,0,0,NULL),(107,56,192,8,NULL,NULL,1,NULL,0,0,NULL),(108,79,192,8,NULL,NULL,1,NULL,0,0,NULL),(109,140,192,7,NULL,NULL,1,NULL,0,0,NULL),(110,138,140,2,NULL,NULL,1,NULL,0,0,NULL),(111,89,187,1,NULL,NULL,1,NULL,0,0,NULL),(112,106,187,1,NULL,NULL,1,NULL,0,0,NULL),(113,89,201,1,NULL,NULL,1,NULL,0,0,NULL),(114,106,201,1,NULL,NULL,1,NULL,0,0,NULL),(115,106,89,4,NULL,NULL,1,NULL,0,0,NULL),(116,201,47,8,NULL,NULL,1,NULL,0,0,NULL),(117,89,47,8,NULL,NULL,1,NULL,0,0,NULL),(118,106,47,8,NULL,NULL,1,NULL,0,0,NULL),(119,187,47,7,NULL,NULL,1,NULL,0,0,NULL),(120,201,187,2,NULL,NULL,1,NULL,0,0,NULL),(121,118,176,1,NULL,NULL,1,NULL,0,0,NULL),(122,9,176,1,NULL,NULL,1,NULL,0,0,NULL),(123,118,191,1,NULL,NULL,1,NULL,0,0,NULL),(124,9,191,1,NULL,NULL,1,NULL,0,0,NULL),(125,9,118,4,NULL,NULL,1,NULL,0,0,NULL),(126,191,80,8,NULL,NULL,1,NULL,0,0,NULL),(127,118,80,8,NULL,NULL,1,NULL,0,0,NULL),(128,9,80,8,NULL,NULL,1,NULL,0,0,NULL),(129,176,80,7,NULL,NULL,0,NULL,0,0,NULL),(130,191,176,2,NULL,NULL,0,NULL,0,0,NULL),(131,40,23,1,NULL,NULL,1,NULL,0,0,NULL),(132,85,23,1,NULL,NULL,1,NULL,0,0,NULL),(133,40,62,1,NULL,NULL,1,NULL,0,0,NULL),(134,85,62,1,NULL,NULL,1,NULL,0,0,NULL),(135,85,40,4,NULL,NULL,1,NULL,0,0,NULL),(136,62,179,8,NULL,NULL,1,NULL,0,0,NULL),(137,40,179,8,NULL,NULL,1,NULL,0,0,NULL),(138,85,179,8,NULL,NULL,1,NULL,0,0,NULL),(139,23,179,7,NULL,NULL,1,NULL,0,0,NULL),(140,62,23,2,NULL,NULL,1,NULL,0,0,NULL),(141,142,39,1,NULL,NULL,1,NULL,0,0,NULL),(142,130,39,1,NULL,NULL,1,NULL,0,0,NULL),(143,142,123,1,NULL,NULL,1,NULL,0,0,NULL),(144,130,123,1,NULL,NULL,1,NULL,0,0,NULL),(145,130,142,4,NULL,NULL,1,NULL,0,0,NULL),(146,123,14,8,NULL,NULL,1,NULL,0,0,NULL),(147,142,14,8,NULL,NULL,1,NULL,0,0,NULL),(148,130,14,8,NULL,NULL,1,NULL,0,0,NULL),(149,39,14,7,NULL,NULL,0,NULL,0,0,NULL),(150,123,39,2,NULL,NULL,0,NULL,0,0,NULL),(151,90,122,1,NULL,NULL,1,NULL,0,0,NULL),(152,127,122,1,NULL,NULL,1,NULL,0,0,NULL),(153,90,153,1,NULL,NULL,1,NULL,0,0,NULL),(154,127,153,1,NULL,NULL,1,NULL,0,0,NULL),(155,127,90,4,NULL,NULL,1,NULL,0,0,NULL),(156,153,81,8,NULL,NULL,1,NULL,0,0,NULL),(157,90,81,8,NULL,NULL,1,NULL,0,0,NULL),(158,127,81,8,NULL,NULL,1,NULL,0,0,NULL),(159,122,81,7,NULL,NULL,1,NULL,0,0,NULL),(160,153,122,2,NULL,NULL,1,NULL,0,0,NULL),(161,49,188,1,NULL,NULL,1,NULL,0,0,NULL),(162,99,188,1,NULL,NULL,1,NULL,0,0,NULL),(163,49,157,1,NULL,NULL,1,NULL,0,0,NULL),(164,99,157,1,NULL,NULL,1,NULL,0,0,NULL),(165,99,49,4,NULL,NULL,1,NULL,0,0,NULL),(166,157,8,8,NULL,NULL,1,NULL,0,0,NULL),(167,49,8,8,NULL,NULL,1,NULL,0,0,NULL),(168,99,8,8,NULL,NULL,1,NULL,0,0,NULL),(169,188,8,7,NULL,NULL,0,NULL,0,0,NULL),(170,157,188,2,NULL,NULL,0,NULL,0,0,NULL),(171,48,46,1,NULL,NULL,1,NULL,0,0,NULL),(172,134,46,1,NULL,NULL,1,NULL,0,0,NULL),(173,48,195,1,NULL,NULL,1,NULL,0,0,NULL),(174,134,195,1,NULL,NULL,1,NULL,0,0,NULL),(175,134,48,4,NULL,NULL,1,NULL,0,0,NULL),(176,195,67,8,NULL,NULL,1,NULL,0,0,NULL),(177,48,67,8,NULL,NULL,1,NULL,0,0,NULL),(178,134,67,8,NULL,NULL,1,NULL,0,0,NULL),(179,46,67,7,NULL,NULL,0,NULL,0,0,NULL),(180,195,46,2,NULL,NULL,0,NULL,0,0,NULL),(181,129,155,1,NULL,NULL,1,NULL,0,0,NULL),(182,193,155,1,NULL,NULL,1,NULL,0,0,NULL),(183,129,58,1,NULL,NULL,1,NULL,0,0,NULL),(184,193,58,1,NULL,NULL,1,NULL,0,0,NULL),(185,193,129,4,NULL,NULL,1,NULL,0,0,NULL),(186,58,50,8,NULL,NULL,1,NULL,0,0,NULL),(187,129,50,8,NULL,NULL,1,NULL,0,0,NULL),(188,193,50,8,NULL,NULL,1,NULL,0,0,NULL),(189,155,50,7,NULL,NULL,0,NULL,0,0,NULL),(190,58,155,2,NULL,NULL,0,NULL,0,0,NULL),(191,174,24,1,NULL,NULL,1,NULL,0,0,NULL),(192,25,24,1,NULL,NULL,1,NULL,0,0,NULL),(193,174,145,1,NULL,NULL,1,NULL,0,0,NULL),(194,25,145,1,NULL,NULL,1,NULL,0,0,NULL),(195,25,174,4,NULL,NULL,1,NULL,0,0,NULL),(196,145,20,8,NULL,NULL,1,NULL,0,0,NULL),(197,174,20,8,NULL,NULL,1,NULL,0,0,NULL),(198,25,20,8,NULL,NULL,1,NULL,0,0,NULL),(199,24,20,7,NULL,NULL,1,NULL,0,0,NULL),(200,145,24,2,NULL,NULL,1,NULL,0,0,NULL),(201,17,7,5,NULL,NULL,1,NULL,0,0,NULL),(202,143,12,5,NULL,NULL,1,NULL,0,0,NULL),(203,72,21,5,NULL,NULL,1,NULL,0,0,NULL),(204,190,32,5,NULL,NULL,1,NULL,0,0,NULL),(205,140,34,5,NULL,NULL,1,NULL,0,0,NULL),(206,15,44,5,NULL,NULL,1,NULL,0,0,NULL),(207,133,54,5,NULL,NULL,1,NULL,0,0,NULL),(208,22,65,5,NULL,NULL,1,NULL,0,0,NULL),(209,93,71,5,NULL,NULL,1,NULL,0,0,NULL),(210,89,78,5,NULL,NULL,1,NULL,0,0,NULL),(211,138,86,5,NULL,NULL,1,NULL,0,0,NULL),(212,61,114,5,NULL,NULL,1,NULL,0,0,NULL),(213,160,115,5,NULL,NULL,1,NULL,0,0,NULL),(214,87,147,5,NULL,NULL,1,NULL,0,0,NULL),(215,106,166,5,NULL,NULL,1,NULL,0,0,NULL),(216,73,170,5,NULL,NULL,1,NULL,0,0,NULL),(217,187,172,5,NULL,NULL,1,NULL,0,0,NULL),(218,145,178,5,NULL,NULL,1,NULL,0,0,NULL),(219,135,199,5,NULL,NULL,1,NULL,0,0,NULL); /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */; UNLOCK TABLES; @@ -1345,7 +1345,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_subscription_history` WRITE; /*!40000 ALTER TABLE `civicrm_subscription_history` DISABLE KEYS */; -INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES (1,146,2,'2017-06-15 15:09:09','Email','Added',NULL),(2,96,2,'2017-11-19 17:33:53','Admin','Added',NULL),(3,67,2,'2017-10-08 00:39:45','Email','Added',NULL),(4,57,2,'2018-04-15 18:37:04','Email','Added',NULL),(5,148,2,'2017-10-26 07:42:11','Admin','Added',NULL),(6,108,2,'2017-10-08 18:05:12','Admin','Added',NULL),(7,38,2,'2017-10-07 11:44:17','Email','Added',NULL),(8,161,2,'2018-05-19 05:13:19','Admin','Added',NULL),(9,155,2,'2017-08-05 00:22:30','Email','Added',NULL),(10,154,2,'2018-01-24 20:43:39','Email','Added',NULL),(11,23,2,'2017-06-24 17:14:11','Email','Added',NULL),(12,92,2,'2017-11-22 07:48:00','Admin','Added',NULL),(13,52,2,'2017-10-26 20:07:12','Email','Added',NULL),(14,107,2,'2018-02-07 08:43:32','Email','Added',NULL),(15,94,2,'2017-07-30 22:35:10','Email','Added',NULL),(16,3,2,'2017-12-15 10:24:11','Email','Added',NULL),(17,125,2,'2017-05-31 08:39:41','Email','Added',NULL),(18,115,2,'2017-06-10 00:20:03','Admin','Added',NULL),(19,173,2,'2017-08-07 04:59:08','Email','Added',NULL),(20,80,2,'2017-08-08 12:41:41','Email','Added',NULL),(21,109,2,'2017-11-24 23:32:03','Admin','Added',NULL),(22,69,2,'2017-05-26 18:33:48','Admin','Added',NULL),(23,194,2,'2018-05-15 00:24:34','Admin','Added',NULL),(24,181,2,'2017-11-08 14:15:54','Email','Added',NULL),(25,60,2,'2017-07-25 21:32:21','Admin','Added',NULL),(26,133,2,'2017-07-28 05:14:03','Admin','Added',NULL),(27,127,2,'2018-02-26 12:08:47','Admin','Added',NULL),(28,190,2,'2017-11-07 18:36:34','Email','Added',NULL),(29,191,2,'2017-10-12 15:53:45','Email','Added',NULL),(30,121,2,'2017-10-29 18:46:01','Admin','Added',NULL),(31,62,2,'2017-09-15 08:42:37','Email','Added',NULL),(32,160,2,'2018-01-08 05:07:48','Email','Added',NULL),(33,113,2,'2017-08-18 08:34:58','Admin','Added',NULL),(34,13,2,'2017-07-07 18:57:55','Email','Added',NULL),(35,95,2,'2017-12-10 16:34:50','Email','Added',NULL),(36,71,2,'2018-04-01 07:09:00','Admin','Added',NULL),(37,110,2,'2017-10-13 05:15:46','Admin','Added',NULL),(38,43,2,'2017-10-25 10:56:14','Email','Added',NULL),(39,54,2,'2017-07-13 20:47:40','Admin','Added',NULL),(40,17,2,'2017-06-23 22:17:51','Admin','Added',NULL),(41,152,2,'2017-09-20 19:49:02','Email','Added',NULL),(42,149,2,'2018-05-02 17:01:58','Admin','Added',NULL),(43,188,2,'2018-03-14 13:21:05','Admin','Added',NULL),(44,36,2,'2018-01-16 01:14:58','Email','Added',NULL),(45,187,2,'2017-12-02 18:44:39','Email','Added',NULL),(46,167,2,'2017-11-21 02:17:48','Email','Added',NULL),(47,136,2,'2018-04-24 09:28:41','Admin','Added',NULL),(48,150,2,'2017-07-08 07:00:25','Admin','Added',NULL),(49,9,2,'2017-07-29 07:56:20','Email','Added',NULL),(50,63,2,'2017-06-08 06:26:42','Email','Added',NULL),(51,111,2,'2017-07-23 16:25:08','Admin','Added',NULL),(52,131,2,'2018-02-28 08:24:50','Email','Added',NULL),(53,193,2,'2017-07-11 23:56:02','Admin','Added',NULL),(54,5,2,'2018-01-30 15:18:25','Email','Added',NULL),(55,31,2,'2017-12-05 08:34:47','Email','Added',NULL),(56,46,2,'2017-11-12 06:14:57','Email','Added',NULL),(57,14,2,'2018-03-31 07:53:27','Admin','Added',NULL),(58,117,2,'2018-03-08 13:13:25','Admin','Added',NULL),(59,2,2,'2018-01-15 10:49:20','Admin','Added',NULL),(60,66,2,'2018-01-12 06:02:17','Admin','Added',NULL),(61,59,3,'2018-03-27 01:29:00','Admin','Added',NULL),(62,28,3,'2017-10-13 03:56:12','Email','Added',NULL),(63,129,3,'2018-01-23 06:50:02','Email','Added',NULL),(64,171,3,'2018-01-12 14:27:15','Email','Added',NULL),(65,186,3,'2018-04-01 02:09:07','Email','Added',NULL),(66,91,3,'2017-10-14 04:04:17','Email','Added',NULL),(67,128,3,'2017-11-07 03:01:43','Admin','Added',NULL),(68,126,3,'2017-09-18 04:59:49','Admin','Added',NULL),(69,143,3,'2017-11-27 23:14:27','Email','Added',NULL),(70,98,3,'2017-10-01 13:12:55','Email','Added',NULL),(71,53,3,'2017-10-02 21:52:51','Admin','Added',NULL),(72,170,3,'2017-08-28 23:49:41','Admin','Added',NULL),(73,200,3,'2018-04-18 19:02:55','Admin','Added',NULL),(74,93,3,'2018-04-01 06:17:58','Email','Added',NULL),(75,18,3,'2018-04-14 15:58:18','Email','Added',NULL),(76,146,4,'2018-01-08 07:43:43','Email','Added',NULL),(77,161,4,'2017-10-28 09:44:43','Admin','Added',NULL),(78,94,4,'2017-07-15 13:20:47','Admin','Added',NULL),(79,69,4,'2017-10-23 23:41:19','Email','Added',NULL),(80,191,4,'2017-06-15 00:42:13','Admin','Added',NULL),(81,71,4,'2017-09-22 01:16:30','Admin','Added',NULL),(82,188,4,'2017-07-18 21:59:41','Email','Added',NULL),(83,63,4,'2018-02-06 11:35:33','Email','Added',NULL); +INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES (1,124,2,'2018-08-13 04:12:38','Admin','Added',NULL),(2,158,2,'2017-11-01 00:00:35','Email','Added',NULL),(3,22,2,'2017-10-13 06:55:14','Email','Added',NULL),(4,13,2,'2018-03-06 10:42:53','Email','Added',NULL),(5,169,2,'2017-08-26 14:09:32','Email','Added',NULL),(6,77,2,'2017-09-24 22:52:15','Admin','Added',NULL),(7,160,2,'2018-06-29 07:17:32','Admin','Added',NULL),(8,186,2,'2018-01-18 15:19:27','Email','Added',NULL),(9,156,2,'2018-01-08 21:23:04','Email','Added',NULL),(10,102,2,'2017-10-20 18:23:33','Admin','Added',NULL),(11,66,2,'2018-08-01 12:12:23','Admin','Added',NULL),(12,92,2,'2017-09-06 02:15:42','Admin','Added',NULL),(13,151,2,'2017-09-01 13:41:02','Email','Added',NULL),(14,103,2,'2018-01-25 05:06:54','Admin','Added',NULL),(15,139,2,'2017-10-30 00:23:35','Email','Added',NULL),(16,97,2,'2018-05-30 09:43:41','Admin','Added',NULL),(17,84,2,'2017-08-31 14:01:22','Email','Added',NULL),(18,164,2,'2018-05-16 06:02:42','Email','Added',NULL),(19,51,2,'2018-05-12 12:54:40','Email','Added',NULL),(20,128,2,'2018-01-21 03:09:20','Email','Added',NULL),(21,70,2,'2017-09-30 06:50:34','Email','Added',NULL),(22,69,2,'2018-05-22 22:35:18','Admin','Added',NULL),(23,15,2,'2018-07-03 00:47:25','Admin','Added',NULL),(24,98,2,'2018-07-13 05:33:57','Admin','Added',NULL),(25,182,2,'2017-12-29 23:22:22','Email','Added',NULL),(26,161,2,'2018-07-02 13:26:09','Admin','Added',NULL),(27,83,2,'2018-07-17 18:45:08','Email','Added',NULL),(28,110,2,'2017-12-09 06:42:21','Email','Added',NULL),(29,38,2,'2018-03-04 19:58:44','Email','Added',NULL),(30,121,2,'2018-06-15 00:17:27','Email','Added',NULL),(31,131,2,'2018-04-22 04:11:54','Admin','Added',NULL),(32,87,2,'2017-12-04 09:04:05','Admin','Added',NULL),(33,42,2,'2017-12-14 22:59:53','Admin','Added',NULL),(34,75,2,'2017-12-27 20:37:44','Admin','Added',NULL),(35,74,2,'2018-01-11 15:56:04','Email','Added',NULL),(36,55,2,'2017-09-26 00:43:36','Admin','Added',NULL),(37,190,2,'2018-08-03 01:35:28','Admin','Added',NULL),(38,165,2,'2017-09-28 18:47:20','Admin','Added',NULL),(39,31,2,'2018-02-08 12:42:57','Email','Added',NULL),(40,104,2,'2018-06-11 00:24:08','Admin','Added',NULL),(41,196,2,'2017-10-18 07:26:20','Admin','Added',NULL),(42,76,2,'2018-07-08 22:59:38','Admin','Added',NULL),(43,63,2,'2018-06-26 22:51:16','Admin','Added',NULL),(44,148,2,'2018-07-23 18:45:41','Email','Added',NULL),(45,94,2,'2018-06-01 10:43:14','Email','Added',NULL),(46,6,2,'2017-10-27 02:39:47','Admin','Added',NULL),(47,141,2,'2018-04-24 01:42:02','Admin','Added',NULL),(48,149,2,'2017-09-18 09:46:07','Email','Added',NULL),(49,108,2,'2018-03-10 05:26:25','Admin','Added',NULL),(50,181,2,'2018-07-28 00:08:08','Email','Added',NULL),(51,183,2,'2018-04-29 17:04:53','Admin','Added',NULL),(52,43,2,'2018-04-05 01:55:28','Email','Added',NULL),(53,113,2,'2018-07-02 17:33:52','Email','Added',NULL),(54,180,2,'2018-03-23 01:52:19','Email','Added',NULL),(55,4,2,'2017-09-21 22:27:11','Email','Added',NULL),(56,41,2,'2017-11-17 07:35:10','Admin','Added',NULL),(57,152,2,'2017-12-11 18:13:12','Email','Added',NULL),(58,111,2,'2018-05-17 18:46:49','Email','Added',NULL),(59,198,2,'2018-01-24 06:48:34','Email','Added',NULL),(60,184,2,'2018-06-17 17:11:12','Email','Added',NULL),(61,117,3,'2018-03-27 04:10:51','Email','Added',NULL),(62,72,3,'2018-03-07 00:34:07','Email','Added',NULL),(63,112,3,'2018-05-23 15:09:22','Email','Added',NULL),(64,59,3,'2018-06-29 16:01:27','Admin','Added',NULL),(65,101,3,'2017-12-27 20:08:12','Email','Added',NULL),(66,167,3,'2017-11-19 14:35:22','Admin','Added',NULL),(67,197,3,'2017-10-13 14:22:41','Admin','Added',NULL),(68,171,3,'2018-03-08 15:58:12','Admin','Added',NULL),(69,16,3,'2017-10-23 04:22:12','Admin','Added',NULL),(70,154,3,'2018-03-05 04:13:00','Email','Added',NULL),(71,189,3,'2018-06-01 22:12:16','Admin','Added',NULL),(72,37,3,'2018-08-01 18:43:04','Admin','Added',NULL),(73,126,3,'2018-04-08 17:42:40','Email','Added',NULL),(74,96,3,'2018-04-29 12:50:59','Email','Added',NULL),(75,26,3,'2017-12-25 15:28:37','Email','Added',NULL),(76,124,4,'2018-06-08 21:44:14','Email','Added',NULL),(77,186,4,'2017-11-07 18:28:43','Email','Added',NULL),(78,139,4,'2017-09-04 08:53:06','Admin','Added',NULL),(79,69,4,'2018-01-21 11:42:21','Email','Added',NULL),(80,38,4,'2017-08-28 08:35:30','Admin','Added',NULL),(81,55,4,'2017-11-06 07:06:03','Admin','Added',NULL),(82,63,4,'2017-09-07 02:12:28','Email','Added',NULL),(83,181,4,'2018-05-28 08:45:44','Admin','Added',NULL); /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */; UNLOCK TABLES; @@ -1412,7 +1412,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_uf_group` WRITE; /*!40000 ALTER TABLE `civicrm_uf_group` DISABLE KEYS */; -INSERT INTO `civicrm_uf_group` (`id`, `is_active`, `group_type`, `title`, `frontend_title`, `description`, `help_pre`, `help_post`, `limit_listings_group_id`, `post_URL`, `add_to_group_id`, `add_captcha`, `is_map`, `is_edit_link`, `is_uf_link`, `is_update_dupe`, `cancel_URL`, `is_cms_user`, `notify`, `is_reserved`, `name`, `created_id`, `created_date`, `is_proximity_search`, `cancel_button_text`, `submit_button_text`) VALUES (1,1,'Individual,Contact','Name and Address',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,0,'name_and_address',NULL,NULL,0,NULL,NULL),(2,1,'Individual,Contact','Supporter Profile',NULL,NULL,NULL,'<p><strong>The information you provide will NOT be shared with any third party organisations.</strong></p><p>Thank you for getting involved in our campaign!</p>',NULL,NULL,NULL,0,0,0,0,0,NULL,2,NULL,0,'supporter_profile',NULL,NULL,0,NULL,NULL),(3,1,'Participant','Participant Status',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'participant_status',NULL,NULL,0,NULL,NULL),(4,1,'Individual,Contact','New Individual',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'new_individual',NULL,NULL,0,NULL,NULL),(5,1,'Organization,Contact','New Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'new_organization',NULL,NULL,0,NULL,NULL),(6,1,'Household,Contact','New Household',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'new_household',NULL,NULL,0,NULL,NULL),(7,1,'Contact','Summary Overlay',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'summary_overlay',NULL,NULL,0,NULL,NULL),(8,1,'Contact','Shared Address',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'shared_address',NULL,NULL,0,NULL,NULL),(9,1,'Contact,Organization','On Behalf Of Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'on_behalf_organization',NULL,NULL,0,NULL,NULL),(10,1,'Contribution','Contribution Bulk Entry',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'contribution_batch_entry',NULL,NULL,0,NULL,NULL),(11,1,'Membership','Membership Bulk Entry',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'membership_batch_entry',NULL,NULL,0,NULL,NULL),(12,1,'Individual,Contact','Your Registration Info',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,0,'event_registration',NULL,NULL,0,NULL,NULL),(13,1,'Individual,Contact','Honoree Individual',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'honoree_individual',NULL,NULL,0,NULL,NULL); +INSERT INTO `civicrm_uf_group` (`id`, `is_active`, `group_type`, `title`, `frontend_title`, `description`, `help_pre`, `help_post`, `limit_listings_group_id`, `post_URL`, `add_to_group_id`, `add_captcha`, `is_map`, `is_edit_link`, `is_uf_link`, `is_update_dupe`, `cancel_URL`, `is_cms_user`, `notify`, `is_reserved`, `name`, `created_id`, `created_date`, `is_proximity_search`, `cancel_button_text`, `submit_button_text`, `add_cancel_button`) VALUES (1,1,'Individual,Contact','Name and Address',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,0,'name_and_address',NULL,NULL,0,NULL,NULL,1),(2,1,'Individual,Contact','Supporter Profile',NULL,NULL,NULL,'<p><strong>The information you provide will NOT be shared with any third party organisations.</strong></p><p>Thank you for getting involved in our campaign!</p>',NULL,NULL,NULL,0,0,0,0,0,NULL,2,NULL,0,'supporter_profile',NULL,NULL,0,NULL,NULL,1),(3,1,'Participant','Participant Status',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'participant_status',NULL,NULL,0,NULL,NULL,1),(4,1,'Individual,Contact','New Individual',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'new_individual',NULL,NULL,0,NULL,NULL,1),(5,1,'Organization,Contact','New Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'new_organization',NULL,NULL,0,NULL,NULL,1),(6,1,'Household,Contact','New Household',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'new_household',NULL,NULL,0,NULL,NULL,1),(7,1,'Contact','Summary Overlay',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'summary_overlay',NULL,NULL,0,NULL,NULL,1),(8,1,'Contact','Shared Address',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'shared_address',NULL,NULL,0,NULL,NULL,1),(9,1,'Contact,Organization','On Behalf Of Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'on_behalf_organization',NULL,NULL,0,NULL,NULL,1),(10,1,'Contribution','Contribution Bulk Entry',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'contribution_batch_entry',NULL,NULL,0,NULL,NULL,1),(11,1,'Membership','Membership Bulk Entry',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'membership_batch_entry',NULL,NULL,0,NULL,NULL,1),(12,1,'Individual,Contact','Your Registration Info',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,0,'event_registration',NULL,NULL,0,NULL,NULL,1),(13,1,'Individual,Contact','Honoree Individual',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'honoree_individual',NULL,NULL,0,NULL,NULL,1); /*!40000 ALTER TABLE `civicrm_uf_group` ENABLE KEYS */; UNLOCK TABLES; @@ -1441,7 +1441,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_website` WRITE; /*!40000 ALTER TABLE `civicrm_website` DISABLE KEYS */; -INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES (1,162,'http://unitedalliance.org',1),(2,88,'http://indianadevelopmentalliance.org',1),(3,151,'http://bathactioncollective.org',1),(4,169,'http://mckenneysoftware.org',1),(5,10,'http://nebraskasolutions.org',1),(6,100,'http://leburndevelopment.org',1),(7,84,'http://creativemusicnetwork.org',1),(8,195,'http://iolafamilyfellowship.org',1),(9,101,'http://lincolnagriculturesolutions.org',1),(10,178,'http://wisconsinactionfund.org',1),(11,34,'http://ruralliteracy.org',1),(12,16,'http://arkansasfellowship.org',1),(13,103,'http://creativefamilyalliance.org',1),(14,99,'http://wfdevelopmentcollective.org',1); +INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES (1,178,'http://californianetwork.org',1),(2,34,'http://globalpartners.org',1),(3,170,'http://westonadvocacy.org',1),(4,172,'http://maplesoftware.org',1),(5,44,'http://mainepartners.org',1),(6,199,'http://grantsactionacademy.org',1),(7,21,'http://wisconsinalliance.org',1),(8,7,'http://arkansasfellowship.org',1),(9,54,'http://csactioncenter.org',1),(10,12,'http://nysportssolutions.org',1),(11,32,'http://maplecenter.org',1),(12,71,'http://wolfeborolegalalliance.org',1),(13,147,'http://unitedmusicsolutions.org',1),(14,114,'http://unitednetwork.org',1),(15,78,'http://maincenter.org',1),(16,166,'http://pinedevelopment.org',1); /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */; UNLOCK TABLES; @@ -1473,7 +1473,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2018-05-22 1:57:24 +-- Dump completed on 2018-08-23 8:01:48 -- +--------------------------------------------------------------------+ -- | CiviCRM version 5 | -- +--------------------------------------------------------------------+ @@ -1519,7 +1519,7 @@ INSERT INTO `civicrm_custom_group` (`name`, `title`, `extends`, `style`, `collap -- * create option group for storing custom options for custom fields -- * -- *******************************************************/ -INSERT INTO `civicrm_option_group` (`name`, `title`, `is_reserved`, `is_active`) VALUES ('custom_most_important_issue', 'Most Important Issue', 1, 1), ( 'custom_marital_status', 'Marital Status', 1, 1); +INSERT INTO `civicrm_option_group` (`name`, `title`, `is_reserved`, `is_active`) VALUES ('custom_most_important_issue', 'Most Important Issue', 0, 1), ( 'custom_marital_status', 'Marital Status', 1, 1); SELECT @option_most_id := max(id) from civicrm_option_group where name = 'custom_most_important_issue'; SELECT @option_marital_id := max(id) from civicrm_option_group where name = 'custom_marital_status'; @@ -1554,7 +1554,7 @@ CREATE TABLE `civicrm_value_constituent_information_1` (`id` int(10) unsigned NO -- Fall Fundraiser Dinner participants’ custom data -INSERT INTO civicrm_option_group ( name, title, is_active, is_reserved ) VALUES ('soup_selection', 'Soup Selection', 1, 1); +INSERT INTO `civicrm_option_group` (`name`, `title`, `is_reserved`, `is_active`) VALUES ('soup_selection', 'Soup Selection', 0, 1); SELECT @ogid := MAX(id) FROM civicrm_option_group; INSERT INTO civicrm_custom_group ( name, title, extends, extends_entity_column_id, extends_entity_column_value, style, is_active, table_name) VALUES ('Food_Preference', 'Food Preference', 'Participant', 2, '1', 'Inline', 1, 'civicrm_value_food_preference_2'); @@ -1573,7 +1573,7 @@ INSERT INTO `civicrm_custom_group` (`name`, `title`, `extends`, `extends_entity_ SELECT @cgid_contribution := MAX(id) FROM civicrm_custom_group; -INSERT INTO civicrm_option_group ( name, title, is_active ) VALUES ('how_long_have_you_been_a_donor', 'How long have you been a donor?', 1); +INSERT INTO `civicrm_option_group` (`name`, `title`, `is_reserved`, `is_active`) VALUES ('how_long_have_you_been_a_donor', 'How long have you been a donor?', 0, 1); SELECT @ogid_contribution := MAX(id) FROM civicrm_option_group; diff --git a/civicrm/sql/civicrm_navigation.mysql b/civicrm/sql/civicrm_navigation.mysql index 5ee6beb1890dd51666645222587dfa3394161391..c20457dff6173625e495e1d6e7c06f09eea28200 100644 --- a/civicrm/sql/civicrm_navigation.mysql +++ b/civicrm/sql/civicrm_navigation.mysql @@ -322,7 +322,7 @@ VALUES INSERT INTO civicrm_navigation ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) VALUES - ( @domainID, NULL, 'Dropdown Options', 'Dropdown Options', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 8 ); + ( @domainID, 'civicrm/admin/options?action=browse&reset=1', 'Dropdown Options', 'Dropdown Options', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 8 ); SET @optionListlastID:=LAST_INSERT_ID(); INSERT INTO civicrm_navigation diff --git a/civicrm/templates/CRM/Activity/Form/Activity.tpl b/civicrm/templates/CRM/Activity/Form/Activity.tpl index eac293ef8a1d0187237c65b7d362376f83b444f4..689bdf5db2cae7f3b86dca45fc50bcccd216a6a7 100644 --- a/civicrm/templates/CRM/Activity/Form/Activity.tpl +++ b/civicrm/templates/CRM/Activity/Form/Activity.tpl @@ -247,7 +247,7 @@ {/if} {* End Delete vs. Add / Edit action *} </table> <div class="crm-submit-buttons"> - {if $action eq 4 && $activityTName neq 'Inbound Email'} + {if $action eq 4 && ($activityTName neq 'Inbound Email' || $allow_edit_inbound_emails == 1)} {if !$context } {assign var="context" value='activity'} {/if} diff --git a/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl b/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl index a5f60ea67d9f0f71e805680828dddb5e81eddb55..0712447471b2523c7ed471f33e417457918d73d4 100644 --- a/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl +++ b/civicrm/templates/CRM/Admin/Form/OptionGroup.tpl @@ -52,6 +52,10 @@ <td class="label">{$form.is_active.label}</td> <td>{$form.is_active.html}</td> </tr> + <tr class="crm-admin-optiongroup-form-block-is_reserved"> + <td class="label">{$form.is_reserved.label}</td> + <td>{$form.is_reserved.html}</td> + </tr> </table> {/if} <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl index b94f6602412fdd5fb977c8ef69055cddac5e9951..db1c09c46236ac74bc61b970d10f9e83f89aaf11 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/Miscellaneous.tpl @@ -117,6 +117,13 @@ </span> </td> </tr> + <tr class="crm-miscellaneous-form-block-recaptchaPrivateKey"> + <td class="label">{$form.forceRecaptcha.label}</td> + <td> + {$form.forceRecaptcha.html} + <p class="description">{ts}If enabled, reCAPTCHA will show on all contribution pages.{/ts}</p> + </td> + </tr> </table> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> </div> diff --git a/civicrm/templates/CRM/Admin/Page/OptionGroup.tpl b/civicrm/templates/CRM/Admin/Page/OptionGroup.tpl index e8c60e31d833edb9972bbee03a8686e5592b04a4..9b57c75c2483cbc2a1d3c0a92973af890855daec 100644 --- a/civicrm/templates/CRM/Admin/Page/OptionGroup.tpl +++ b/civicrm/templates/CRM/Admin/Page/OptionGroup.tpl @@ -60,7 +60,10 @@ <td class="crm-admin-optionGroup-name">{$row.name}</td> <td class="crm-admin-optionGroup-is_reserved">{if $row.is_reserved eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td> <td class="crm-admin-optionGroup-is_active" id="row_{$row.id}_status">{if $row.is_active eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td> - <td><a href="{crmURL p="civicrm/admin/options" q="gid=`$row.id`&reset=1"}" title="{ts}View and Edit Options{/ts}">{ts}Options{/ts}</a></td> + <td> + <a href="{crmURL p="civicrm/admin/options" q="id=`$row.id`&action=update&reset=1"}" class="action-item crm-hover-button" title="{ts}OptionGroup settings{/ts}">{ts}Settings{/ts}</a> + <a href="{crmURL p="civicrm/admin/options" q="gid=`$row.id`&reset=1"}" class="action-item crm-hover-button" title="{ts}View and Edit Options{/ts}">{ts}Edit Options{/ts}</a> + </td> </tr> {/foreach} </table> diff --git a/civicrm/templates/CRM/Admin/Page/Options.tpl b/civicrm/templates/CRM/Admin/Page/Options.tpl index 8a5936b6312beb782fbed3f5f507a37921d56eae..bea754d8f42f5ad3bb5b00ca6d0ee33533bfaa75 100644 --- a/civicrm/templates/CRM/Admin/Page/Options.tpl +++ b/civicrm/templates/CRM/Admin/Page/Options.tpl @@ -175,7 +175,7 @@ {if $isLocked ne 1} {crmButton p="civicrm/admin/options/$gName" q='action=add&reset=1' class="new-option" icon="plus-circle"}{ts 1=$gLabel}Add %1{/ts}{/crmButton} {/if} - {crmButton p="civicrm/admin" q="reset=1" class="cancel" icon="times"}{ts}Done{/ts}{/crmButton} + {crmButton p="civicrm/admin/options" q="action=browse&reset=1" class="next no-popup" icon="check"}{ts}Done{/ts}{/crmButton} </div> </div> {/if} diff --git a/civicrm/templates/CRM/Contact/Form/Relationship.tpl b/civicrm/templates/CRM/Contact/Form/Relationship.tpl index d921c211a760473832101d47f5fef87b8dff007b..ad0efe0c0a8f8c6b72477019f213e11a8e47a577 100644 --- a/civicrm/templates/CRM/Contact/Form/Relationship.tpl +++ b/civicrm/templates/CRM/Contact/Form/Relationship.tpl @@ -57,18 +57,18 @@ {if $row.is_permission_a_b} <div> {if $row.rtype EQ 'a_b' AND $is_contact_id_a} - {ts 1=$displayName 2=$row.display_name}<strong>%1</strong> can view and update information about %2.{/ts} + {include file="CRM/Contact/Page/View/RelationshipPerm.tpl" permType=$row.is_permission_a_b permDisplayName=$displayName otherDisplayName=$row.display_name displayText=true} {else} - {ts 1=$row.display_name 2=$displayName}<strong>%1</strong> can view and update information about %2.{/ts} + {include file="CRM/Contact/Page/View/RelationshipPerm.tpl" permType=$row.is_permission_a_b otherDisplayName=$displayName permDisplayName=$row.display_name displayText=true} {/if} </div> {/if} {if $row.is_permission_b_a} <div> {if $row.rtype EQ 'a_b' AND $is_contact_id_a} - {ts 1=$row.display_name 2=$displayName}<strong>%1</strong> can view and update information about %2.{/ts} + {include file="CRM/Contact/Page/View/RelationshipPerm.tpl" permType=$row.is_permission_b_a otherDisplayName=$displayName permDisplayName=$row.display_name displayText=true} {else} - {ts 1=$displayName 2=$row.display_name}<strong>%1</strong> can view and update information about %2.{/ts} + {include file="CRM/Contact/Page/View/RelationshipPerm.tpl" permType=$row.is_permission_b_a permDisplayName=$displayName otherDisplayName=$row.display_name displayText=true} {/if} </div> {/if} @@ -116,15 +116,15 @@ {capture assign="contact_b"}{if $action eq 1}{ts}selected contact(s){/ts}{else}{$display_name_b}{/if}{/capture} <td class="label"><label>{ts}Permissions{/ts}</label></td> <td> + {ts 1=$display_name_a 2=$contact_b}Permission for <strong>%1</strong> to access information about <strong>%2</strong>{/ts}<br /> {$form.is_permission_a_b.html} - {ts 1=$display_name_a 2=$contact_b}<strong>%1</strong> can view and update information about %2.{/ts} </td> </tr> <tr class="crm-relationship-form-block-is_permission_b_a"> <td class="label"></td> <td> + {ts 1=$contact_b|ucfirst 2=$display_name_a}Permission for <strong>%1</strong> to access information about <strong>%2</strong>{/ts}<br /> {$form.is_permission_b_a.html} - {ts 1=$contact_b|ucfirst 2=$display_name_a}<strong>%1</strong> can view and update information about %2.{/ts} </td> </tr> <tr class="crm-relationship-form-block-is_active"> diff --git a/civicrm/templates/CRM/Contact/Form/Search/Builder.js b/civicrm/templates/CRM/Contact/Form/Search/Builder.js index 904e7766c830486ade31d116867dd07d6ee5fe4a..4eb35d765c86654f66b25f3d1dfa2dcbd7b3b070 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/Builder.js +++ b/civicrm/templates/CRM/Contact/Form/Search/Builder.js @@ -219,8 +219,9 @@ * @param mapper: string * @param value: integer * @param location_type: integer + * @param section: section in which the country/state selection change occurred */ - function chainSelect(mapper, value, location_type) { + function chainSelect(mapper, value, location_type, section) { var apiParams = { sequential: 1, field: (mapper == 'country_id') ? 'state_province' : 'county', @@ -229,14 +230,16 @@ var fieldName = apiParams.field; CRM.api3('address', 'getoptions', apiParams, { success: function(result) { - CRM.searchBuilder.fieldOptions[fieldName] = result.count ? result.values : []; - $('select[id^=mapper][id$="_1"]').each(function() { - var row = $(this).closest('tr'); - var op = $('select[id^=operator]', row).val(); - if ($(this).val() === fieldName && location_type === $('select[id^=mapper][id$="_2"]', row).val()) { - buildSelect(row, fieldName, op, true); - } - }); + if (result.count) { + CRM.searchBuilder.fieldOptions[fieldName] = result.values; + $('select[id^=mapper_' + section + '][id$="_1"]').each(function() { + var row = $(this).closest('tr'); + var op = $('select[id^=operator]', row).val(); + if ($(this).val() === fieldName && location_type === $('select[id^=mapper][id$="_2"]', row).val()) { + buildSelect(row, fieldName, op, true); + } + }); + } } }); } @@ -312,8 +315,9 @@ if (value !== '') { var mapper = $('#' + $(this).siblings('input').attr('id').replace('value_', 'mapper_') + '_1').val(); var location_type = $('#' + $(this).siblings('input').attr('id').replace('value_', 'mapper_') + '_2').val(); + var section = $(this).siblings('input').attr('id').replace('value_', '').split('_')[0]; if ($.inArray(mapper, ['state_province', 'country']) > -1) { - chainSelect(mapper + '_id', value, location_type); + chainSelect(mapper + '_id', value, location_type, section); } } }) diff --git a/civicrm/templates/CRM/Contact/Page/Inline/Basic.tpl b/civicrm/templates/CRM/Contact/Page/Inline/Basic.tpl new file mode 100644 index 0000000000000000000000000000000000000000..f6123d37c5a14f76feb2fe43f0ca6038eb2a8546 --- /dev/null +++ b/civicrm/templates/CRM/Contact/Page/Inline/Basic.tpl @@ -0,0 +1,41 @@ +{*<div class="crm-clear crm-inline-block-content">*} + <div class="crm-summary-row"> + <div class="crm-label" id="tagLink"> + <a href="{crmURL p='civicrm/contact/view' q="reset=1&cid=$contactId&selectedChild=tag"}" + title="{ts}Edit Tags{/ts}">{ts}Tags{/ts}</a> + </div> + <div class="crm-content" id="tags"> + {foreach from=$contactTag item=tagName key=tagId} + <span class="crm-tag-item" {if !empty($allTags.$tagId.color)}style="background-color: {$allTags.$tagId.color}; color: {$allTags.$tagId.color|colorContrast};"{/if} title="{$allTags.$tagId.description|escape}"> + {$tagName} + </span> + {/foreach} + </div> + </div> + <div class="crm-summary-row"> + <div class="crm-label">{ts}Contact Type{/ts}</div> + <div class="crm-content crm-contact_type_label"> + {if isset($contact_type_label)}{$contact_type_label}{/if} + </div> + </div> + <div class="crm-summary-row"> + <div class="crm-label"> + {ts}Contact ID{/ts}{if !empty($userRecordUrl)} / {ts}User ID{/ts}{/if} + </div> + <div class="crm-content"> + <span class="crm-contact-contact_id">{$contactId}</span> + {if !empty($userRecordUrl)} + <span class="crm-contact-user_record_id"> + / <a title="View user record" class="user-record-link" + href="{$userRecordUrl}">{$userRecordId}</a> + </span> + {/if} + </div> + </div> + <div class="crm-summary-row"> + <div class="crm-label">{ts}External ID{/ts}</div> + <div class="crm-content crm-contact_external_identifier_label"> + {if isset($external_identifier)}{$external_identifier}{/if} + </div> + </div> +{*</div>*} diff --git a/civicrm/templates/CRM/Contact/Page/View/Relationship.tpl b/civicrm/templates/CRM/Contact/Page/View/Relationship.tpl index fa315a6360942d358c812ff59d96cfa0a97dce3b..46e1735e236430a48fb3b45100609feb59aab530 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Relationship.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Relationship.tpl @@ -38,8 +38,8 @@ <h3>{ts}Current Relationships{/ts}</h3> {include file="CRM/Contact/Page/View/RelationshipSelector.tpl" context="current"} <div id="permission-legend" class="crm-content-block"> - <span class="crm-marker">* </span> - {ts}Indicates a permissioned relationship. This contact can be viewed and updated by the other.{/ts} + <span class="label">Permissioned Relationships: </span> + {include file="CRM/Contact/Page/View/RelationshipPerm.tpl" permType=1 afterText=true} </div> <div class="spacer"></div> diff --git a/civicrm/templates/CRM/Contact/Page/View/RelationshipPerm.tpl b/civicrm/templates/CRM/Contact/Page/View/RelationshipPerm.tpl new file mode 100644 index 0000000000000000000000000000000000000000..a6d6799e376dff36ede7106ad5d7fd4b664ef5c6 --- /dev/null +++ b/civicrm/templates/CRM/Contact/Page/View/RelationshipPerm.tpl @@ -0,0 +1,63 @@ +{* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2018 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ +*} +{* Partial for displaying permissions associated with a relationship *} + +{if $permType eq 1} +{include file="CRM/Contact/Page/View/RelationshipPerm.tpl" permType=2 displayText=false} +{/if} + +{if $permDisplayName and $otherDisplayName} +{capture assign="permText"} +{if $permType eq 1} +{ts 1=$permDisplayName 2=$otherDisplayName}%2 can be edited by %1.{/ts} +{else} +{ts 1=$permDisplayName 2=$otherDisplayName}%2 can be viewed by %1.{/ts} +{/if} +{/capture} +{/if} + +<span class="fa-stack" title="{$permText}"> + <i class="crm-i fa-square fa-stack-2x {if $permType eq 1}crm-i-blue{else}crm-i-green{/if}"></i> + <i class="crm-i {if $permType eq 1}fa-pencil{else}fa-eye{/if} fa-inverse fa-stack-1x"></i> +</span> + +{* Used for viewing a relationship *} +{if $displayText} +{if $permType eq 1} +{ts 1=$permDisplayName 2=$otherDisplayName}<strong>%1</strong> can view and update information about <strong>%2</strong>.{/ts} +{else} +{ts 1=$permDisplayName 2=$otherDisplayName}<strong>%1</strong> can view information about <strong>%2</strong>.{/ts} +{/if} +{/if} + +{* Used for legend on relationships tab *} +{if $afterText} +{if $permType eq 1} +{ts}This contact can be edited by the other.{/ts} +{else} +{ts}This contact can be viewed by the other.{/ts} +{/if} +{/if} diff --git a/civicrm/templates/CRM/Contact/Page/View/Summary.tpl b/civicrm/templates/CRM/Contact/Page/View/Summary.tpl index b8a7a2238129d1c3a7a3c6a259b072d6365812ea..c8ce4311d3493508f2437505b9893c9e1edb2e0f 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Summary.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Summary.tpl @@ -159,45 +159,7 @@ {/if} <div class="{if !empty($imageURL)} float-left{/if}"> <div class="crm-clear crm-summary-block"> - <div class="crm-summary-row"> - <div class="crm-label" id="tagLink"> - <a href="{crmURL p='civicrm/contact/view' q="reset=1&cid=$contactId&selectedChild=tag"}" - title="{ts}Edit Tags{/ts}">{ts}Tags{/ts}</a> - </div> - <div class="crm-content" id="tags"> - {foreach from=$contactTag item=tagName key=tagId} - <span class="crm-tag-item" {if !empty($allTags.$tagId.color)}style="background-color: {$allTags.$tagId.color}; color: {$allTags.$tagId.color|colorContrast};"{/if} title="{$allTags.$tagId.description|escape}"> - {$tagName} - </span> - {/foreach} - </div> - </div> - <div class="crm-summary-row"> - <div class="crm-label">{ts}Contact Type{/ts}</div> - <div class="crm-content crm-contact_type_label"> - {if isset($contact_type_label)}{$contact_type_label}{/if} - </div> - </div> - <div class="crm-summary-row"> - <div class="crm-label"> - {ts}Contact ID{/ts}{if !empty($userRecordUrl)} / {ts}User ID{/ts}{/if} - </div> - <div class="crm-content"> - <span class="crm-contact-contact_id">{$contactId}</span> - {if !empty($userRecordUrl)} - <span class="crm-contact-user_record_id"> - / <a title="View user record" class="user-record-link" - href="{$userRecordUrl}">{$userRecordId}</a> - </span> - {/if} - </div> - </div> - <div class="crm-summary-row"> - <div class="crm-label">{ts}External ID{/ts}</div> - <div class="crm-content crm-contact_external_identifier_label"> - {if isset($external_identifier)}{$external_identifier}{/if} - </div> - </div> + {include file="CRM/Contact/Page/Inline/Basic.tpl"} </div> </div> {/crmRegion} diff --git a/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl b/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl index 30db0fee691f635ed61aab0123adaa107501f844..e03173988b4284df040df4a7b244ca871ace520c 100644 --- a/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/UserDashBoard/GroupContact.tpl @@ -23,6 +23,9 @@ | see the CiviCRM license FAQ at http://civicrm.org/licensing | +--------------------------------------------------------------------+ *} +{if $userChecksum} + {assign var=edit value='0'} +{/if} {crmRegion name="crm-contact-userdashboard-groupcontact-pre"} {/crmRegion} <div id="groupContact"> diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl index 9612842736c044d89c790a7dee1c7ee90af64844..52b102ed8b537b6fb332d3aa0e7051fc5977bcb8 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl @@ -66,6 +66,12 @@ {include file="CRM/Contribute/Form/Contribution/PreviewHeader.tpl"} {/if} + {if $displayCaptchaWarning} + <div class="messages status no-popup"> + {ts}To display reCAPTCHA on form you must get an API key from<br /> <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>{/ts} + </div> + {/if} + {include file="CRM/common/TrackingFields.tpl"} <div class="crm-contribution-page-id-{$contributionPageID} crm-block crm-contribution-main-form-block"> diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.hlp b/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.hlp index c00ad8de84340a7671de80dd969fef5a6f618539..001d16591d2a621a22bd00c20a8bcb944d8337ec 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.hlp +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.hlp @@ -25,4 +25,5 @@ *} {htxt id="id-financial_type-product"} {ts}Select a Financial Type that has both a 'Cost of Sales Premiums Account' and a 'Premiums Inventory Account' if you want to generate accounting transactions to track the cost of premiums used.{/ts} +<br />{ts}The default Financial Type is configured when creating the "Premium" but it can be changed for each contribution page if required.{/ts} {/htxt} diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl index a97f0f6b8b40e490eb3ab0c0a0da069c030cbb66..ec8bfdb252fb04b51643242b5aa3325f5c0b53b0 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionPage/AddProduct.tpl @@ -53,7 +53,7 @@ {capture assign=ftUrl}{crmURL p='civicrm/admin/financial/financialType' q="reset=1"}{/capture} {ts 1=$ftUrl}There are no financial types configured with linked 'Cost of Sales Premiums' and 'Premiums Inventory Account' accounts. If you want to generate accounting transactions which track the cost of premiums used <a href='%1'>click here</a> to configure financial types and accounts.{/ts} {else} - {$form.financial_type_id.html}{help id="id-financial_type-product"} + {$form.financial_type_id.html} {help id="id-financial_type-product"} <a name='resetfinancialtype' id="resetfinancialtype" style="display: none;">{ts}Reset to default for selected product{/ts}</a> {/if} </td> </tr> @@ -78,7 +78,7 @@ CRM.$(function($) { - function getFinancialType() { + function getFinancialType(set) { var callbackURL = CRM.url('civicrm/ajax/rest', { className: 'CRM_Financial_Page_AJAX', fnName: 'jqFinancialType', @@ -88,17 +88,24 @@ url: callbackURL, success: function( data, textStatus ){ data = eval(data);//get json array - if ( data != null ) { + if ((data != null) && (set)) { $("#financial_type_id").val(data); } + if (data == $("#financial_type_id").val()) { + $("#resetfinancialtype").hide(); + } + else { + $("#resetfinancialtype").show(); + } } }); - } - getFinancialType(); - $("#product_id").change(getFinancialType); + getFinancialType(false); + $("#product_id").change(function() { getFinancialType(true); }); + $("#resetfinancialtype").click(function() { getFinancialType(true); }); + $("#financial_type_id").change(function() { getFinancialType(false); }); }); {/literal} </script> diff --git a/civicrm/templates/CRM/Contribute/Form/ContributionView.tpl b/civicrm/templates/CRM/Contribute/Form/ContributionView.tpl index f6c2799e05012b862f808c0704f4b055e65ae92b..bc281ac35e410fc18f8accf25590730ac9ee6cfc 100644 --- a/civicrm/templates/CRM/Contribute/Form/ContributionView.tpl +++ b/civicrm/templates/CRM/Contribute/Form/ContributionView.tpl @@ -68,6 +68,11 @@ </div> </div> <table class="crm-info-panel"> + {if $is_test} + <div class="help"> + <strong>{ts}This is a TEST transaction{/ts}</strong> + </div> + {/if} <tr> <td class="label">{ts}From{/ts}</td> <td class="bold"><a href="{crmURL p='civicrm/contact/view' q="cid=$contact_id"}">{$displayName}</a></td> diff --git a/civicrm/templates/CRM/Contribute/Page/ContributionRecur.tpl b/civicrm/templates/CRM/Contribute/Page/ContributionRecur.tpl index 767e62bff20c1e7b8fee57cbb0729a002e4c6e12..6f8371aee9faae198cda06845fa208ac1b94115d 100644 --- a/civicrm/templates/CRM/Contribute/Page/ContributionRecur.tpl +++ b/civicrm/templates/CRM/Contribute/Page/ContributionRecur.tpl @@ -28,6 +28,11 @@ {if $action eq 4} {* when action is view *} {if $recur} + {if $recur.is_test} + <div class="help"> + <strong>{ts}This is a TEST transaction{/ts}</strong> + </div> + {/if} <h3>{ts}View Recurring Payment{/ts}</h3> <div class="crm-block crm-content-block crm-recurcontrib-view-block"> <table class="crm-info-panel"> diff --git a/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl b/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl index e85be285f3d9013f021d753cca940108e3a3c8ad..6f46d0ca47b0345ed9a40840602ea3f629efff64 100644 --- a/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl +++ b/civicrm/templates/CRM/Contribute/Page/ManagePremiums.tpl @@ -43,7 +43,7 @@ <div id="ltype"> {strip} {* handle enable/disable actions*} - {include file="CRM/common/enableDisableApi.tpl"} + {include file="CRM/common/enableDisableApi.tpl"} {include file="CRM/common/jsortable.tpl"} <table id="options" class="display"> <thead> @@ -51,8 +51,9 @@ <th id="sortable">{ts}Name{/ts}</th> <th>{ts}SKU{/ts}</th> <th>{ts}Market Value{/ts}</th> - <th>{ts}Financial Type{/ts}</th> <th>{ts}Min Contribution{/ts}</th> + <th>{ts}Actual Cost{/ts}</th> + <th>{ts}Financial Type{/ts}</th> <th>{ts}Active?{/ts}</th> <th></th> </tr> @@ -61,9 +62,10 @@ <tr id="product-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"} {$row.class}{if NOT $row.is_active} disabled{/if}"> <td class="crm-contribution-form-block-name crm-editable" data-field="name">{$row.name}</td> <td class="crm-contribution-form-block-sku crm-editable" data-field="sku">{$row.sku}</td> - <td class="crm-contribution-form-block-price">{$row.price }</td> - <td class="crm-contribution-form-block-financial_type">{$row.financial_type_id}</td> - <td class="crm-contribution-form-block-min_contribution">{$row.min_contribution}</td> + <td class="crm-contribution-form-block-price">{$row.price|crmMoney}</td> + <td class="crm-contribution-form-block-min_contribution">{$row.min_contribution|crmMoney}</td> + <td class="crm-contribution-form-block-cost">{$row.cost|crmMoney}</td> + <td class="crm-contribution-form-block-financial_type">{$row.financial_type}</td> <td id="row_{$row.id}_status" >{if $row.is_active eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td> <td id={$row.id}>{$row.action|replace:'xx':$row.id}</td> </tr> diff --git a/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl b/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl index 7cb4577645ec505296ce1f06dbec3b447cf3633f..3170776c63022126abe85bd3d8008534bf2b178a 100644 --- a/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl +++ b/civicrm/templates/CRM/Contribute/Page/PcpUserDashboard.tpl @@ -37,7 +37,7 @@ <th>{ts}In Support of{/ts}</th> <th>{ts}Campaign Ends{/ts}</th> <th>{ts}Status{/ts}</th> - <th></th> + {if !$userChecksum} <th></th> {/if} </tr> {foreach from=$pcpInfo item=row} @@ -46,7 +46,9 @@ <td>{$row.pageTitle}</td> <td>{if $row.end_date}{$row.end_date|truncate:10:''|crmDate}{else}({ts}ongoing{/ts}){/if}</td> <td>{$row.pcpStatus}</td> - <td>{$row.action|replace:'xx':$row.pcpId}</td> + {if !$userChecksum} + <td>{$row.action|replace:'xx':$row.pcpId}</td> + {/if} </tr> {/foreach} </table> @@ -59,7 +61,6 @@ </div> {/if} - {if $pcpBlock} {strip} {if $pcpInfo} {* Change layout and text if they already have a PCP. *} diff --git a/civicrm/templates/CRM/Contribute/Page/Premium.tpl b/civicrm/templates/CRM/Contribute/Page/Premium.tpl index 9abb647652b7842f6e475c996f0b9f9fd49075fd..8d3398220e67c5751321df7635375114e0a362cf 100644 --- a/civicrm/templates/CRM/Contribute/Page/Premium.tpl +++ b/civicrm/templates/CRM/Contribute/Page/Premium.tpl @@ -37,6 +37,7 @@ <th>{ts}SKU{/ts}</th> <th>{ts}Market Value{/ts}</th> <th>{ts}Min Contribution{/ts}</th> + <th>{ts}Actual Cost{/ts}</th> <th>{ts}Financial Type{/ts}</th> <th>{ts}Order{/ts}</th> <th></th> @@ -45,9 +46,10 @@ <tr class="{cycle values='odd-row,even-row'} {$row.class}{if NOT $row.is_active} disabled{/if}"> <td class="crm-contribution-form-block-product_name">{$row.product_name}</td> <td class="crm-contribution-form-block-sku">{$row.sku}</td> - <td class="crm-contribution-form-block-price">{$row.price }</td> - <td class="crm-contribution-form-block-min_contribution">{$row.min_contribution}</td> - <td class="crm-contribution-form-block-financial_type">{$row.financial_type_id}</td> + <td class="crm-contribution-form-block-price">{$row.price|crmMoney}</td> + <td class="crm-contribution-form-block-min_contribution">{$row.min_contribution|crmMoney}</td> + <td class="crm-contribution-form-block-cost">{$row.cost|crmMoney}</td> + <td class="crm-contribution-form-block-financial_type">{$row.financial_type}</td> <td class="nowrap crm-contribution-form-block-weight">{$row.weight}</td> <td class="crm-contribution-form-block-action">{$row.action}</td> </tr> diff --git a/civicrm/templates/CRM/Contribute/Page/Tab.tpl b/civicrm/templates/CRM/Contribute/Page/Tab.tpl index f38a200afd4c1717f8a0570effee271cde79f1e7..4f989cdf6e6db9c423e9978125e83ba1fe88a443 100644 --- a/civicrm/templates/CRM/Contribute/Page/Tab.tpl +++ b/civicrm/templates/CRM/Contribute/Page/Tab.tpl @@ -46,12 +46,12 @@ <ul class="ui-tabs-nav ui-corner-all ui-helper-reset ui-helper-clearfix ui-widget-header"> <li id="tab_contributions" class="crm-tab-button ui-corner-all ui-tabs-tab ui-corner-top ui-state-default ui-tab ui-tabs-active ui-state-active"> <a href="#contributions-subtab" title="{ts}Contributions{/ts}"> - {ts}Contributions{/ts} <em>{$rows|@count}</em> + {ts}Contributions{/ts} <em>{$tabCount}</em> </a> </li> <li id="tab_recurring" class="crm-tab-button ui-corner-all ui-tabs-tab ui-corner-top ui-state-default ui-tab"> <a href="#recurring-subtab" title="{ts}Recurring Contributions{/ts}"> - {ts}Recurring Contributions{/ts} <em>{$activeRecurRows|@count}</em> + {ts}Recurring Contributions{/ts} <em>{$contributionRecurCount}</em> </a> </li> </ul> diff --git a/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl b/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl index d4c7323cd385480d71951032656d7e02da64abc9..086db9f3bb856be3b33d0011688fa5cd17932d28 100644 --- a/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Contribute/Page/UserDashboard.tpl @@ -76,8 +76,12 @@ {/if} {if $defaultInvoicePage && $row.contribution_status_name == 'Pending' } <td> + {assign var='checksum_url' value=""} + {if $userChecksum} + {assign var='checksum_url' value="&cid=$contactId&cs=$userChecksum"} + {/if} {assign var='id' value=$row.contribution_id} - {capture assign=payNowLink}{crmURL p='civicrm/contribute/transact' q="reset=1&id=`$defaultInvoicePage`&ccid=`$id`"}{/capture} + {capture assign=payNowLink}{crmURL p='civicrm/contribute/transact' q="reset=1&id=`$defaultInvoicePage`&ccid=`$id`$checksum_url"}{/capture} <a class="button" href="{$payNowLink}"><span class='nowrap'>{ts}Pay Now{/ts}</span></a> </td> {/if} diff --git a/civicrm/templates/CRM/Core/BillingBlock.tpl b/civicrm/templates/CRM/Core/BillingBlock.tpl index 1e7c56782e610ca2ec7c3ef1a05423df54cdc83d..73050a5e3737112ebe54716f6cf72fe820abe03b 100644 --- a/civicrm/templates/CRM/Core/BillingBlock.tpl +++ b/civicrm/templates/CRM/Core/BillingBlock.tpl @@ -39,7 +39,8 @@ <div class="label">{$form.$paymentField.label} {if $requiredPaymentFields.$name}<span class="crm-marker" title="{ts}This field is required.{/ts}">*</span>{/if} </div> - <div class="content">{$form.$paymentField.html} + <div class="content"> + {$form.$paymentField.html} {if $paymentField == 'cvv2'}{* @todo move to form assignment*} <span class="cvv2-icon" title="{ts}Usually the last 3-4 digits in the signature area on the back of the card.{/ts}"> </span> {/if} diff --git a/civicrm/templates/CRM/Core/Form/Field.tpl b/civicrm/templates/CRM/Core/Form/Field.tpl index 79d68bda40cd6320b1a82848405b883d93c434fd..026a009d1a358e1d41145fa0a74a9f2d8dd8ff45 100644 --- a/civicrm/templates/CRM/Core/Form/Field.tpl +++ b/civicrm/templates/CRM/Core/Form/Field.tpl @@ -35,5 +35,6 @@ </td> <td>{if $form.$fieldName.html}{if $fieldSpec.formatter === 'crmMoney'}{$form.$fieldName.html|crmMoney}{else}{$form.$fieldName.html}{/if}{else}{$fieldSpec.place_holder}{/if}<br /> {if $fieldSpec.description}<span class="description">{$fieldSpec.description}</span>{/if} + {if $fieldSpec.documentation_link}{docURL page=$fieldSpec.documentation_link.page}{/if} </td> {/if} diff --git a/civicrm/templates/CRM/Event/Form/ManageEvent/Registration.hlp b/civicrm/templates/CRM/Event/Form/ManageEvent/Registration.hlp index 5b9b08c7433db795284da574c3942000c7540368..1d530dca608c50bb3b085aa2700aabca8dd047b1 100644 --- a/civicrm/templates/CRM/Event/Form/ManageEvent/Registration.hlp +++ b/civicrm/templates/CRM/Event/Form/ManageEvent/Registration.hlp @@ -31,7 +31,6 @@ {ts 1=$ppUrl}If you want to provide an Online Registration page for this event, check the first box below and then complete the fields on this form. You can offer online registration for both Paid and Free events. Paid events require that you have configured a <a href="%1">payment processor</a> for your site.{/ts} {ts}You may also configure events to require administrative approval prior to participants completing the registration process. To enable this feature you must first enable the Participant Statuses used by the approval work-flow (Administer » CiviEvent » Participant Statuses). Then reload this form and check 'Require participant approval?'.{/ts} {/htxt} - {htxt id="event-profile-title"} {ts}Profile{/ts} {/htxt} @@ -51,14 +50,12 @@ {ts 1=$docLinkCustom 2=$docLinkProfile}Refer to the online documentation for more details on creating %1 and %2.{/ts} </p> {/htxt} - {htxt id="id-link_text-title"} {ts}Registration Link{/ts} {/htxt} {htxt id="id-link_text"} {ts}Display text for link from Event Information to Event Registration pages (e.g. 'Register Now!').{/ts} {/htxt} - {htxt id="id-allow_multiple-title"} {ts}Multiple Participants{/ts} {/htxt} @@ -66,7 +63,6 @@ <p>{ts}Check this box to allow users to register themselves AND additional participants for an event. When this feature is enabled, users have the option to specify the number of additional participants they are registering for. If this is a paid event, they can select a different event fees for each participant - and will be charged the total of those fees. If a profile is included - they will complete the profile information for each participant.{/ts}</p> <p>{ts}You can use different profile for the person who is registering than for "Additional Participants". For example, you may want to require an email address from the person entering the registration while not requiring (or even requesting) emails for additional participants (i.e. their "guests").{/ts}</p> {/htxt} - {htxt id="id-max_additional-title"} {ts}Maximum Additional Participants{/ts} {/htxt} @@ -74,35 +70,30 @@ <p>{ts}Limit the number of additional participants that can be registered in a single booking.{/ts}</p> <p>{ts}Eg: if you choose '2' then the lead booker can bring 2 guests; there would be a limit of 3 participants in total per booking.{/ts}</p> {/htxt} - {htxt id="id-allow_same_email-title"} {ts}Allow Shared Email{/ts} {/htxt} {htxt id="id-allow_same_email"} <p>{ts}Check this box to allow a user to register multiple participants using the same email address. Alternatively, if you want additional participants to be registered <strong>without requiring an email address to be entered for each person</strong> - check the "Register multiple participants" option, AND include a profile in this registration form which <strong>includes First Name and Last Name fields</strong>.{/ts}</p> {/htxt} - {htxt id="id-dedupe_rule_group_id-title"} {ts}Duplicate Matching Rule{/ts} {/htxt} {htxt id="id-dedupe_rule_group_id"} <p>{ts}By default, your event will use the Unsupervised duplicate matching rule to match participants in anonymous registrations with existing individuals. You may select another rule to use for this event instead. Make sure that your included profile(s) contain the fields needed by your matching rule.{/ts}</p> {/htxt} - {htxt id="id-requires_approval-title"} {ts}Require Approval{/ts} {/htxt} {htxt id="id-requires_approval"} {ts}Check this box to require administrative approval for all the participants who self-register, prior to being able to complete the registration process. Participants will be placed in 'Awaiting Approval' status. You can review and approve participants from 'Find Participants' - select the 'Participant status - change' task. Approved participants will move to 'Pending from approval' status, and will be sent an email with a link to complete their registration (including paying event fees - if any). {/ts} {/htxt} - {htxt id="id-expiration_time-title"} {ts}Time Limit{/ts} {/htxt} {htxt id="id-expiration_time"} {ts}Time limit <strong>in hours</strong> for confirming/finishing registration by participants with any of the pending statuses. Enter 0 (or leave empty) to disable this feature.{/ts} {/htxt} - {htxt id="id-allow_selfcancelxfer-title"} {ts}Allow Self-service Cancellation or Transfer?{/ts} {/htxt} @@ -110,10 +101,9 @@ <p>{ts}Check this box if you want to allow registered participants to either cancel their registration OR transfer it to another participant. If this feature is enabled, event confirmation emails will include a link to a Cancel or Transfer form.{/ts}</p> <p>{ts}<strong>Automated refunds for cancellations are NOT currently supported.</strong> Participants who have paid for an event will be notified that cancellations are not refundable.{/ts}</p> {/htxt} - {htxt id="id-selfcancelxfer_time-title"} {ts}Cancellation or Transfer Time Limit{/ts} {/htxt} {htxt id="id-selfcancelxfer_time"} {ts}Number of hours prior to event start date to allow self-service cancellation or transfer. Enter 0 (or leave empty) to allow cancellation or transfer up until the event has started.{/ts} -{/htxt} \ No newline at end of file +{/htxt} diff --git a/civicrm/templates/CRM/Financial/Form/FinancialType.tpl b/civicrm/templates/CRM/Financial/Form/FinancialType.tpl index c815ec8fbc64cd089f78c62df3b7cba637047040..675256334fd14be5d05eff3ac307491a72822a77 100644 --- a/civicrm/templates/CRM/Financial/Form/FinancialType.tpl +++ b/civicrm/templates/CRM/Financial/Form/FinancialType.tpl @@ -24,46 +24,9 @@ +--------------------------------------------------------------------+ *} {* this template is used for adding/editing/deleting financial type *} -<div class="crm-block crm-form-block crm-financial_type-form-block"> - {if $action eq 8} - <div class="messages status"> - <div class="icon inform-icon"></div> - {ts}WARNING: You cannot delete a financial type if it is currently used by any Contributions, Contribution Pages or Membership Types. Consider disabling this option instead.{/ts} {ts}Deleting a financial type cannot be undone.{/ts} {ts}Do you want to continue?{/ts} - </div> - {else} - <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> - <table class="form-layout-compressed"> - <tr class="crm-contribution-form-block-name"> - <td class="label">{$form.name.label}</td> - <td class="html-adjust">{$form.name.html}</td> - </tr> - <tr class="crm-contribution-form-block-description"> - <td class="label">{$form.description.label}</td> - <td class="html-adjust">{$form.description.html}</td> - </tr> - - <tr class="crm-contribution-form-block-is_deductible"> - <td class="label">{$form.is_deductible.label}</td> - <td class="html-adjust">{$form.is_deductible.html}<br /> - <span class="description">{ts}Are contributions of this type tax-deductible?{/ts}</span> - </td> - </tr> - <tr class="crm-contribution-form-block-is_active"> - <td class="label">{$form.is_active.label}</td> - <td class="html-adjust">{$form.is_active.html}</td> - </tr> - <tr class="crm-contribution-form-block-is_reserved"> - <td class="label">{$form.is_reserved.label}</td> - <td class="html-adjust">{$form.is_reserved.html}</td> - </tr> - - </table> - {/if} - <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="botttom"}</div> - {if $action eq 2 or $action eq 4 } {* Update or View*} - <div class="crm-submit-buttons"> - <a href="{crmURL p='civicrm/admin/financial/financialType/accounts' q="action=browse&reset=1&aid=$aid"}" class="button"><span>{ts}View or Edit Financial Accounts{/ts}</a></span> - </div> - {/if} -</div> - +{include file="CRM/Core/Form/EntityForm.tpl"} +{if $action eq 2 or $action eq 4 } {* Update or View*} + <div class="crm-submit-buttons"> + <a href="{crmURL p='civicrm/admin/financial/financialType/accounts' q="action=browse&reset=1&aid=$aid"}" class="button"><span>{ts}View or Edit Financial Accounts{/ts}</a></span> + </div> +{/if} diff --git a/civicrm/templates/CRM/Grant/Form/Search/Common.tpl b/civicrm/templates/CRM/Grant/Form/Search/Common.tpl index f85f11d3031392db47a83babe2a212d40a6904ae..9830e19fbc9f1f3ad6ce2503f11ed0beb965454c 100644 --- a/civicrm/templates/CRM/Grant/Form/Search/Common.tpl +++ b/civicrm/templates/CRM/Grant/Form/Search/Common.tpl @@ -30,10 +30,12 @@ </td> <td> <label>{ts}Grant Status(s){/ts}</label> + <br> {$form.grant_status_id.html} </td> <td> <label>{ts}Grant Type(s){/ts}</label> + <br> {$form.grant_type_id.html} </td> </tr> diff --git a/civicrm/templates/CRM/Member/Form/MembershipType.tpl b/civicrm/templates/CRM/Member/Form/MembershipType.tpl index 1e679fcc9f4f652891e754e4a8ef6e6dc68a5f5c..2fee1d365533c295c56128ae527c100f610f39a4 100644 --- a/civicrm/templates/CRM/Member/Form/MembershipType.tpl +++ b/civicrm/templates/CRM/Member/Form/MembershipType.tpl @@ -24,45 +24,20 @@ +--------------------------------------------------------------------+ *} {* this template is used for adding/editing/deleting membership type *} +{if $action eq 8} + {include file="CRM/Core/Form/EntityForm.tpl"} +{else} <div class="crm-block crm-form-block crm-membership-type-form-block"> <div class="form-item" id="membership_type_form"> - {if $action eq 8} - <div class="messages status no-popup"> - {ts}WARNING: Deleting this option will result in the loss of all membership records of this type.{/ts} {ts}This may mean the loss of a substantial amount of data, and the action cannot be undone.{/ts} {ts}Do you want to continue?{/ts} - </div> - <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl"}</div> - {else} <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div> <table class="form-layout-compressed"> - <tr class="crm-membership-type-form-block-name"> - <td class="label">{$form.name.label} {if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_membership_type' field='name' id=$membershipTypeId}{/if} - </td> - <td>{$form.name.html}<br /> - <span class="description">{ts}e.g. 'Student', 'Senior', 'Honor Society'...{/ts}</span> - </td> - </tr> - <tr class="crm-membership-type-form-block-description"> - <td class="label">{$form.description.label} {if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_membership_type' field='description' id=$membershipTypeId}{/if} - </td> - <td>{$form.description.html}<br /> - <span class="description">{ts}Description of this membership type for internal use. May include eligibility, benefits, terms, etc.{/ts}</span> - </td> - </tr> - - <tr class="crm-membership-type-form-block-member_org"> - <td class="label">{$form.member_of_contact_id.label}</td> - <td>{$form.member_of_contact_id.html}<br /> - <span class="description">{ts}Members assigned this membership type belong to which organization (e.g. this is for membership in 'Save the Whales - Northwest Chapter'). NOTE: This organization/group/chapter must exist as a CiviCRM Organization type contact.{/ts}</span> - </td> - </tr> - - <tr class="crm-membership-type-form-block-minimum_fee"> - <td class="label">{$form.minimum_fee.label}</td> - <td>{$form.minimum_fee.html|crmMoney}<br /> - <span class="description">{ts}Minimum fee required for this membership type. For free/complimentary memberships - set minimum fee to zero (0). NOTE: When using CiviCRM to process sales taxes this should be the tax exclusive amount.{/ts}</span> - </td> - </tr> + {foreach from=$tpl_standardised_fields item=fieldName} + {assign var=fieldSpec value=$entityFields.$fieldName} + <tr class="crm-{$entityInClassFormat}-form-block-{$fieldName}"> + {include file="CRM/Core/Form/Field.tpl"} + </tr> + {/foreach} <tr class="crm-membership-type-form-block-financial_type_id"> <td class="label">{$form.financial_type_id.label}</td> <td>{$form.financial_type_id.html}<br /> diff --git a/civicrm/templates/CRM/Member/Form/MembershipView.tpl b/civicrm/templates/CRM/Member/Form/MembershipView.tpl index 87405f107a2f0bbbad718bff53de03dc32484d62..6cc0c051a81f5074ae6051c85328123c6fbf6182 100644 --- a/civicrm/templates/CRM/Member/Form/MembershipView.tpl +++ b/civicrm/templates/CRM/Member/Form/MembershipView.tpl @@ -45,8 +45,14 @@ {/if} {include file="CRM/common/formButtons.tpl" location="bottom"} </div> + + {if $is_test} + <div class="help"> + <strong>{ts}This is a TEST transaction{/ts}</strong> + </div> + {/if} <table class="crm-info-panel"> - <tr><td class="label">{ts}Member{/ts}</td><td class="bold"><a href="{crmURL p='civicrm/contact/view' q="reset=1&cid=$contact_id&context=$context"}" title="{ts}View contact summary{/ts}">{$displayName}</td></tr> + <tr><td class="label">{ts}Member{/ts}</td><td class="bold"><a href="{crmURL p='civicrm/contact/view' q="reset=1&cid=$contact_id&context=$context"}" title="{ts}View contact summary{/ts}">{$displayName}</td></tr> {if $owner_display_name} <tr><td class="label">{ts}By Relationship{/ts}</td><td>{$relationship} <a href="{crmURL p='civicrm/contact/view' q="reset=1&cid=$owner_contact_id&context=$context"}" title="{ts}View primary member contact summary{/ts}">{$owner_display_name}</a> </td></tr> {/if} diff --git a/civicrm/templates/CRM/Member/Form/Selector.tpl b/civicrm/templates/CRM/Member/Form/Selector.tpl index 7e5820182395d14828d7922c8c4f3061605cbac7..b6a6631ffb8e02ae2f6c2cc68183137adc6de83f 100644 --- a/civicrm/templates/CRM/Member/Form/Selector.tpl +++ b/civicrm/templates/CRM/Member/Form/Selector.tpl @@ -59,7 +59,7 @@ </td> {/if} <td class="crm-membership-type crm-membership-type_{$row.membership_type}"> - {$row.membership_type} + {$row.membership_type}{if $row.is_test} ({ts}test{/ts}){/if} {if $row.owner_membership_id}<br />({ts}by relationship{/ts}){/if} </td> <td class="crm-membership-join_date">{$row.join_date|truncate:10:''|crmDate}</td> diff --git a/civicrm/templates/CRM/Member/Page/Tab.tpl b/civicrm/templates/CRM/Member/Page/Tab.tpl index 0323190bd9594b7460b558bf31fe98c21655912a..1007b64947a13dc617be10b21c3a085f5e96fe5c 100644 --- a/civicrm/templates/CRM/Member/Page/Tab.tpl +++ b/civicrm/templates/CRM/Member/Page/Tab.tpl @@ -86,7 +86,7 @@ {foreach from=$activeMembers item=activeMember} <tr id="crm-membership_{$activeMember.id}" class="{cycle values="odd-row,even-row"} {$activeMember.class} crm-membership"> <td class="crm-membership-membership_type"> - {$activeMember.membership_type} + {$activeMember.membership_type}{if $activeMember.is_test} ({ts}test{/ts}){/if} {if $activeMember.owner_membership_id}<br />({ts}by relationship{/ts}){/if} </td> <td class="crm-membership-join_date" data-order="{$activeMember.join_date}">{$activeMember.join_date|crmDate}</td> @@ -135,9 +135,10 @@ </thead> {foreach from=$inActiveMembers item=inActiveMember} <tr id="crm-membership_{$inActiveMember.id}" class="{cycle values="odd-row,even-row"} {$inActiveMember.class} crm-membership"> - <td class="crm-membership-membership_type">{$inActiveMember.membership_type} - {if $inActiveMember.owner_membership_id}<br />({ts}by relationship{/ts}){/if} - </td> + <td class="crm-membership-membership_type"> + {$inActiveMember.membership_type}{if $inActiveMember.is_test} ({ts}test{/ts}){/if} + {if $inActiveMember.owner_membership_id}<br />({ts}by relationship{/ts}){/if} + </td> <td class="crm-membership-join_date" data-order="{$inActiveMember.join_date}">{$inActiveMember.join_date|crmDate}</td> <td class="crm-membership-start_date" data-order="{$inActiveMember.start_date}">{$inActiveMember.start_date|crmDate}</td> <td class="crm-membership-end_date" data-order="{$inActiveMember.end_date}">{$inActiveMember.end_date|crmDate}</td> diff --git a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl index f0cab011a01b8ab9db63ce9dc0fdd340cd9ff8ed..59dfbb4aaeb2a97ac4ca2ea8d93d627748b42249 100644 --- a/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl +++ b/civicrm/templates/CRM/Pledge/Page/UserDashboard.tpl @@ -46,12 +46,14 @@ <td class="crm-pledge-pledge_next_pay_date">{$row.pledge_next_pay_date|truncate:10:''|crmDate}</td> <td class="crm-pledge-pledge_next_pay_amount">{$row.pledge_next_pay_amount|crmMoney:$row.pledge_currency}</td> <td class="crm-pledge-pledge_status crm-pledge-pledge_status_{$row.pledge_status}">{$row.pledge_status}</td> - <td> - {if $row.pledge_contribution_page_id and ($row.pledge_status_name neq 'Completed') and ( $row.contact_id eq $loggedUserID ) } - <a href="{crmURL p='civicrm/contribute/transact' q="reset=1&id=`$row.pledge_contribution_page_id`&pledgeId=`$row.pledge_id`"}">{ts}Make Payment{/ts}</a><br/> - {/if} - <a class="crm-expand-row" title="{ts}view payments{/ts}" href="{crmURL p='civicrm/pledge/payment' q="action=browse&context=`$context`&pledgeId=`$row.pledge_id`&cid=`$row.contact_id`"}">{ts}Payments{/ts}</a> - </td> + {if !$userChecksum} + <td> + {if $row.pledge_contribution_page_id and ($row.pledge_status_name neq 'Completed') and ( $row.contact_id eq $loggedUserID ) } + <a href="{crmURL p='civicrm/contribute/transact' q="reset=1&id=`$row.pledge_contribution_page_id`&pledgeId=`$row.pledge_id`"}">{ts}Make Payment{/ts}</a><br/> + {/if} + <a class="crm-expand-row" title="{ts}view payments{/ts}" href="{crmURL p='civicrm/pledge/payment' q="action=browse&context=`$context`&pledgeId=`$row.pledge_id`&cid=`$row.contact_id`"}">{ts}Payments{/ts}</a> + </td> + {/if} </tr> {/foreach} </table> diff --git a/civicrm/templates/CRM/Price/Form/Calculate.tpl b/civicrm/templates/CRM/Price/Form/Calculate.tpl index 7c0533f4cb0441ddcd7cbdabc7bba57cffe3043e..0d78268f9d302a7bee703d44463e7578a7aaaec2 100644 --- a/civicrm/templates/CRM/Price/Form/Calculate.tpl +++ b/civicrm/templates/CRM/Price/Form/Calculate.tpl @@ -27,13 +27,11 @@ {assign var='hideTotal' value=$quickConfig+$noCalcValueDisplay} <div id="pricesetTotal" class="crm-section section-pricesetTotal"> <div class="label - {if $hideTotal}, hiddenElement{/if}" id="pricelabel"> - <label> - {if ( $extends eq 'Contribution' ) || ( $extends eq 'Membership' )} - <span id='amount_sum_label'>{ts}Total Amount{/ts}{else}{ts}Total Fee(s){/ts}</span> - {if $isAdditionalParticipants} {ts}for this participant{/ts}{/if} - {/if} - </label> +{if $hideTotal}, hiddenElement{/if}" id="pricelabel"> + {if ( $extends eq 'Contribution' ) || ( $extends eq 'Membership' )} + <span id='amount_sum_label'>{ts}Total Amount{/ts}{else}{ts}Total Fee(s){/ts}</span> + {if $isAdditionalParticipants} {ts}for this participant{/ts}{/if} + {/if} </div> <div class="content calc-value" {if $hideTotal}style="display:none;"{/if} id="pricevalue" ></div> </div> diff --git a/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl b/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl index 3091780ba850a0045d8c3ae00012c0afae3a7d3a..bef10e07b2fa1cc25bbe49c3836288cc0a20f2d1 100644 --- a/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl +++ b/civicrm/templates/CRM/Profile/Page/MultipleRecordFieldsListing.tpl @@ -72,7 +72,7 @@ } } }); - }, + } }) })(CRM.$); </script> diff --git a/civicrm/templates/CRM/common/civicrm.settings.php.template b/civicrm/templates/CRM/common/civicrm.settings.php.template index 2895fed38c7f76c79a1f5ef4e3ec215538ee336d..34aaafe59dd5fd46a87ff675924aa88a61bf3953 100644 --- a/civicrm/templates/CRM/common/civicrm.settings.php.template +++ b/civicrm/templates/CRM/common/civicrm.settings.php.template @@ -368,7 +368,12 @@ if (!defined('CIVICRM_DB_CACHE_HOST')) { * The standard port for Memcache & APCCache is 11211. For Redis it is 6379. */ if (!defined('CIVICRM_DB_CACHE_PORT')) { - define('CIVICRM_DB_CACHE_PORT', 11211 ); + if (CIVICRM_DB_CACHE_CLASS === 'Redis') { + define('CIVICRM_DB_CACHE_PORT', 6379 ); + } + else { + define('CIVICRM_DB_CACHE_PORT', 11211); + } } /** diff --git a/civicrm/templates/CRM/common/crmeditable.tpl b/civicrm/templates/CRM/common/crmeditable.tpl deleted file mode 100644 index b68d6c141c2e42394728a2c5706b912cb58e56ca..0000000000000000000000000000000000000000 --- a/civicrm/templates/CRM/common/crmeditable.tpl +++ /dev/null @@ -1,9 +0,0 @@ -{* @deprecated *} - -<script> -{literal} -CRM.$(function($) { - CRM.console('warn', 'Warning: A CiviCRM extension is attempting to use the deprecated crmeditable.tpl. The extension needs to be updated to remove references to this template.'); -}); -</script> -{/literal} diff --git a/civicrm/templates/CRM/common/navigation.js.tpl b/civicrm/templates/CRM/common/navigation.js.tpl index 98783c49a101927e7670937d2e9b8c66981e2cec..69151673f3dc4f50076bcd0ee13803e333a786c6 100644 --- a/civicrm/templates/CRM/common/navigation.js.tpl +++ b/civicrm/templates/CRM/common/navigation.js.tpl @@ -62,7 +62,7 @@ //Track Scrolling $(window).scroll(function () { - $('div.sticky-header').css({top: "23px", position: "fixed"}); + $('div.sticky-header').css({top: $('#civicrm-menu').height() + "px", position: "fixed"}); }); if ($('#edit-shortcuts').length > 0) { @@ -84,7 +84,6 @@ $('#civicrm-menu').ready(function() { $('#root-menu-div .outerbox').css({'margin-top': '6px'}); $('#root-menu-div .menu-ul li').css({'padding-bottom': '2px', 'margin-top': '2px'}); - $('img.menu-item-arrow').css({top: '4px'}); $("#civicrm-menu >li").each(function(i){ $(this).attr("tabIndex",i+2); }); @@ -208,7 +207,7 @@ $('#civicrm-menu').ready(function() { // Close menu after selecting an item $('#root-menu-div').on('click', 'a', $.Menu.closeAll); }); -$('#civicrm-menu').menuBar({arrowSrc: CRM.config.resourceBase + 'packages/jquery/css/images/arrow.png'}); +$('#civicrm-menu').menuBar({arrowClass: 'crm-i fa-caret-right'}); $(window).on("beforeunload", function() { $('.crm-logo-sm', '#civicrm-menu').addClass('crm-i fa-spin'); }); diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php index af2f5cf4b0b255e374deb3020411349760db0cf6..d59939aaeffa90c323dba9c6b73b011ee885157e 100644 --- a/civicrm/vendor/autoload.php +++ b/civicrm/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitd31b8d6552946245209cda886e0ea284::getLoader(); +return ComposerAutoloaderInit61d8e138f140ca7ed358873ad7e10d15::getLoader(); diff --git a/civicrm/vendor/composer/ClassLoader.php b/civicrm/vendor/composer/ClassLoader.php index dc02dfb114fb6af2eacf89407a529c37ab8e7eb8..95f7e0978bad11efb1f75f5049b0c2ac7ae1939b 100644 --- a/civicrm/vendor/composer/ClassLoader.php +++ b/civicrm/vendor/composer/ClassLoader.php @@ -377,7 +377,7 @@ class ClassLoader $subPath = $class; while (false !== $lastPos = strrpos($subPath, '\\')) { $subPath = substr($subPath, 0, $lastPos); - $search = $subPath.'\\'; + $search = $subPath . '\\'; if (isset($this->prefixDirsPsr4[$search])) { $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); foreach ($this->prefixDirsPsr4[$search] as $dir) { diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php index a13baea823a87a75a05f9aabdf4629161461fada..68c8e547ef6e4fd65da5c4f04e03a632fbb0cc4d 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 ComposerAutoloaderInitd31b8d6552946245209cda886e0ea284 +class ComposerAutoloaderInit61d8e138f140ca7ed358873ad7e10d15 { private static $loader; @@ -19,9 +19,9 @@ class ComposerAutoloaderInitd31b8d6552946245209cda886e0ea284 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitd31b8d6552946245209cda886e0ea284', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit61d8e138f140ca7ed358873ad7e10d15', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInitd31b8d6552946245209cda886e0ea284', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit61d8e138f140ca7ed358873ad7e10d15', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; $includePaths[] = get_include_path(); @@ -31,7 +31,7 @@ class ComposerAutoloaderInitd31b8d6552946245209cda886e0ea284 if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitd31b8d6552946245209cda886e0ea284::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit61d8e138f140ca7ed358873ad7e10d15::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -52,19 +52,19 @@ class ComposerAutoloaderInitd31b8d6552946245209cda886e0ea284 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInitd31b8d6552946245209cda886e0ea284::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit61d8e138f140ca7ed358873ad7e10d15::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequired31b8d6552946245209cda886e0ea284($fileIdentifier, $file); + composerRequire61d8e138f140ca7ed358873ad7e10d15($fileIdentifier, $file); } return $loader; } } -function composerRequired31b8d6552946245209cda886e0ea284($fileIdentifier, $file) +function composerRequire61d8e138f140ca7ed358873ad7e10d15($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php index 479cffc2e2c1988409aa33a6b2d7ee6566e945e6..78ef5ef5b7629a94418e622cd6d7d0224143950d 100644 --- a/civicrm/vendor/composer/autoload_static.php +++ b/civicrm/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitd31b8d6552946245209cda886e0ea284 +class ComposerStaticInit61d8e138f140ca7ed358873ad7e10d15 { public static $files = array ( 'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php', @@ -376,10 +376,10 @@ class ComposerStaticInitd31b8d6552946245209cda886e0ea284 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitd31b8d6552946245209cda886e0ea284::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitd31b8d6552946245209cda886e0ea284::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInitd31b8d6552946245209cda886e0ea284::$prefixesPsr0; - $loader->classMap = ComposerStaticInitd31b8d6552946245209cda886e0ea284::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit61d8e138f140ca7ed358873ad7e10d15::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit61d8e138f140ca7ed358873ad7e10d15::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit61d8e138f140ca7ed358873ad7e10d15::$prefixesPsr0; + $loader->classMap = ComposerStaticInit61d8e138f140ca7ed358873ad7e10d15::$classMap; }, null, ClassLoader::class); } diff --git a/civicrm/xml/schema/Contact/Relationship.xml b/civicrm/xml/schema/Contact/Relationship.xml index 92e7ec449033836352eefa4f49181ff6e8e9624b..03f2a6de2069152b7b528d87ed53e6c63fa2feab 100644 --- a/civicrm/xml/schema/Contact/Relationship.xml +++ b/civicrm/xml/schema/Contact/Relationship.xml @@ -114,28 +114,32 @@ </field> <field> <name>is_permission_a_b</name> - <type>boolean</type> + <type>int unsigned</type> <title>Contact A has Permission Over Contact B</title> + <required>true</required> <default>0</default> - <comment>is contact a has permission to view / edit contact and - related data for contact b ? - </comment> + <comment>Permission that Contact A has to view/update Contact B</comment> <add>2.1</add> + <pseudoconstant> + <callback>CRM_Core_SelectValues::getPermissionedRelationshipOptions</callback> + </pseudoconstant> <html> - <type>CheckBox</type> + <type>Radio</type> </html> </field> <field> <name>is_permission_b_a</name> - <type>boolean</type> + <type>int unsigned</type> <title>Contact B has Permission Over Contact A</title> + <required>true</required> <default>0</default> - <comment>is contact b has permission to view / edit contact and - related data for contact a ? - </comment> + <comment>Permission that Contact B has to view/update Contact A</comment> <add>2.1</add> + <pseudoconstant> + <callback>CRM_Core_SelectValues::getPermissionedRelationshipOptions</callback> + </pseudoconstant> <html> - <type>CheckBox</type> + <type>Radio</type> </html> </field> <field> diff --git a/civicrm/xml/schema/Contact/SavedSearch.xml b/civicrm/xml/schema/Contact/SavedSearch.xml index 4da353078754c92a7bce91671b065f332410deac..e8b7dbd2d12400065eb1d4862ba9b88aaeed6e1d 100644 --- a/civicrm/xml/schema/Contact/SavedSearch.xml +++ b/civicrm/xml/schema/Contact/SavedSearch.xml @@ -55,6 +55,7 @@ <name>mapping_id</name> <table>civicrm_mapping</table> <key>id</key> + <onDelete>SET NULL</onDelete> <add>1.5</add> </foreignKey> <field> diff --git a/civicrm/xml/schema/Core/OptionGroup.xml b/civicrm/xml/schema/Core/OptionGroup.xml index 013e76dde9886221f95b92e27156a6c66ec5776e..3df4c11d1848186a0538d9d4a651015e83c47791 100644 --- a/civicrm/xml/schema/Core/OptionGroup.xml +++ b/civicrm/xml/schema/Core/OptionGroup.xml @@ -61,6 +61,7 @@ <title>Option Group Is Reserved?</title> <type>boolean</type> <default>1</default> + <required>true</required> <comment>Is this a predefined system option group (i.e. it can not be deleted)?</comment> <add>1.5</add> </field> @@ -68,12 +69,16 @@ <name>is_active</name> <title>Option Group Is Active?</title> <type>boolean</type> + <default>1</default> + <required>true</required> <comment>Is this option group active?</comment> <add>1.5</add> </field> <field> <name>is_locked</name> <title>Option Group Is Locked</title> + <default>0</default> + <required>true</required> <type>boolean</type> <comment>A lock to remove the ability to add new options via the UI.</comment> <add>4.5</add> diff --git a/civicrm/xml/schema/Core/Phone.xml b/civicrm/xml/schema/Core/Phone.xml index 29b17c1df38aa935d4c2b7acb08f5cdf5b960829..f3703dc8f585ef43dd683a96d850c261ab3170b3 100644 --- a/civicrm/xml/schema/Core/Phone.xml +++ b/civicrm/xml/schema/Core/Phone.xml @@ -146,6 +146,7 @@ <name>phone_type_id</name> <title>Phone Type</title> <type>int unsigned</type> + <export>true</export> <comment>Which type of phone does this number belongs.</comment> <pseudoconstant> <optionGroupName>phone_type</optionGroupName> diff --git a/civicrm/xml/schema/Financial/FinancialType.xml b/civicrm/xml/schema/Financial/FinancialType.xml index f5a7197155dc07f00bda6cab76715a3655a05fab..8e93b6c82ec3816d8de0c33f615835a3f043cc69 100644 --- a/civicrm/xml/schema/Financial/FinancialType.xml +++ b/civicrm/xml/schema/Financial/FinancialType.xml @@ -31,7 +31,16 @@ <headerPattern>/(finan(cial)?)?type/i</headerPattern> <dataPattern>/donation|member|campaign/i</dataPattern> <comment>Financial Type Name.</comment> + <html> + <type>Text</type> + <label>Name</label> + </html> <add>1.3</add> + <pseudoconstant> + <table>civicrm_financial_type</table> + <keyColumn>id</keyColumn> + <labelColumn>name</labelColumn> + </pseudoconstant> </field> <field> <name>accounting_code</name> @@ -46,6 +55,12 @@ <field> <name>description</name> <type>varchar</type> + <html> + <type>TextArea</type> + <rows>6</rows> + <cols>50</cols> + <label>Description</label> + </html> <length>255</length> <comment>Financial Type Description.</comment> <add>1.3</add> @@ -58,6 +73,10 @@ <default>1</default> <comment>Is this financial type tax-deductible? If true, contributions of this type may be fully OR partially deductible - non-deductible amount is stored in the Contribution record.</comment> <add>1.3</add> + <html> + <type>CheckBox</type> + <label>Tax-Deductible?</label> + </html> </field> <field> <name>is_reserved</name> @@ -66,6 +85,10 @@ <length>4</length> <comment>Is this a predefined system object?</comment> <add>1.3</add> + <html> + <type>CheckBox</type> + <label>Reserved?</label> + </html> </field> <field> <name>is_active</name> @@ -74,6 +97,10 @@ <length>4</length> <comment>Is this property active?</comment> <add>1.3</add> + <html> + <type>CheckBox</type> + <label>Enabled?</label> + </html> </field> <index> <name>UI_id</name> diff --git a/civicrm/xml/schema/Member/MembershipType.xml b/civicrm/xml/schema/Member/MembershipType.xml index 0286b74680659a91c4fb6ca94ee9300b4baa306a..a71afd51a7fa530b8eb6d29bcb535b690fe503d4 100644 --- a/civicrm/xml/schema/Member/MembershipType.xml +++ b/civicrm/xml/schema/Member/MembershipType.xml @@ -271,6 +271,9 @@ <name>auto_renew</name> <type>boolean</type> <default>0</default> + <html> + <type>Radio</type> + </html> <pseudoconstant> <callback>CRM_Core_SelectValues::memberAutoRenew</callback> </pseudoconstant> diff --git a/civicrm/xml/templates/civicrm_data.tpl b/civicrm/xml/templates/civicrm_data.tpl index d101300576df8f1dc49ba5fac9ac2b21b522ee65..d20de95e1c7afe1296bd37ad551e122984f4a039 100644 --- a/civicrm/xml/templates/civicrm_data.tpl +++ b/civicrm/xml/templates/civicrm_data.tpl @@ -212,7 +212,7 @@ VALUES ('wysiwyg_presets' , '{ts escape="sql"}WYSIWYG Editor Presets{/ts}' , NULL, 1, 1, 0), ('relative_date_filters' , '{ts escape="sql"}Relative Date Filters{/ts}' , NULL, 1, 1, 0), ('pledge_status' , '{ts escape="sql"}Pledge Status{/ts}' , NULL, 1, 1, 1), - ('environment' , '{ts escape="sql"}Environment{/ts}' , NULL, 0, 1, 0); + ('environment' , '{ts escape="sql"}Environment{/ts}' , NULL, 1, 1, 0); SELECT @option_group_id_pcm := max(id) from civicrm_option_group where name = 'preferred_communication_method'; SELECT @option_group_id_act := max(id) from civicrm_option_group where name = 'activity_type'; diff --git a/civicrm/xml/templates/civicrm_navigation.tpl b/civicrm/xml/templates/civicrm_navigation.tpl index 897c8213b04e896b9dd7e4425d22b67cc503f625..f20332bf3852ec01827ec5173ae5abd50d8bc71b 100644 --- a/civicrm/xml/templates/civicrm_navigation.tpl +++ b/civicrm/xml/templates/civicrm_navigation.tpl @@ -322,7 +322,7 @@ VALUES INSERT INTO civicrm_navigation ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) VALUES - ( @domainID, NULL, '{ts escape="sql" skip="true"}Dropdown Options{/ts}', 'Dropdown Options', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 8 ); + ( @domainID, 'civicrm/admin/options?action=browse&reset=1', '{ts escape="sql" skip="true"}Dropdown Options{/ts}', 'Dropdown Options', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 8 ); SET @optionListlastID:=LAST_INSERT_ID(); INSERT INTO civicrm_navigation diff --git a/civicrm/xml/templates/dao.tpl b/civicrm/xml/templates/dao.tpl index 9c39ce74086c00c4ac8d26f9fdcdc19e5c25d1f0..9e4c4f4c5960a54ed79acfbf5a4de8de33ac791f 100644 --- a/civicrm/xml/templates/dao.tpl +++ b/civicrm/xml/templates/dao.tpl @@ -131,7 +131,7 @@ class {$table.className} extends CRM_Core_DAO {ldelim} {if $field.rule} 'rule' => '{$field.rule}', {/if} {* field.rule *} -{if $field.default} +{if $field.default || $field.default === '0'} 'default' => '{if ($field.default[0]=="'" or $field.default[0]=='"')}{$field.default|substring:1:-1}{else}{$field.default}{/if}', {/if} {* field.default *} 'table_name' => '{$table.name}', diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml index b760ae838d19eb2a81bf4e1821046638ec8aa61a..adf102648514b63c351529a43bc19bdf426da816 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.4.0</version_no> + <version_no>5.5.1</version_no> </version> diff --git a/includes/civicrm.basepage.php b/includes/civicrm.basepage.php index a9d0b525de7e13ca8126f7be8855440f54b09247..78762ba06897e5761d75fa3d10d172dc7e4a64cb 100644 --- a/includes/civicrm.basepage.php +++ b/includes/civicrm.basepage.php @@ -1,7 +1,7 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/includes/civicrm.shortcodes.modal.php b/includes/civicrm.shortcodes.modal.php index 6f249e1e308df5f587beeac0af5a4a4b6986d3bf..d606a8a0b44239a22832b34bcd555614af289821 100644 --- a/includes/civicrm.shortcodes.modal.php +++ b/includes/civicrm.shortcodes.modal.php @@ -1,7 +1,7 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/includes/civicrm.shortcodes.php b/includes/civicrm.shortcodes.php index 26e1b163cb8fbde7e6a37a4d97709e0a89759d77..833a6dec487311dafb5e08fdf4a79cd84f98f422 100644 --- a/includes/civicrm.shortcodes.php +++ b/includes/civicrm.shortcodes.php @@ -1,7 +1,7 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/includes/civicrm.users.php b/includes/civicrm.users.php index 800b8888eb01839c2dc2965d7e6a2aaad8310a3b..6c387d781854f30d9d303b138aad41297e22f7f0 100644 --- a/includes/civicrm.users.php +++ b/includes/civicrm.users.php @@ -1,7 +1,7 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/languages/civicrm.pot b/languages/civicrm.pot index 4e28eef65405b16e03f54f0622b165384f5ecd81..22349420e72fdbd042457fe592b7f43a0bd1c8a6 100644 --- a/languages/civicrm.pot +++ b/languages/civicrm.pot @@ -2,7 +2,7 @@ # This file is distributed under the same license as the CiviCRM package. msgid "" msgstr "" -"Project-Id-Version: CiviCRM 5\n" +"Project-Id-Version: CiviCRM 4.6\n" "Report-Msgid-Bugs-To: http://wordpress.org/tag/civicrm\n" "POT-Creation-Date: 2014-11-11 09:48:56+00:00\n" "MIME-Version: 1.0\n" diff --git a/uninstall.php b/uninstall.php index c73696a982a1d2e246e227c3ad4a7149e04f172c..7579c21f7061c9182f0ba4514ed42b6616ef6b16 100644 --- a/uninstall.php +++ b/uninstall.php @@ -2,7 +2,7 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/wp-cli/civicrm.php b/wp-cli/civicrm.php index 3163678470113be44df9f8795d4c318126f56ea1..a3c35c5521f2c23fde240fb128b5fa8f81ee92d5 100644 --- a/wp-cli/civicrm.php +++ b/wp-cli/civicrm.php @@ -2,7 +2,7 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+